你可以用timer控件,读的时候每500ms收发一次,写的时候终止timer,我用omron的plc实现没有问题,你可以把timer的时间尝试改小一点,这样速度更快,不过500ms够快的了,用组态软件的话可能还达不到.前些天我用s7-200手册上介绍的用自由口和pc通讯我调不出来,plc中的程序照办手册的,用vb编程,我猜是我在vb中发的命令有问题,不知楼主能否介绍以下,帮小弟一把,也请各位高手不吝赐教.
主动权在上位机,既然知PLC在每个数据串中的结束标志就可以:1. 设一个"允许发送"的全局变量,每次向PLC发送数据后,清除该变量。然后在Timer()循环中等待该标志重新出现并交出VB事件驱动控制权:DoEvents。2. 在MsComm_Click()的接收段(设每字符处理一次)接收和串接好PLC回送的每个字符,当它满足串结束条件时,重置"允许发送"标志。3. 时钟函数Timer()在给出的足够的正常时间(如3秒)中等待,这期间如"允许发送"被重置,立即跳出等待循环,转入数据分析处理。4. 等待时间到后,如未见该标志,转重发数据或作出错处理。
谢谢!VB程序接收数据是事件驱动,可是PLC里面有事件驱动设置吗?PLC程序我写的是发送空闲时便启动接收,每隔30秒便上上位机返回一个状态信息(需要实时显示工作状态,不知道这个时间设多少合适?),VB只在有按钮按下时才发送命令,现在问题可能是VB发送的时候,PLC也在发送,怎样克服这个问题呢?
楼上的各位高手,我正在调试用VC编的自由通信协议,但是在调试过程中不能很好把握数据发送的格式,还请各位不吝赐教,举一个例子行不(譬如,让V100.1置1,怎么发送数据,由于我想用V来代替I,从而达到强制I的目的)