我写了一个程序是读取松下plc的寄存器的值,我用的c#2010开发的,程序发送读取寄存器的指令给plc,plc响应并返回数据给pc,不过速度较慢,如何让plc主动发送数据给pc上位机,pc程序又如何被动接收?
------解决方案--------------------
上位机被动接收
1 可以用中断方式,有的控件提供了接收数据中断事件
2 c++里面可以用一个线程来循环读取数据,c#里面貌似是用委托吧
没用过PLC,不清楚PLC可不可以主动发数据过来。
------解决方案--------------------
PLC 通信做过一些,
你发送命令给PLC让他返回,这个是不牵扯PLC程序的,你要是想让她给你返回数据还是主动的那就在程序中加吧
------解决方案--------------------
PLC那端有主从问题,如果是从机,他是不能主动发指令的。
------解决方案--------------------
看你的描述,应该是PC机发送读取寄存器的命令,PLC才会发回对应的数据给PC。
从VC# 2005开始,就有了SerialPort控件,里面有好像叫做DataReceived的事件,可以被动接受数据。
不过根据你的情况,做成查询的方式,VC#的程序更简单一些的,类似C/S一问一答的方式,发一个查询命令,然后等待数据返回。