首页 新闻 会员 周边

C#监控PLC数据的问题

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

需求是这样。开发一个类库,该类库核心功能是能够读取、写入、订阅PLC的数据,当用户订阅了某写数据时,如果这些数据发生变化,可以通过事件形式,将变化后的数据发给谁用户。

现在做了一个版本。大概思路如下:

1.定义一个接口(比如叫IDevice),该接口包含,链接,断开,读取,写入,订阅plc数据,以及当订阅的数据发生变化后执行的DataChanged事件。

2.实现IDevice接口,比如叫ModbusTcpDevice,该类实现了IDevice。并且ModbusTcpDevice中,缓存用户订阅的数据地址和值,再开一个后台线程,一直去读取 用户订阅的数据,把读取到的数据和缓存的数据比较,同一个地址,缓存数据和当前读取的数据不一致,就把新数据记录一下(比如叫 changedValues ),然后再把缓存值更新成当前值。 最后 执行 DataChanged 事件,传入刚才记录的变化值 (changedValues )。

由此联想的问题:
当一个程序链接较少的PLC 时,应该没什么问题。 如果要链接上百个甚至更多PLC时,每一个IDevice对象都有一个后台线程去轮询,会不会导致线程池爆炸呢?或者引发其他问题。

愤怒的小辣椒的主页 愤怒的小辣椒 | 初学一级 | 园豆:192
提问于:2026-06-26 17:13
< >
分享
所有回答(1)
0

换成Task就可以 ,20万Task,只要不涉及到IO,没问题。

需要格局 | 园豆:2213 (老鸟四级) | 2026-06-27 11:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册