西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令
本期说一下,不同项目下的,连个西门子1200的TCP通讯,这次我们用TSEND_C和TRCV_C组合使用,这次先了解下TSEND_C指令是大概啥样的
1.0 从右边指令栏--通信--开放式用户通讯--其他,选择TSEND_C拖动到程序1中,如下图
2.0 下面说下具体这个指令块的参数设置
REQ:指的是上升沿触发,发送作业,跟建立通讯无关,这个就是跟之前TSEND的区别!
ID:是指向已分配连接的指向
CONT:当为0时断开通信连接,当为1时建立并保持通讯连接
LEN:需要发送的最大字节长度,如果这个值设为0就会发送DATA指定的所有数据,如果LEN的值大于DATA定义的待发送数据的长度,比如DATA里面设定数据长度10个字节,LEN就不能大于10,不然指令参数STATUS会输出错误代码8088,当数据块是优化访问权限的结构化变量时,LEN=0,可传送最大字节数65534
DATA:指向发送区的指针,该发送区包含要发送数据的地址和长度,传送结构时,发送端和接收端的结构必须相同,这边要特别说明下指针,如下图,我们的指针是这样写的P#DB2.DBX0.0 BYTE 10,这句话的意思是指针指向DB2数据块,从DB块地址0.0开始的10个字节的数据,这样发送区就包含了数据的地址DB2的地址0.0,数据的长度10个字节,当头那个P指的是ANY数据类型的表示方式,ANY数据类型实际是80位指针类型数据
DONE:状态参数,为0时作业未启动或扔在执行,为1时作业已执行,且无任何错误,完成后会自动复位,需要自己锁存状态,来判断连接情况
BUSY:状态参数,为0时作业未启动或已完成,为1时作业执行中,无法开始新作业
ERROR;错误参数,为0时无错误,为1时有错误报警
注意:TSEND是异步执行的,所有需要在参数DONE或者参数ERROR的值变为1之前,发送区的数据要保持一致不要改动
STATUS:指令的状态
这里在说下一个检查连接的指令T_DIAG,这个是通过ID来检测通讯连接情况,如下图,这里先简单说下,后面测试的时候再试试,参数大多数都差不多,这里就说一个参数
如下图,RESULT这个参数是用来存储连接状态的,
这个参数要用特定的系统数据参数结构,TDiag_StatusExt和TDiag_Status,T_DIAG: 检查连接 (S7-1200, S7-1500),
TDiag_Status”结构只包含有关连接端点的最重要信息,例如,使用的协议、连接状态和发送或接收的数据字节数。
“TDiag_StatusExt”结构不仅提供最重要的信息,还提供连接尝试的次数、连接中止的原因等信息