NJ+SCU42做Modbus RTU从站
实验时间:2023.2.28
硬件设备:NJ501-1300,CJ1W-SCU42
软件:Sysmac Studio,Commix串口调试助手
案例简介:发送Modbus RTU命令读取NJ里的数据
1. 系统概述 264
本次实验使用Commix串口调试助手作为主站发送ModbusRTU命令读取NJ PLC的指定变量的数据。SCU42模块作为从站需要指定Coils Area、Input Registers Area、Holding Registers Area对应的地址区域(本次案例中分别指定为CIO、CIO、DM),然后通过该模块规定好的功能码进行读取。由于NJ PLC编程时使用的变量,所以还需要分配地址将变量和内存地址相关联起来。
2. 硬件接线
电脑的485口RDA-和RDB+分别和SCU42的PORT1口的RDA-和RDB+对接,模块上的2-4拨码拨到2侧表示485接线,TERM拨码拨到OFF表示不使用终端电阻。
3. 参数设置
SCU42模块参数设置
将串口设置改为User Settings,串口通信模式设置为MODBUS-RTU slave,波特率19200,停止位2 bit,无校验
Coils Area、Input Registers Area、Holding Registers Area三个区域分别指定为CIO、CIO、DM区,站号设置1
创建变量并分配地址
全局变量表中创建三个变量并分配地址,保持区的变量要勾选“保持”
Commix串口调试助手配置
将串口基本的通信参数和SCU42模块设置成一致的,再将校验设置为CRC16(Modbus RTU),然后打开串口即可
4. SCU模块支持的功能码
01 读取多个线圈(Read Coils)
02 读取多个CIO区线圈(Read Discrete Input)
03 读取多个保持寄存器(Read Holding Registers)
04 读取多个输入寄存器(Read Input Registers)
05 写入单个线圈(Write Single Coil)
06 写入单个寄存器(Write Single Register)
08 测试通信(Diagnostic)
0F 写入多个线圈(Write Multiple Coils)
10 写入多个保持寄存器(Write Multiple Registers)
5. 实验现象
① 功能码01,读取CIO 0.00-0.07线圈的状态:
命令:01 01 0000 0008 + 校验
在SysmacStudio中将coil_cio[0]-[7]数组变量赋值:
Commix发送命令:
读到的线圈状态为3F,转换为2进制11111100即为CIO 0.00-0.07线圈的状态
② 功能码02,读取CIO 0.00-0.07线圈的状态
命令:01 02 0001 0005 + 校验
在SysmacStudio中将coil_cio[0]-[7]数组变量赋值:
Commix发送命令:
读到的线圈状态为3F,转换为2进制11111100即为CIO 0.00-0.07线圈的状态。与01功能码的区别为该功能码只能读取CIO区的线圈。
③ 功能码03,读取D0-D2保持寄存器
命令:01 03 0000 0003 + 校验
在SysmacStudio中将holding_registers_dm[0]-[2]数组变量赋值:
Commix发送命令:
④ 功能码04, 读取CIO 1-3 输入寄存器
命令:01 04 0001 0003 + 校验
Commix发送命令:
⑤ 功能码05, 将CIO 0.08置位
命令:01 05 0008 FF00 + 校验
注:0000 hex表示OFF,FF00 hex表示ON
Commix发送命令:
在SysmacStudio中查看写入CIO 0.08的状态
⑥ 功能码06, 将D8写入0064hex
命令:01 06 0008 0064 + 校验
Commix发送命令:
在SysmacStudio中查看写入D8的值
⑦ 功能码08, 通信状态测试,发送什么返回什么
命令:01 08 0000 8888 + 校验
Commix发送命令:
⑧ 功能码0F, 将CIO 0.00-0.15全部置位
命令:01 0F 0000 0010 02 FFFF + 校验
Commix发送命令:
在SysmacStudio中查看CIO 0.00-0.15的状态
⑨ 功能码10, 将D0-D2地址分别复制0006hex、0007hex、0008hex
命令:01 10 0000 0003 06 0006 0007 0008 + 校验
Commix发送命令:
在SysmacStudio中查看写入D0-D2的值
注意事项:
- ModbusRTU 线圈地址,以Coils Area为CIO区为例,CIO 0.00为0开始依次往后排列,如下图: