通过智能网关实现ModbusTCP协议方式,读写AB罗克韦尔Compact、Control系列PLC的标签,以下是配置步骤:
首先,打开参数管理软件设置网络参数,包括PLC的IP地址、网关自身的IP地址等,具体参照这篇文章,然后配置Modbus地址与PLC标签的对应表,如下图:
根据上图中的配置,Modbus的5位地址寻址方式如下:
DQ00000: TB[0], DQ00001: TB[1], DQ00002: TB[2]......
HR10000: TINT[0], HR10001: TINT[1], HR10002: TINT[2]......
HR11000: MainProgram.pgarr[0], HR11001: MainProgram.pgarr[1], HR11002: MainProgram.pgarr[2]......
HR20000: TEST;
HR21000: MainProgram.pgtest;
Modbus的6位地址寻址方式如下:
000001: TB[0], 000002: TB[1], 000003: TB[2]......
410001: TINT[0], 410002: TINT[1], 410003: TINT[2]......
411001: MainProgram.pgarr[0], 411002: MainProgram.pgarr[1], 411003: MainProgram.pgarr[2]......
420001: TEST;
421001: MainProgram.pgtest;
具体可参照以下说明进行设置:
Modbus地址区域:有4个选项可选择,每个区域可分配65535个通讯地址,设置范围1-65535,具体如下:
1.DQ_输出信号(0x):上位机可以读写的BOOL信号区域,一般分配PLC的输出信号、中间继电器等需要读写的位变量;
2.DI_输入信号(1x):上位机只读的BOOL信号区域,一般分配PLC的输入信号区域、中间继电器区域等只用读的位变量;
3.IR_输入寄存器(3x):上位机只读的16位数据区域,一般分配PLC的特殊寄存器区域等只用读取的数据;
4.HR_保持寄存器(4x):上位机可以读写的16位数据区域,可分配PLC的常规数据区域;
读写方式与指令:上位机操作该区域可用的指令,该列数据会自动分配不用设置;
Modbus起始地址:输入一个起始地址,范围1-65535,用该地址对应到后面的变量,或者数组的起始地址;
PLC地址区域:选择PLC的数据区域,包括控制器变量、数组,程序变量、数组;
DB/文件/标签:输入PLC的变量名,或者数组名,程序变量或数组要带上程序名;
数据类型:PLC的变量或数组的数据类型,根据PLC内实际的类型选择;
设置完成后,将参数下载到网关,重新启动网关后进行测试,通过参数软件的‘工具->数据读写测试’打开Modbus测试界面,下图测试的是控制器数组tarr1的批量读写:
上图中采用的是5位寻址方式,然后运行Modbus Poll软件,采用6位寻址方式,同样测试控制器数组tarr1,如下图:
PLC内的tarr1数组的实际值:
西门子、三菱、欧姆龙等PLC控制器都可以实现免编程的Modbus协议转换,相关软、硬件资料下载。