指令被异步执行并有以下功能:

t组态并建立一个通信连接。

通过现有的连接发送和接收数据。

断开或重置通信连接。

通信连接通过CONT=1组态和建立。

发送任务在REQ参数中检测到上升沿时会被执行。

如果参数EN_R的值被设定”1″,数据接收会被使能。

下面考虑编程建立连接的情形下指令的行为,使用了参数CONT/REQ和CONT/NDR。

有效性

本条目对于V2.0版本的指令有效。在附件中使用了旧版本V1.4指令。CP 443-1 作为通信伙伴使用,会尽可能频繁的发送数据。 (“TRCV_C”相关).

TSEND_C只要CONT参数 = 0,REQ参数就不会有影响。

参数REQ在CONT之后置位

TSEND_C指令在CONT = 1之前,在STATUS送出 “7000” ,从CONT置位开始建立连。在连接开始建立时STATUS参数输出值为“7001”,保持一个程序周期 ;然后,STATUS参数的值输出“7002”,直到连接被建立。当连接被建立后,STATUS参数的值输出”7004″。如果此后如果参数REQ设为1,STATUS参数的值输出 “7005”,并且同时输出BUSY=1直到Send任务完成。当数据被成功发送时,会输出以下的值:STATUS=0,DONE=1和BUSY=0.。然后STATUS参数的值就会变回”7004″,这就是说TSEND_C指令不再处于发送模式。如果需要触发一个新的发送任务,REQ参数必须复位一个周期然后再次置位。

图. 1

参数CONT和REQ同时被置位

“TSEND_C”指令输出STATUS “7000” ,直到CONT=1和REQ=1被置位而连接开始建立。 开始建立连接时,STATUS参数的值输出”7001″持续一个周期,然后STATUS参数的值输出”7002″直到连接被建立。当连接建立完成后,STATUS参数的值为“1”并且指令开始发送数据,同时设置BUSY=1。随后的程序循环中,STATUS参数的值输出 “7005”同时BUSY=1,直到发送任务完成。当数据发送完成,输出下列值:STATUS=0,DONE=1,BUSY=0。然后指令的STATUS参数的值会再次为“7004”,表明指令不再处于发送模式。如需开始新的发送任务,REQ参数必须复位一个周期然后再置位。

图. 2

图. 5 显示了连接的断开过程。当连接正在被断开时,指令TSEND_C 在STATUS参数的值为“7003”,直到连接被成功断开。成功断开连接会在STATUS参数报“3”。然后TSEND_C指令会在STATUS参数输出“7000” ,表明当前没有任务在运行。

TRCV_C只要CONT参数不置位,EN_R参数就没有影响。

参数CONT先置位而EN_R后置位

TRCV_C指令发送STATUS“7000”直到CONT=1被设定,同时连接开始建立。当连接被建立时,STATUS参数的的值输出“7001”一个周期。然后STATUS参数的值会为“7002”直到连接被建立。当连接被建立之后,STATUS参数的值输出“7004”。 如果参数EN_R=1 被设定,STATUS参数的值输出”7006″ ,同时指令就会输出BUSY=1,直到接收任务完成。当数据被完全接收之后,输出以下值:STATUS=0,NDR=1同时BUSY=0。只要 EN_R=1,指令的在STATUS参数的输出值就会为”7006″;意味着继续准备接收而 BUSY=1。下面的例子中图示有接收第二个消息的状态。

图. 3

参数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,进入继续准备接收状态。下面的例子中图示有接收第二个消息的状态。

图. 4

TRCV的特殊点当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 协议都是相同的。

更多信息TSEND_C和TRCV_C指令在V1.4中的行为可以在以下文档中找到。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc322570.html

