16
西门子代理商6ES7522-5HH00-0AB0 西门子代理商6ES7522-5HH00-0AB0
参数CONT 和EN_R 同时置位
"TRCV_C"指令输出 STATUS "7000" 。 在CONT=1和EN_R=1 同时开始建立连接,STATUS参数的值输出 "7001" 一个周期, 随后TSTATUS参数的值会为“7002”直到连接被建立。当连接被建立后,STATUS参数的值输出"1"而BUSY=1 ,指令准备接受数据。随后其他程序循环STATUS参数的值输出"7006" 且BUSY=1,直到接收任务完成。当数据被传输成功之后,输出下列数值:STATUS=0,NDR=1,BUSY=0。只要EN_R=1,指令在STATUS参数的输出就会为"7006"且BUSY=1,进入继续准备接收状态。下面的例子中图示有接收*二个消息的状态。
图. 4TRCV的特殊点
当EN_R参数被复位,TRCV_C指令会保持准备接收数据,直到数据再次开始被接收。保持STATUS输出值为"7006",且BUSY=1直到数据被成功接收,而后输出:STATUS=0,NDR=1同时BUSY=0。最后指令在STATUS的输出值"7004" 同时BUSY=0。当CONT参数被复位,指令断开连接。在断开连接的过程中,指令TRCV_C在STATUS的值为"7003" 直到连接被成功断开,此时STATUS参数输出"3" 。最后 TRCV_C在STATUS参数输出 "7000" ;这意味着当前没有任务在运行。
图. 5在同一连接使用TSEND_C和TRCV_C
如果TSEND_C和TRCV_C指令使用同一个连接ID ,两个带有控制功能的指令 (连接建立和断开)就会在一个连接被使能。如果不正确使用就会导致错误。(见图.6)指令在STATUS参数的值与单独使用指令是不同的。因为TSEND_C在TRCV_C前调用,TRCV_C指令在STATUS 参数的值会被影响。在连接建立时,TRCV_C指令不会将STATUS "7001"作为中间状态输出。此外,指令TSEND_C会在TRCV_C前输出“7004”代表连接建立。会在后一程序循环中报“7002”。只有在随后的循环中TRCV_C指令会报STATUS“1”,代表成功建立了连接。
如果CONT参数在TSEND_C或TRCV_C上被复位,即使CONT参数在另一个指令保持置位,连接还是会被断开。当对于正在进行连接断开时,TSEND_C指令在STATUS参数输出“7003”,而TRCV_C依旧会在STATUS参数输出"7004"。当连接断开后,TRCV输出错误码STATUS = 80AA,然后TRCV_C会尝试重新建立连接。
图. 6建议使用下列组合在同一连接上发送和接收数据:
TSEND_C和TRCV
TSEND和TRCV_C
创建环境
图片基于V2.0版本的TSEND_C 和TRCV_C指令的行为,通过CPU 1516-3 PN/DP和CP 1543-1测试的, 这些行为在ISO_on_TCP,TCP和UDP 协议都是相同的。