导读:
5.3
等级2指令详述
5.3.1
强制多点线圈 (FC 15)
请求
Byte 0: FC = 0F (16进制)
Byte 1-2: 参考数值
Byte 3-4: 比特数 (1-800)
Byte 5: 字节数 (B = (比特数 + 7)/8)
Byte 6-(B+5): 写入的数据 (最小意义位 = 第一个线圈)
响应
Byte 0: FC = 0F (16进制)
Byte 1-2: 参考数值
Byte 3-4: 比特数
异常
Byte 0: FC = 8F (16进制)
Byte 1: 异常代码 = 01 or 02
示例
当参考值为0(在Modicon 984中为00001)时给3线圈写入值0,0,1
0F 00 00 00 03 01 04 => 0F 00 00 00 03
注意到返回的数据的格式和big-endian 体系结构不同。而且此请求如果调用乘法指令字且这些指令不以16位为界排列,那么该请求将在从站得到计算强化。
5.3.2
读一般参考值 (FC 20)
请求
Byte 0: FC = 14 (16进制)
Byte 1: 请求余项的字节数 (=7 x 组数)
Byte 2: 第一组的参考值类型 = 适合于 6xxxx 扩展寄存外存储器的06
Byte 3-6: 第一组的参考数值
= 适于 6xxxx 外存储器的存储器偏移量
= 适于 4xxxx 寄存器的32位参考数值
Byte 7-8: 第一组的指令
Bytes 9-15: (至于2-8字节,适于第二组)
. . .
响应
Byte 0: FC = 14 (16进制)
Byte 1: 响应的全部字节数
(=组数+ 组的总的字节数)
Byte 2: 第一组的字节数 (B1=1 + (2 x 指令数))
Byte 3: 第一组的参考类型
Byte 4-(B1+2): 第一组的寄存器值
Byte (B1+3): 第二组的字节数 (B2=1 + (2 x 指令数))
Byte (B1+4): 第二组的参考类型
Byte (B1+5)-(B1+B2+2): 第二组的寄存器值
. . .
异常
Byte 0: FC = 94 (16进制)
Byte 1: 异常代码 = 01 或 02或03或04
示例
参考值为1时读1扩展寄存器: 2 (在 Modicon 984中外存储器1偏移量2)得到 16进制值1234
14 07 06 00 01 00 02 00 01 => 14 04 03 06 12 34
(将来)
参考值0时读1寄存器返回16进制值1234,参考值5时读2寄存器返回16进制值5678和9abc。
14 0E 04 00 00 00 00 00 01 04 00 00 00 05 00 02 => 14 0A 03 04 12 34 05 04 56 78 9A BC
注意传输尺寸限制很难用数学公式精确定义。概括说来,由于缓冲的大小的限制以及考虑到每个请求和响应数据帧的总长度请求和响应的消息尺寸均限于256个字节。如果从站由于响应太大而拒绝发送此消息将产生异常类型04。
5.3.3
写一般参考值(FC 21)
请求
Byte 0: FC = 15 (16进制)
Byte 1: 请求余额的字节数
Byte 2: 第一组的参考值类型= 6xxxx 扩展寄存器存储器的06
Byte 3-6: 第一组的参考数值
= 适于 6xxxx 外存储器的存储器偏移量
= 用于 4xxxx 寄存器的32 位的参考数值
Byte 7-8: 第一组的指令数 (W1)
Byte 9-(8 + 2 x W1): 第一组的寄存器数据
(从字节2开始为其它组复制组的数据帧)
. . .
响应
响应是对询问的直接回应
Byte 0: FC = 15 (16进制)
Byte 1: 请求余额的字节数
Byte 2: 第一组的参考值类型 = 6xxxx 扩展寄存器存储器的06
Byte 3-6: 第一组的参考数值
= 6xxxx 外存储器的存储器偏移量
=用于 4xxxx 寄存器的32 位的参考数值
Byte 7-8: 第一组的指令数 (W1)
Byte 9-(8 + 2 x W1): 第一组的寄存器数据
(从字节2开始为其它组复制组的数据帧)
. . .
异常
Byte 0: FC = 95 (16进制)
Byte 1: 异常代码= 01 或 02或03或04
示例
参考值为1时写1扩展寄存器: 2 (在 Modicon 984中外存储器1偏移量2)得到 16进制值1234
15 09 06 00 01 00 02 00 01 12 34
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)