恭喜,你发布的帖子
发布于 2023-04-02 22:51:28
64楼
西门子的官方指令也是人做的,照样有缺陷,不要膜拜德国人。用自由口做个Master指令也有这样一层意思。
Master卡死无反应是客观存在的,这和指令的内部设计有关。官方指令不开源,就不知道缺陷所在,也无法修改。直接断掉Master的En就可以了,只要出错,轮询就可以继续了。Block那个参数也没蛋用,还得靠健壮的全场景策略。
习惯用Trace来监控通信程序,这是最重要的。要有迭代演化手段,程序设计的现状并不重要,重要的是按照第一性原则一直往前走。
通信的东西要开放视野,任何技术都只是局部技术,和工程师要做的项目没有必然关系。串口和以太网的各种可能玩法,都要尽量去熟悉,不要遵循教条止步。
我开源的东西里面都有,可以借鉴。
我更倾向于用结构,也就是全局设计,来解决问题,而不是依赖局部的指令。
西门子的利益在于掌控未来的以太网的高端通信格局。串口的老东西,也不是自己掌控的标准,不会花代价去多搞,也就是给大家将就用罢了。
我用UDP来传递Modbus的那个开源,可以多研究一下。还有一篇关于自建UDP可靠协议的帖子。走以太网才是项目未来,串口也就那么回事。玩上位机/第三方,都是以太网。
我把通信当作IO来对待,也是这个原因。它们就是协议化的IO。工控本质上就是玩协议。
现在看OpenHarmony是非常有前途的。这东西设计的非常好,功能被原子化为很多小单元,在通信中高速流转。文档都在码云Gitee。
我分享一些源码的目的,主要是希望帮助大家搞懂内在原理,便于自己可以动手打造自己所需的任何功能,而不是习惯性依赖现成的。
可以看看下面这个源码,比较完整,更有帮助。
【开源】Modbus设备的单FB封装和多设备平行调用的通用架构 ------ 一个温控器案例的完整项目文件
另外这个
通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码
最近重写了一版串口程序,包括帮李岩李工测试了泵的通信程序,最后发现保留通信超时定时器还是有必要的。事实上正常情况下,超时定时器是不会被触发的,往往是在一些意外的情况下,这个超时定时器有助于强行退出通信死机状态,恢复通信循环。
请填写推广理由:
分享
只看
楼主