AB800 MODBUS通讯实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AB800 MODBUS通讯实例
最近单独在写Modbus和现场总线的介绍,都是一些思路性质的介绍,不涉及具体的实例,可能很多童鞋还是觉得不够具体,因为我现在不做具体的编程调试了,所以直接些实例很费劲。
参考了一些网上的和施耐德电气内部的资料,写成以下的案例,用了一些其他人的劳动成果,如果原作者在意版权问题,请联系我,我尊重您的所有权。
我的帖子里提过Modbus的功能码,常用的没几个,这里列出更多的(也不是全部):
功能码(十进制)十六进制说明
0101读线圈
0202读离散量输入
0303读保持寄存器
0404读输入寄存器
0505写单个线圈
0606写单个寄存器
0707读异常状态
0808诊断
110B获得事件计数器
120C获得事件记录
150F写多个线圈
1610写多个寄存器
1711报告从站ID
2216屏蔽写寄存器
2317读/写多个寄存器
2418读FIFO队列
DATA_EXCH功能块是用于Premium和M340传输数据到另外一台设备,这个功能块支持Modbus所有的功能码。
DATA_EXCH用梯形图表示:
各个引脚定义:
ADR为地址引脚,对于PREMIUM系列需要使用ADDR功能块连接。
对于M340系列需要使用ADDM功能块连接。
TYPE为类型引脚,1为接受/发送,2为只接受,3为只发送。
EMIS为要发送表
RECP为接受表
GEST为交换管理表
实例一:读取N位(功能码01)
其中在EMIS数组中第一个字,低字节为功能码01,高字节为读取位的起始位1
第二个字,低字节为读取位的起始位1,高字节为读取位的长度5
第三个字,低字节为读取位的长度5
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的数据起始地址,2个字节的读取位的长度,所以长度为1+2+2=5
在TWIDO中赋值如下:
在RECP中第一个字为返回码第二个字为读取的数据。