使用modbus协议连接禾川plc具体步骤:
使用网口连接PLC的port1或者port2,手册中有对网口1和2的网络地址说明.
网口1:192.168.188.100
网口2:192.168.88.100
端口号自己设置,一般为502。
具体说明:所有PLC的ModBus协议都是对线圈和寄存器进行操作,本文主要对禾川PLC的寄存器进行操作说明。
禾川PLC的请求报文格式中无论是MB还是MD格式地址,都需要转化成MW地址。具体是,MD/2是MW,MB*2是MW。
MW是一个16位数据,16进制位 0X 00 00格式,主要有INT、WORD
MB是一个8位数据 0X00格式,主要有Byte
MD是一个32位格式地址主要有Double Word和real。
本文主要对real进行讲解
real是一个32位浮点型数据
本文讲解的是通过串口调试助手对plc进行操作
读MD2200操作发送报文形式
发送:97 76 00 00 00 06 04 04 04 4C 00 02
具体格式如下图,MD转化为MW是1100转化为16进制是044C,读取数据个数是两个,也就是00 02。若MD2200位置值为4,
则使用指令读到的数据为:
97 76 00 00 00 07 04 04 04 00 00 40 80
04是后面有4位数据
其中40 80 00 00就是MD2200的值
这个值使用C++代码可以转化为10进制浮点数
unsigned char s[4];
float* p;
float num;
s[0] = 0x96;
s[1] = 0x41;
s[2] = 0x10;
s[3] = 0x0E;
p = (float*)s;
num = *p;
写MD2200操作发送报文形式
发送:97 76 00 00 00 06 04 10 04 4C 00 02 04 00 00 40 80
10写多个寄存器,一个寄存器是16位,但是real格式是32位,所以需要写两个寄存器。
04 4C是起始地址,00 02是写寄存器个数
04是后面数据个数
00 00 40 80就是需要发送的数据也是将高16位和低16位进行调换。