西门子S7通讯

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nineleafclover/article/details/85213035

在使用Github上开源的S7.net 跟西门子PLC通讯时遇到了一个问题。

在逐步调试时发现每次走到异步发送的地方之后,便阻塞在那里。

经过几天的测试,原来是因为多线程同时对同一个PLC对象操作。造成的错误。

解决方法:单独创建一个线程及消息队列,然后将需要发送的数据放入队列中。PLC连接对象只由新创建的线程调用,线程循环检测队列中的个数,如果有数据需要发送,则调用PLC对象发送。

教训:跟下位机通讯,或者说操作某一个资源,尽量只使用一个线程去操作。

猜你喜欢

转载自blog.csdn.net/nineleafclover/article/details/85213035