前言
前面使用485和网口与台达成功建立通讯,但是485是使用用的ASICC模式,多数情况下是使用RTU模式提升通讯效率。
下载安装台达ISPSoft软件
官网下载地址:https://downloadcenter.delta-china.com.cn/DownloadCenter?v=1&q=ISP&sort_expr=cdate&sort_dir=DESC
配置需要通过网线,使用HWCONFIG软件进行配置:
(先安装前面的commgr通讯管理软件)
下载后,如下图:
安装后,如下图:
配置之前测试
使用485测试ASCII通讯方式
使用485测试RTU通讯方式
(端口默认是ASCII方式,RTU方式会返回一个固定长度固定的数据,应该是错误检测)
使用ISPSoft软件配置台达PLC的485由ASCII转为RTU
步骤一:打开软件
步骤二:创建工程
步骤三:打开网络配置HWCONFIG
步骤四:配置COM1口等参数(ASCII改为RTU)
(若没有之前使用网线连接,会出现提示,之前是需要先网线连接到PLC的)
正在下载,提示处理中,如下图:
下载超时,是需要使用网口连接的。
步骤五:使用网线方式连接PLC
步骤六:再次下载新的配置(原先为485现在为网线IP)
步骤七:下载成功,使用485RTU进行测试
(为hex了,不是acsii了,成功)
入坑
入坑一:使用Qt的modbus485读取失败
问题
Qt的modbus全方面测试读取M、D、Y、X对应的寄存器附近几个值都为0。
解决
直接使用modbus rtu测试
是没有问题的,但是Qt返回值依然是:
其他部分在此尝试过了,总共四种类型,相关的M、D、X、Y变量都设置过类似的,全部读取成功,但是值都为0与实际不符,好像架空了一样。
论证(2021年04月25日补充)
测试单个线圈,使用libmodbus可以读出来
测试单个线圈,使用QModbus还是无法读出
测试读取寄存器,使用libmodbus可以读出
测试读取寄存器,使用QModbus可以读出
结论
Qt有些东西确实鸡肋,没必要死磕。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
2022-08-04 Qt 生成dump文件及windbg调试(进阶版)
2022-08-04 Windows下的Qt编译器 - MinGW和MSVC的区别
2022-08-04 Qt MSVC与MinGW的区别
2022-08-04 Qt 建立带有子项目的项目,以及子项目之间的调用
2021-08-04 使用C#调用C++类库
2021-08-04 C# IntPtr类型
2021-08-04 C# 调用C++ dll string类型返回