1、 M340与 TWIDO做 Data_exch通讯 .doc QCS/Helpdesk 宋玉然 2011-05-05 DATA_EXCH功能块是用于 Premium和 M340传输数据到另外一台设备。特别注意的是这个功能块支持 Modbus所有的功能码。 现将常用的 Modbus功能码列表,如下: 功能码(十进制) 十六进制 说明 01 01 读线圈 02 02 读离散量输入 03 03 读保持寄存器 04 04 读输入寄存器 05 05 写单个线圈 06 06 写单个寄存器 07 07 读异常状态 08 08 诊断 11 0B 获得事件计数器 12 0C 获得事件记录 15 0F 写多个线圈
2、 16 10 写多个寄存器 17 11 报告从站 ID 22 16 屏蔽写寄存器 23 17 读 /写多个寄存器 24 18 读 FIFO队列 DATA_EXCH用梯形图表示为 各个引脚定义 ADR为地址引脚,对于 PREMIUM系列需要使用 ADDR功能块连接 对于 M340系列需要使用 ADDM功能块连接 。 TYPE为类型引脚, 1为接受 /发送, 2为只接 受, 3为只发送。 EMIS为要发送表 RECP为接受表 GEST为交换管理表 实验一:读取 N位(功能码 01) 其中在 EMIS数组中 第一个字,低字节为功能码 01,高字节为读取位的起始位 1 第二个字,低字节为 读取位的起始
3、位 1,高字节为读取位的长度 5 第三个字,低字节为读取位 的长度 5 最后要在交换管理表的第四个字中定义这个报文字节的长度,为 1个字节的功能码, 2个字节的数据起始地址 , 2个字节的读取位 的长度,所以长度为 1+2+2=5 在 TWIDO中赋值如下: 在 RECP中第 一个字为返回码 第二个字为读取的数据 实验二:读取 N字(功能码 03) 其中在 EMIS数组中第一个字,低字节为功能码 03,高字节为读取字的起始地址 1 第二个字,低字节为读取字的起始地址 1,高字节为读取字的长度 6 第三个字,低字节为读取字的长度 6 最后要在交换管理表的第四个字中定义这个报文字节的长度,为 1个
4、字节的功能码, 2个字节的数据起始地址, 2个字节的读取字的长度,所以长度为 1+2+2=5 在 TWIDO中赋值如下 在 RECP中第一个字为返回码 第二个字开始为读取的数据 实验三:写单字(功能码 06) 其中在 EMIS数组中第一个字,低字节为功能码 06,高字节为从站要写入字的地址11 第二个字,低字节为从站要写入字的地址 11,高字节为主站写出字的地址 90 第三个字,低字节为主站写出字的地址 90 最后要在交换管理表的第四个字中定义这个报文字节的长度,为 1个字节的功能码, 2个字节的从站写入字地址, 2个字节的主站写出字地址,所以长度为1+2+2=5 在主站赋值如下 在 TWID
5、O中显示如下 实验四:写 N字 (功能码 16) 其中在 EMIS数组中第一个字,低字节为功能码 16,高字节为从站要写入字的起始地址 20 第二个字,低字节为从站要写入字的起始地址 20,高字节为要写入字的长度 3 第三个字,低字节为要写入字的长度 3,高字节为 2倍的要写入字的长度 第四个字第六个字为主站写出字,高低字节 顺序 要相互转换 最后要在交换管理表的第四个字中定义这个报文字节的长度,为 1个字节的功能码, 2个字节的从站写入字地址, 2个字节的写入字的长度, 1个 2倍的要写入字的长度, 6个字节的主站写出字,所以长度为 1+2+2+1+6=12 在主站赋值如 下 在 TWIDO中显示如下 另外注意刷新数据时,必须要把 EN引脚断开一下才可以重新读取或写入。通过实验,把交换管理表的完成位(即 GEST第一个字的最低位)放在 EN引脚前不太好使,所以最好编个令牌循环指令。把令牌放在 EN引脚前,当取得令牌时再读取或者写入。 功能码 05: