欧姆龙PLC通信协议
参考:W342--SYSMAC CS/CJ Series Communications Commands
欧姆龙通信命令可分为两类:
1:C-mode commands
只可通过串口通讯
2:FINS commands
既可通过串口通讯也可通过各类网络通信(适应性较强)
=============================================================================== 下面只讲FINS命令
一、命令发送:
FINS直连发送命令如下:
FINS command code见下表
命令后面紧跟着就是内存区域寻址,见下表
Command Code 后面紧跟着需要访问的地址,地址可分为按字地址或按位地址,取决于你需要访的的是字还是某一位。由紧跟着Command Code后面的那个字节(I/O memory area designation)区分是读取字还是读取位,还是写入字或写入位,具体定义见下表:
按字地址:选取表中Data Type列中为Word的命令(命令在Memory area code内)
按字地址的三个地址位中,只使用前两个,最后一个字节为Ascii码”00”,其后跟两个字节为需要传输的数据量,然后紧跟着就是传输的数据,数据高位在前低位在后。
例如从H12开始读取7个字的数据,
命令为:0101 B2 001200 0007
例如将W3、W4、W5分别置数据1234、ABCD、7890,
命令为:0102 B1 000300 0003 1234ABCD7890
按位地址:选取表中Data Type列中为Bit的命令(命令在Memory area code内)
按位地址的三个地址位中,前两个指示位所在的字,最后一个字节指示位在字中的位置(0~15),其后跟两个字节为需要传输的数据量,然后紧跟着就是传输的数据,每一位的值用一个字节的数据代替,当寻址的位为0时用ascii码“0”代替,当寻址的位为1时用ascii 码“1”代替。
例如读取CIO100.03~CIO100.07这5位的数据
命令为:0101 30 010003 0005
例如将CIO101.01~CIO101.07分别置位0、0、1、0、1、1、1 命令为:0102 30 010101 0007 00 00 0100 01 01 01
例如将H25.14置1
命令为:0102 32 002514 0001 01
二、命令响应
FINS response code见下表
正常情况下FINS response code返回0000,当出现问题时,请根据FINS response code查找上表检查原因
返回的数据如果是按字寻址,则按数据高位在前低位在后的原则依次返回。
返回的数据如果是按位寻址,则以每位一个字节的原则依次返回。
最后介绍FCS校验码的计算方法,计算时只计算FCS以前的所有数据,计算方法如下: