发布于 2007-10-11 09:33:46
0楼
接收指令后计数值+1和发送命令前先把计数值+1不是一样的吗? 对于通信的影响,是不一样的. 开心的问题就出于此了. 接收完成中断里一般不要直接使能发送信息, 看看S7-200手册里的自由口通讯方面的例子,在发送信息的时候都会检测SM4.5这个标志位,意即端口空闲了才可以发送,而开心在接收完成中断里马上使能接收,可能违反了这个原则. 而在接收完成中断内先计数器+1,再发送信息, 则由于PLC执行计数器+1的指令后端口已经处于空闲了. 所以一般通讯的方式都是采取H.L所说的我一般在接收完成后是不会立即发送下一指令的,中间都有间隔.发送完成当然要立即接收.
我的习惯方法是采用顺控指令,在接收完成中断内置位一个顺控位比如S0.3,那么在一个通讯子程序内做如下处理
LSCR S0.3
LD SM4.5
CALL BCC_CAL //BCC计算,或者其他的校验
XMT VB100,0
R S0.3,1
ATCH XMTFinish,9 //允许发送完成中断
SCRE
I can do it