- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MSComm控件实现ADAM4050串口通信
基于MSComm控件实现ADAM4050串口通信
摘要:在工业控制中经常用到看门狗定时器,对其进行通信则是实现工控的首要问题。该文主要介绍利用VC++6.0中的MSComm控件实现ADAM-4050的串口通信。文中详细讲解了ADAM通信需要注意的问题,并给出了实现的关键技术。
关键词:VC++;ADAM-4050;串口通信
中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)22-6386-02
ADAM-4050为研华的数字量I/O模块。ADAM-4050作为工控器带有7路数字量输入和8路数字量输出。它的数字量输出为集电极开路的晶体管开关,可由主机进行控制。还可以使用它来控制固态继电器,利用固态继电器的闭合来控制热电器、泵或其他电力设备。主机可以利用模块的数字量输入来检测行程开关、安全开关或远程数字量信号。因此常作为看门狗定时器。
1 ADAM-4050命令语法及其含义
对ADAM-4050通信的实质是通过命令来读取,修改或是存储他的数字量输入与输出的状态。只有使用正确的命令才能与其通信。以下为ADAM-4050的命令语法及其含义:
(1) % AANNTTCCFFConfiguration
描述:用来配置地址,比特率和校验和状态
语法:%AANNTTCCFF (cr)
%:分隔符
AA:(00-FF)十六进制数字,表示将要配置的模块的地址
NN:新的串口地址
TT:表示类型编码,对于ADAM4050的数字I/O模块,总是设置为“40”
CC:十六进制数字,表示比特率。03-1200bps,04-2400bps,05-4800bps,06-9600bps,07-19.2Kbps,08-38.4Kbps。
FF:一个十六进制数字对应8位的参数,表示校验和状态。通常设置为00。
返回值:!AA(cr) 如果命令有效,返回新配置的地址AA
?AA(cr)如果配置了无效参数,或是当改变Baud Rate或是checksum settings时,INIT*接线端未接地
(2) $AA6digital data in
描述: 该命令要求指定的地址AA的模块返回数字输入通道的状态和输出通道的回读值
语法: $AA6 (cr)
$:分隔符
AA:模块的地址
6:表示数字数据
返回值:! (data Output)(data Input)00(cr) 命令有效
? AA(cr)命令无效,但是AA的地址模块有回应
data Output:十六进制数字,输出通道或是继电器的回读值
data Input:十六进制数字,输出通道的值
(3) #AABB (DATA)digital data out
描述:设置一个输出通道或者是同时设置所有的输出通道的值
语法:#AABB (data) (cr)
#:分隔符
AA:设置输出值的模块的地址
BB:BB=00,表示对所有通道赋值(写值0或是1)
BB=1B,表示对单通道写值,第二个B表示通道号(取值0-7)
Data:十六进制数字(CC)
BB=00时,CC所有字符都有意义。CC所对应的二进制值就是相应的通道的值
BB=01时,第一个C=0,第二个C取0或1就是相应通道的值
返回值:(cr)命令有效并且被收到
? AA(cr)发送的是无效的命令,但是地址AA模块有回应
(4) #**Synchronized Sampling
描述:命令所有的(模拟,数字)输入模块采集输入值,并且存储在专用寄存器
语法:#**
返回值:模块无返回信息,重新得到值,对每个模块调用Read Synchronized Sampling command
(5) $AA4read synchronized Data
描述:要求地址模块返回由read synchronized sampling command 存储在寄存器的值
语法:$AA4(cr)
4:Read Synchronized command
返回值:! (status)(dataOutput)(dataInput)00(cr)
Status=1,表示synchronized sampling command后第一次被发送
Status=0,表示synchronized sampling command后至少发送了一次
(dataOutput)表示输出通道或是继电器的回读
(dataInput)表示输入通道的值
(6)
文档评论(0)