保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

COM组件技术在现场总线控制系统组态软件中的应用


转换成对以该指针为首地址的数组的操作。向这个数组的0x3F0、0x3F1和0x3F8单元分别写入上闰机节点号以及适配器与模块间的通信波特率和适配器程序规定的命令字0xC6(表示适配器初始化),等待几十ms后,如果适配器接收到上面的数据并做出适当的反应,它会将0x3F8单元清零,这就表示初始化适配器成功;如果该单元不为零,则初始化失败。
  
  3.2数据传输格式
  
  适配器初始化成功后,就可以同它交换数据了。下而简单说明一下发送数据和接收数据的格式。
  
  适配器初始化得到的线性地址指针lpBaseAddress的1~5单元分别存放上位机节点号、模块节点号、保留字、发送或接收字节长度及模块操作的命令字。lpBaseAddress[6]~lpBaseAddress[256]存放所要发送的数据;从lpBaseAddress[0x106]单元开始存放接收到的数据,lpBaseAddress[0x3F8]存放操作适配器的命令字,适配器根据这个单元内容进行处理,如果是0xC6,则初始化适配器和模块上的CAN控制器;如果是0xC7,则将数组里的数送给模块上的E2PROM,模块收到数据后根据lpBaseAddress[5]的命令字进行相应处理;如果是0xB0,则按照接收到的数据配置模块工作状态;如果是0xA5,则将此时的测量值送到适配器上,由COM程序读出。
  
  3.3模块检查函数
  
  适配器初始化成功后,还要检查适配器与下面的测控模块
  
  
  
  是否连接好,或者是否存在组态软件要组态的模块,也就是要进行模块检查操作。模块检查的命令字是0xAD,向数组的1~5单元分别写入上位机节点号、模块节点号、保留字、发送数据长度和模块检查命令字0xAD,向0x3F8单元写入0xC7(表示向适配器写入数据),等待几十ms后,如果0x3F8单元清零而且0x100单元被置为0xAA,表示该模块存在而且可以通信;否则,表明该模块不存在或者硬件上有问题。
  
  3.4写适配器数据函数
  
  在确定了网络中存在哪些可通信的模块之后,就可以向它们发送数据并进行配置。为了实现向适配器发送数据,总共编写了4个函数、SendData([in]BYTESendBuf[256])、SendFinish([in]BOOLbFinish)、FinishQuery([out]BOOL*bFinish)和ReceiveResult([out]BOOL*bSendFinish)。SendData负责把一个模块所需要发送的数据以数组的形式放到服务器的一个二维数组(Room[64][256])里,每个模块的数据作为一行。由于向适配器发送数据后,要等待一段时间判断模块是否接收成功,所以SendFinish中开启辅助线程来发送数据并等待结果,这相可不占用COM主程序的时间,使客户调用接口函数后能立即返回,执行其它操作。FinishQuery查询数据发送是否结束。ReceiveResult弹出一个非模式对话框,显示哪些模块接收到数据,哪些没有。
  
  3.5读适配器数据函数
  
  除了向适配器发送数据,还可以从适配器上读取模块传上来的数据。读取数据的命令字是0xA5。实现该任务的函数是GetPV([in]BYTEbDesNode,[out]floatvalue[8]),第一个参数是模块节点号,第二个参数是返回的测量值数组。
  

《COM组件技术在现场总线控制系统组态软件中的应用(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/145332.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。