恭喜,你发布的帖子
发布于 2019-11-05 12:03:47
1楼
首先给你澄清几个概念。
1,modbus都对所有数据均以寄存器称谓,寄存器类型有0xxxx(线圈)、1xxxx(输入点),3xxxx(输入寄存器),4xxxx(保持寄存器)。具体寄存器里的数据是整型、浮点或其他,是另外一个问题。那是仪表厂家编码仪表数据的问题。“xxxx”前面的数字是寄存器类型的编码,xxxx才是寄存器的地址。所以你说的寄存器地址重叠的事,是不会发生的。
2,读取数据的寄存器类型及地址比较分散,可以通过一次尽可能多的读或写一个片区的方式,减少轮询的次数。但modbus报文单次读写的容量也是有限的,具体上限值与设备有关。
3,modbus读写不同寄存器一般是根据功能码来匹配的,CP341的函数也是如此。
4,CP341的FB7/8是CP341的收发函数,sample给出了不同任务的轮动,但要适合modbus不同报文的轮询还需要改造程序。注意一般串口不具备全双工的情况下,收发不能同时发生。
5,轮询程序是串口通讯中比较难的部分,可以选择modbus转DP,或modbus转PN的网关来简化工程开发工作。
请填写推广理由:
分享
只看
楼主