cont在c语言用法,在S7-1500中指令TSEND_C and TRCV_C如何使用?相关推荐

  1. 基于S7–1500的单部六层电梯教程(六)

    此文主要用于解答大家的一些常见的疑惑. 此文原文: 内容包括 部分程序讲解.下载的程序如何打开等. https://zhuanlan.zhihu.com/p/367266801 Q1: 参考程序运行起 ...

  2. 基于S7–1500的单部六层电梯教程(五)

    前面的内容 基于S7–1500的单部六层电梯教程(一) 基于S7–1500的单部六层电梯教程(二) 基于S7–1500的单部六层电梯教程(三) 基于S7–1500的单部六层电梯教程(四) 基于S7–1 ...

  3. 基于S7–1500的单部六层电梯教程(三)

    教程继续更新ing 程序思路讲解 基于S7–1500的单部六层电梯教程(一) 基于S7–1500的单部六层电梯教程(二) 基于S7–1500的单部六层电梯教程(三) 基于S7–1500的单部六层电梯教 ...

  4. 基于S7–1500的单部六层电梯教程(一)

    Background: 该系列文章写于2020/8月,西门子智能制造线上赛期间. 疫情原因,西门子智能制造挑战赛于2020年发起了一次线上赛.线上赛的资格赛就是利用EET评分的单部六层电梯的程序编写. ...

  5. 基于S7–1500的单部六层电梯教程(四)

    继续. 程序思路讲解 基于S7–1500的单部六层电梯教程(一) 基于S7–1500的单部六层电梯教程(二) 基于S7–1500的单部六层电梯教程(三) 基于S7–1500的单部六层电梯教程(四) 基 ...

  6. 基于S7–1500的单部六层电梯教程(二)

    此文开始讲解[单部六层电梯]的程序编写思路,由于自身能力限制,许多编写思路不一定足够严谨,但是足够起到入门效果.(初学时,俺直接拿着六部十层的程序啃,痛苦无比.) 依旧以西门子去年的线上资格赛为背景( ...

  7. 讲解c程序设计语言的比喻,《C语言程序设计》论文关于比喻在《C语言程序设计》课程教学中的应用论文范文参考资料...

    <C语言程序设计>课程教学中有关比喻的<C语言程序设计>论文范文参考资料 比喻的用法是将本质上相似的两个事物联系起来,通过熟悉的事物接近事物,实现让学习者更好地熟悉新事物的目的 ...

  8. R语言在气象、水文中数据处理及结果分析、绘图

    R语言是一门由统计学家开发的用于统计计算和作图的语言(a Statistic Language developed for Statistic by Statistician),由S语言发展而来,以统 ...

  9. 判断字符串s1中是否包含s2字符串c语言,C语言:找出s1中是否存在字符串s2(C language: find out if string s2 exists in s1)...

    C语言:找出s1中是否存在字符串s2(C language: find out if string s2 exists in s1) 是否有任何C函数来检查s1中是否存在字符串s2? s1: &quo ...

最新文章

  1. spring 基于XML的申明式AspectJ通知的执行顺序
  2. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )
  3. java三目运算符判断boonlean,java三元运算符
  4. Qt Creator使用命令行选项
  5. mfc获取子窗口句柄_前端设计-JavaScript中父窗口与子窗口间的通信
  6. 飞鸽传书是企业网络营销管理专家
  7. 转:Linux网络IO并行化技术概览
  8. HTML5 Canvas中绘制线段
  9. php内嵌网页加载js,javascript 窗口加载蒙板 内嵌网页内容_javascript技巧
  10. 不论报任何错误 都是网络源有问题,安装spacemacs报错的解决方式
  11. JAVA简单的SWING及AWT
  12. 不使用临时变量交换两个数
  13. 怎么让图片平铺_美妆蛋、化妆刷到底应该怎么洗?
  14. 线性规划问题及单纯形法-目标函数值极小大M法
  15. 计算机音乐数字乐谱fade,faded简谱_faded数字简谱
  16. mysql 统计市县的数量
  17. C语言打印图形小妙招
  18. 6.数据仓库搭建之数据仓库设计
  19. [HR规划]人力资源规划详解(zt)
  20. 下载个PDF居然还要密码?想要密码就付费?这我能忍你!Python分分钟解密它!

热门文章

  1. 常见设计模式实现、详解及在Spring中的应用
  2. 计算机科学与实践,【计算机科学与技术学院|实践实况】(一)
  3. C#命名空间 System.IO思维导图
  4. 计算机学科专业知识两门课,计算机学科两门专业课的融会贯通教学改革探讨
  5. 二值图像分析:OpenCV中的二值化阈值操作
  6. python文件存储为json格式_python 储存文件json
  7. 快速翻译PDF文档的免费方法
  8. linux mysql常用基本操作,Linux下MySQL数据库常用基本操作 一
  9. 台式计算机连wifi,台式电脑怎么连wifi
  10. easyUI datatimebox 设置时分秒不可修改