硬件配置
1. 在NAPro_V5.1中,新建或打开一个工程,双击【资源】【MODBUS/TCP主站配置】,如下图所示:
图3.41 MODBUS TCP配置选型
2. 双击,即可出现配置界面:
图3.42 MODBUS TCP参数配置界面
属性编辑注意事项
【序号】:最多可以配置64个功能码命令;
【IP地址】:所要通讯的从站IP地址,另外可在同一行内输入两个IP地址(正常情况下在冗余设备中使用),中间用英文的分号“;”隔开,例如192.168.1.66;192.168.2.66 ;
注意:是,主站与从站通讯,IP地址需要在同一网段。
【功能码】:未配置时为“无”,配置时可根据Modbus协议的功能码定义, MODBUS支持如下的功能码:
功能码(十进制) | 含 义 |
01 | 读线圈状态 |
02 | 读输入状态 |
03 | 读保持型寄存器 |
04 | 读输入型寄存器 |
05 | 强制单个线圈 |
06 | 写单个寄存器 |
15 | 强制多个线圈 |
16 | 写多个寄存器 |
【从站地址(0-255)】:这个参数是Modbus协议本身报文所必须的,但是对大多数的Modbus TCP通讯的产品来说(比如我们的NA系列CPU),没有这个参数,所以可以随便配置,都能通讯。但对于有这个参数要求的产品,必须严格按照要求配置从站地址;
【寄存器地址(0-65535)】:主站对从站的寄存器进行Modbus TCP读写操作,此处即是从站的寄存器地址,对不同的从站,寄存器地址也各不相同,需看各自从站的说明文档;
【寄存器个数(1-30000):最大值取决于从站的寄存器可访问范围,主站通过Modbus功能码进行读写操作的从站寄存器个数,寄存器个数的单位为字;
注意:05、06功能码的寄存器个数只能设置为1,这是由功能码本身的定义决定的;
【数据区】:可设置为 %M、%MW、%N、%NW、V寄存器的变量名,主站对从站进行读写操作,本身对数据的存放区域,此处为用于存放数据区域的起始地址;
【扫查模式】:
1.周期:周期性的发送这封功能码命令,周期范围1-36000,最小单位为100ms,即此处设置为1,就代表周期设置为100ms,推荐设置的值为10,即1s;
2.位控:使用控制位来控制这封命令的发送,控制位范围%M1-%M2048, 通过设置%M位控寄存器,来根据需要控制读写指令的发送时间,M点0-1跳变时,命令发送一次,发送成功后自动清零。
例如控制位设置为2,也就是通过%M2来控制写操作,%M2置1后,将数据区的值写入到寄存器,然后%M2自动恢复到0。
【通信标志位】:%S0145-%S0208对应1-64个序号功能码的读写状态,1表示通信故障,0正常。
使用案例
1. 新建工程,选择PLC类型为NA200H,CPU类型为CPU401-1101,模块的Modbus TCP配置如下,aa为V变量名:
2. 可以知道主站与两个从站的IP地址在同一网段192.168.4.1 。
3. 先看序号1的03功能码,读取IP地址为192.168.4.158从站设备(此处我连接的是CPU401-0201),向从站的寄存器地址0开始连续读取10个(读取从站的%MW1-%MW10),存放在主站(也就是配置的RTU模块)的%NW1及其之后的数据区(%NW1-%NW10)中,扫查周期为1s 。
下图即为从站的%MW区数值,以及主站读到的存放数据区%NW的值:
4. 再看序号2的05功能码,向IP地址为192.168.4.170的从站设备写入(此处我连接的是CPU401-0301),被写入的寄存器地址为20000(也即%N1),待写入的值存放在主站的变量区aa中(aa[0]),写入的控制位为%M5。
先将主站的变量aa[0]的值置1:
此时可观察到从站的%N1值未变化,也即未写入:
再将主站的%M5置1后,它会自己回复到0状态,此时从站%Q1值被写为1:
将aa[0]的值改为0时,%N1也未变化,还是为1:
再置主站的%M1为1后,%N1才会被写成0状态: