欧姆龙CP1H与台达变频器Modbus RTU通讯实战
2026/6/10 5:44:02 网站建设 项目流程

欧姆龙cp1h与台达变频器modbus rtu通讯程序。 程序有注释。 控制正反转、状态显示、写入频率和读取频率、电压,plc型号为cp1h-xa40dt-d,触摸屏为威纶通mt8071ie,变频器为台达vfd-m,实价

最近在工控项目里整了个活——用欧姆龙CP1H-XA40DT-D通过Modbus RTU控制台达VFD-M变频器。折腾了两天终于跑通了,分享点干货给兄弟们避坑。

硬件接线别翻车

CP1H的RS485口在自带端子排上(SDA、SDA-、RDA、RDA-),台达变频器的Modbus端子是+/-标注。这里有个细节:终端电阻记得在最后一台设备上加,屏蔽层接地要可靠。之前因为屏蔽层虚接导致通讯时好时坏,查了仨钟头才揪出来。

// PLC串口初始化 MOV #0000 D8126 // 设置通讯格式:9600,8,E,1 STUP #0 // 启动端口0

这段代码往D8126寄存器写通讯参数。注意CP1H的串口配置必须和变频器参数P00(通讯地址)、P01(波特率)、P02(通讯格式)完全一致,否则连个寂寞。

正反转控制

台达VFD-M的正反转命令地址是2000H(十进制8192)。功能码06写单个寄存器:

// 正转命令 TXD #0 DM100 // 发送缓冲区首地址 #8 // 发送字节数 DM200 // 接收缓冲区 #100 // 超时时间

发送缓冲区DM100开始的数据结构:

01 06 20 00 00 01 XX XX // XX为CRC校验码

其中01是站号,06是功能码,2000拆分为两个字节,0001表示正转。反转时改成0002,停止0005。这里有个坑:台达的寄存器地址要减1换算,比如2000H实际填20 00而不是20 01。

频率设定骚操作

频率写入地址2001H,但要注意数据格式。比如要设定30.00Hz:

MOV #3000 D201 // 频率值放大100倍

发送帧示例:

01 06 20 01 0B B8 XX XX // 0BB8十六进制转十进制即3000

这里有个细节:CP1H的浮点数和Modbus整型转换需要处理,建议在触摸屏端做缩放,避免PLC做浮点运算拖慢速度。

状态读取三连击

状态读取用功能码03,连续读三个寄存器:

// 读取运行状态、频率、电压 TXD #0 DM300 // 发送缓冲区 #8 DM400 // 接收区 #100

请求帧:

01 03 20 02 00 03 XX XX // 读取2002H开始的3个寄存器

返回数据解析:

  • 2002H:运行状态(位0=正转,位1=反转)
  • 2003H:输出频率(单位0.01Hz)
  • 200CH:直流电压(单位0.1V)
// 电压值处理 MOV DM405 D211 // 读取电压原始值 DIV D211 #10 // 转换为实际电压值

触摸屏组态要点

威纶通MT8071IE这边要注意:

  1. 寄存器类型选D(DM区)
  2. 频率设定用D201寄存器,数据类型选16bit无符号
  3. 运行状态用D205的位状态元件
  4. 电压显示元件设置小数位数1位

调试时建议先关掉触摸屏,用PLC程序单独测试通讯。曾经有个兄弟因为触摸屏频繁读写导致通讯冲突,硬是换了轮询机制才解决。

最后提醒:台达变频器的Modbus响应有30ms左右延迟,程序里超时时间别设太短。遇到通讯失败先抓包,串口调试助手比PLC在线监控更直观。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询