欧姆龙NJ控制器通过Modbus RTU与变频器通信

硬件设备: nj301-1100( plc), nx-ecc201( ethercat耦合器), nx-cif105( nx
系列422/485模块), 3g3mx2-ab002-zv1
软件: sysmac studio
案例简介: 使用nx_modbusrtucmd指令对变频器读写。
1. 系统概述,硬件搭建和接线
nx-cif105 的 485 管脚如下图所示:
nx-cif105 与 3g3mx2 的接线如图所示:
如果从站有终端电阻,把 a3 b3 短接即可,本例 3g3mx2 默认无终端电阻不需要短接。
2. 操作步骤
① 软件设置
nj 通过 ethercat 口连接 nx-ecc201,节点号 8。
ecc201 后面直接带 nx-cif105 模块。
双击软件中 cif105 模块图标,进行设置:
event level 为发生报错的反应,无需改动默认即可; event4 下面从上往下依次为:缓存允许,波特率, 422/485 切换, 8 位数据位,奇偶校验为无校验,停止位 1 位,流控功能关闭,收发允许,接受最大数据缓存为 1000*0.1=100 个字节。缓存一定要有否则 modbus 从站不能正常反馈。
② 变频器设置
a001 a002 设为 03,其他默认,从站站号为 1, nj 侧与变频器的通讯格式一致即可。
③ 程序编程
用 modbus 指令时会用到 cif105 的端口 在 io 映射里面右键 cif105 模块,选择显示
节点位置端口:
创建设备变量:
nx_modbusrtucmd 指令说明:
相关变量说明和数据类型说明:
a. deviceport——本案例中,设置 abc 为 deviceport 的结构体变量。
“ devicetype”变量指定设备种类。用 nx-cif 单元要设定为_devicenxunit。
“ nxunit”用之前 io 映射中创建的节点位置信息变量放入即可。
“ ecatslave”、“ optboard”可以不使用。
“ portno”指定端口编号: 1 代表端口 1; 2 代表端口 2。本案例中用端口 1。
st 语言编程直接赋值如下图所示:
b. slaveadr——本案例中在 def 变量中设置从站站号,这里设置站号为 1。
3. 现象和结论
①写变频器频率: cmddat 里的命令数据依次为 06 00 01 0f a0, cmdsize 设为 5 个
字节, 代表写变频器频率 40hz。
respdat 里的反馈数据依次为 06 00 01 0f a0,代表通讯成功。
②控制变频器运行: cmddat 里的命令数据依次为 05 00 00 ff 00, cmdsize 设为 5
个字节,导通指令后,变频器运行灯亮,同时在 respdat 看到反馈, 代表通讯成功。
4.注意事项
指令报错代码如下:
1. 0400, 0407: 变量范围超出,比如字节数没写或者过大就会报 0400 或 0407
2. 0c0b:从站无法识别,检查接线设置, devicetype 端口指定
3. 0c0c:一般为从站不支持功能码或者报文格式不正确
4. 其他报错优先检查接线设置即可