1.环境
C# 编写上位机程序与三菱PLC FX3U通讯
232串口连接 modbus协议
我要实时监听PLC的所有寄存器数据
2.纠结的问题
但是PLC的 16位寄存器大概9000个 也就是 18000byte = 17.6KB
如果按9600(每秒传输9600个bit)波特率计算
就是每秒传输 = 9600 /8 = 1200byte 约= 1.2KB 那么一次完整的数据传输就要 14.6秒
这个只是草算 还没有计算 多个数据读取指令的间隔 如果加上的话就更长了。
3. 现有的比较好的现象
PLC的编程软件(GXDlveloper)监听寄存器的状态 实时性还是很高的,起码在3秒内吧
我该怎么办 有没有解决办法啊?
我只有这点豆了 全部拿出来了 望有经验人士指点一下 不胜感激
我是想说 应该是我的想法有问题 或者说我说的实现方式不对
我第三点就列出了现有成功的案例。 而且也是用的串口
modbus主从协议本来实时性就不高~也没有事件通知机制
建议联系厂家提供对应开发包或者换其他协议开发。
通讯协议就是这么慢你有什么办法.
提高波特率三。
顺便提示一下按照除8的计算是不正确的,我们估略算粗值都用10。
@花飘水流兮: 谢谢告知, 我在想如果按我的计算的话 时间太长了 但实际可能并不是我这么做的
不要让上位机一个个去读,会很慢的,三菱plc每次用串口去读都得延时几十毫秒,那得读到什么时候,你可以在plc里定时将所有状态通过某种算法合成一个数值存到某个地址里面,这样上位机每次只去读取一个地址的值,读出来在解析,这样速度就快多了,这样就可以解决通信的瓶颈了,因为我之前用C#写过plc通信程序,有点点体会