sanv 发表于 2024-9-24 16:55:37

485总线上有多个设备,用什么编程思路比较好

485总线上挂路5个设备,其中3个设备的通讯协议不同,采用什么样的编程思路比较好?这里是否可以考虑采用面向对象的方式去编程。485总线属于半双工总线,一次只能读写一个设备。从节点设备有时候需要不停的查询状态。大家有没有好的编程思路交流一下。

lyping1987 发表于 2024-9-24 17:16:19

状态机+轮询。

sanv 发表于 2024-9-24 17:20:50

lyping1987 发表于 2024-9-24 17:16
状态机+轮询。
(引用自2楼)

状态机加轮询是不是会很耗时?当设备多,有需要实时查询从机状态是不是不够用?

dukelec 发表于 2024-9-24 17:32:05

做个小转接器靠近设备,把所有设备转成相同的协议再挂到总线
另外,想打破只能轮询的限制,可以了解一下:
https://www.amobbs.com/thread-5782436-1-1.html

lyping1987 发表于 2024-9-24 18:00:42

sanv 发表于 2024-9-24 17:20
状态机加轮询是不是会很耗时?当设备多,有需要实时查询从机状态是不是不够用?
...
(引用自3楼)

半双工,只能有一个主机主动发起。

所以如果实在要提速,就把数据和从机区别对待,那些数据更新慢,那些更新快。。轮询+事件(优先级)的方式我想是极限了。

lb0857 发表于 2024-9-24 21:04:19

状态机
舍我其谁😆

himan 发表于 2024-9-24 23:55:52

嫌慢那就波特率,通信频率提上来呀
2.5M 总比9600快了吧
还嫌慢那就考虑为什么用485了,选了485就不要嫌慢

mypear 发表于 2024-9-25 09:03:58

呃,做电、水表采集就是这样,一个是电表协议(有07,97,modbus-rtu),水表188协议。定电水表类型,那个类型就发那个数据格式。从设点只收自己格式数据再回复就行

饭桶 发表于 2024-9-25 09:12:37

按自己多年经验,就这几个设备按协议轮询即可,简单可靠。

初音之恋 发表于 2024-9-25 09:27:04

就是面向对象,C语言的话每个子设备作为一个结构体并标记好类型和地址,如果只有轮询的话就调用读取函数判断类型就行,复杂点的就结构体里面带状态机标志,反正函数调用结构体指针就行了

陆小凤之北京 发表于 6 天前

重要的更新快的数据设定成小周期,或者全部按照数据更新周期来轮询。用最高的速率。
页: [1]
查看完整版本: 485总线上有多个设备,用什么编程思路比较好