首页 新闻 会员 周边

C# 232串口监听PLC所有数据 效率问题

0
悬赏园豆:20 [待解决问题]

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秒内吧

我该怎么办  有没有解决办法啊?

我只有这点豆了 全部拿出来了 望有经验人士指点一下 不胜感激

问题补充:

我是想说 应该是我的想法有问题  或者说我说的实现方式不对

我第三点就列出了现有成功的案例。 而且也是用的串口

丶被遗忘者的主页 丶被遗忘者 | 初学一级 | 园豆:18
提问于:2017-08-07 15:53
< >
分享
所有回答(4)
0

modbus主从协议本来实时性就不高~也没有事件通知机制

建议联系厂家提供对应开发包或者换其他协议开发。

hahanonym | 园豆:1460 (小虾三级) | 2017-08-07 16:35
0

通讯协议就是这么慢你有什么办法.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-07 17:37
0

提高波特率三。

花飘水流兮 | 园豆:13577 (专家六级) | 2017-08-08 09:39

 顺便提示一下按照除8的计算是不正确的,我们估略算粗值都用10。

支持(0) 反对(0) 花飘水流兮 | 园豆:13577 (专家六级) | 2017-08-08 11:48

@花飘水流兮:  谢谢告知, 我在想如果按我的计算的话 时间太长了 但实际可能并不是我这么做的 

支持(0) 反对(0) 丶被遗忘者 | 园豆:18 (初学一级) | 2017-08-08 12:43
0

不要让上位机一个个去读,会很慢的,三菱plc每次用串口去读都得延时几十毫秒,那得读到什么时候,你可以在plc里定时将所有状态通过某种算法合成一个数值存到某个地址里面,这样上位机每次只去读取一个地址的值,读出来在解析,这样速度就快多了,这样就可以解决通信的瓶颈了,因为我之前用C#写过plc通信程序,有点点体会

jqw2009 | 园豆:2439 (老鸟四级) | 2017-08-22 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册