河南省住房和城乡建设厅网站文件,wordpress主题首页主体,房地产中介网站,计算机网站开发项目威纶通触摸屏与两台台达变频器modbus rtu通讯程序。 触摸屏为mt6103ip#xff0c;变频器为VFD-M#xff0c;用的在线模拟#xff0c;真实触摸屏只需修改com口最近在调试威纶通触摸屏和台达VFD-M变频器的Modbus通讯#xff0c;发现这玩意儿真得跟谈恋爱似的——参数对不上就…威纶通触摸屏与两台台达变频器modbus rtu通讯程序。 触摸屏为mt6103ip变频器为VFD-M用的在线模拟真实触摸屏只需修改com口最近在调试威纶通触摸屏和台达VFD-M变频器的Modbus通讯发现这玩意儿真得跟谈恋爱似的——参数对不上就给你甩脸子。咱们直接上干货先说硬件接线MT6103IP的COM2口RS485接变频器的RS485端子注意A、B-别接反了否则数据包全丢黑洞里。通讯参数必须三家统一触摸屏、变频器、程序建议设置9600波特率 | 8数据位 | 1停止位 | 无校验台达变频器这边要设置几个关键参数02-0003频率指令由RS485设定 02-0103运转指令由RS485控制 09-0003Modbus RTU模式触摸屏配置有个坑要注意在EasyBuilder Pro里设备属性里的站号要和变频器参数09-01对应比如设置站号1时09-01要设成01H。这里贴个关键代码段-- 读取运行频率 local slaveID 1 local startAddr 40001 -- 对应变频器参数00-01 local dataLen 1 local result mb_read(slaveID, startAddr, dataLen, 3) -- 功能码03 if result then set_value(Frequency, result[1]/100) -- 频率值有两位小数 else alarm(通讯超时) end解释下这个40001的玄机Modbus地址在协议里是从1开始的但实际应用中很多设备会显示为4xxxx的保持寄存器地址。这里有个转换公式实际寄存器地址Modbus地址-40001。比如要读取参数00-01基频对应实际地址是0000H那填40001就对了。威纶通触摸屏与两台台达变频器modbus rtu通讯程序。 触摸屏为mt6103ip变频器为VFD-M用的在线模拟真实触摸屏只需修改com口控制变频器启停的代码更有意思-- 启动命令 local runCmd {0x01, 0x06, 0x20, 0x00, 0x00, 0x01} local crc calculateCRC(runCmd) sendBytes(runCmd, crc)这里用到了功能码06单个寄存器写入。0x2000是台达的运行命令地址01表示正转启动。注意CRC校验必须正确建议用这个算法uint16_t crc16(uint8_t *data, int length) { uint16_t crc 0xFFFF; for(int i0; ilength; i) { crc ^ data[i]; for(int j0; j8; j) { if(crc 0x0001) crc (crc 1) ^ 0xA001; else crc 1; } } return crc; }在线模拟时记得在系统参数里勾选启用虚拟串口。实际硬件调试时遇到过最坑爹的问题是触摸屏的RS485芯片驱动能力不足接两台变频器时信号衰减后来在AB线上各挂了120Ω电阻才稳定。有个骚操作分享在触摸屏画面上做个通讯质量指示器通过定时读取特定寄存器的响应时间来判断信号强度。超过500ms自动切换为红色报警实测能提前发现90%的物理层故障。最后提醒台达变频器的参数写入需要发两次完全相同的指令才会生效这不是程序bug是人家防误操作的设计。遇到写参数不成功时别急着砸屏多按一次确认键试试。