TCON、TDISCON、TSEND和TRCV的编程示例

发布时间:2024-08-08  

简介

在以下示例中,将在 S7-1500 系列的两个 CPU 间创建一个编程连接,并将数据记录从 CPU 1 发送到 CPU 2 中。


要求

两个 S7-1500 系列的 CPU 通过 PROFINET 进行互连,它们之间的连接尚未组态。

823717ae-1cba-11ee-962d-dac502259ad0.png

基于“属性 > 保护”(Properties > Protection) 中的低保护级别,可确保每个 CPU 都可进行读写访问。

CPU 1 中的程序:数据的存储

为数据记录,创建以下 PLC 数据类型。

824f46ee-1cba-11ee-962d-dac502259ad0.png

要进行数据传送,需基于所创建的 PLC 数据类型,创建以下数据块(“SLI_plcDB_sendData_TSEND”)。

82673c36-1cba-11ee-962d-dac502259ad0.png

要对该数据进行存储,需使用以下结构和变量,创建一个全局数据块(“SLI_gDB_TSEND”)。

827ea13c-1cba-11ee-962d-dac502259ad0.png

CPU 1 中的程序:参数互连

创建函数块“SLI_FB_TSEND”,并在该数据块中创建以下局部变量。

82b2d8da-1cba-11ee-962d-dac502259ad0.png

程序段 1:互连“TCON”指令的参数,如下所示:

82d98872-1cba-11ee-962d-dac502259ad0.png

程序段 2:如果 TCON 出错,则保存状态信息,如下所示。

82f29542-1cba-11ee-962d-dac502259ad0.png

程序段 3:互连“TSEND”指令的参数,如下所示:

831373ac-1cba-11ee-962d-dac502259ad0.png

程序段 4:如果 TSEND 出错,则保存状态信息,如下所示。

833acb96-1cba-11ee-962d-dac502259ad0.png

程序段 5:互连“TDISCON”指令的参数,如下所示:

8352e06e-1cba-11ee-962d-dac502259ad0.png

程序段 6:如果 TDISCON 出错,则保存状态信息,如下所示。

83771754-1cba-11ee-962d-dac502259ad0.png

CPU 1 中的程序:TCON 的组态

要互连输入参数 CONNECT,可通过“属性 > 组态”(Properties > Configuration) 打开指令“TCON”的向导。

对 TCON 的组态进行如下设置:

输入字段 条目
端点 在下拉列表中,选择作为发送方和接收方的 CPU。
系统将自动输入接口、子网和地址。
连接数据 在下拉列表中选择“新建”(New),为每个 CPU 创建一个数据块。
该数据块用于存储连接数据。数据块的名称可任意设置。
为 CPU 1(本地 CPU)建立主动连接。
连接类型 选择条目“ISO-on-TCP”。
这意味着,建立连接时将使用“ISO-on-TCP”协议的以太网连接。
连接 ID 在该通信连接中,输入任意一个选定的连接 ID。
该连接 ID 在项目中尚未分配。确保数值与所用变量“connectionID”中的值相同。
TSAP ID 在选择“ISO-on-TCP”连接类型时,系统将自动输入详细的地址信息。

839a4828-1cba-11ee-962d-dac502259ad0.png

CPU 2 中的程序:数据的存储

为数据记录,创建以下 PLC 数据类型。

824f46ee-1cba-11ee-962d-dac502259ad0.png

要进行数据传送,需基于所创建的 PLC 数据类型,创建以下数据块(“SLI_plcDB_rcvData_TRCV”)。

83cab7ce-1cba-11ee-962d-dac502259ad0.png

要对该数据进行存储,需使用以下结构和变量,创建一个全局数据块(“SLI_gDB_TRCV”)。

83e8faae-1cba-11ee-962d-dac502259ad0.png

CPU 2 中的程序:参数互连

创建函数块“SLI_FB_TRCV”,并在该数据块中创建以下局部变量。

841d790a-1cba-11ee-962d-dac502259ad0.png

程序段 1:互连“TCON”指令的参数,如下所示:

84472e80-1cba-11ee-962d-dac502259ad0.png

程序段 2:如果 TCON 出错,则保存状态信息,如下所示。

846dad44-1cba-11ee-962d-dac502259ad0.png

程序段 3:互连“TRCV”指令的参数,如下所示:

8486d04e-1cba-11ee-962d-dac502259ad0.png

程序段 4:如果 TRCV 出错,则保存状态信息,如下所示。

849aa8d0-1cba-11ee-962d-dac502259ad0.png

程序段 5:互连“TDISCON”指令的参数,如下所示:

84e4d9e6-1cba-11ee-962d-dac502259ad0.png

程序段 6:如果 TDISCON 出错,则保存状态信息,如下所示。

850bfad0-1cba-11ee-962d-dac502259ad0.png

CPU 2 中的程序:TCON 的组态

根据 CPU 1 / TCON 的示例,对 CPU 2 / TCON 连接进行以下设置:

说明
连接数据
完成 CPU 1 / TCON 的组态之后,已创建了一个数据块(“PLC_Tsend_Connection_DB”,“PLC_Trcv_Connection_DB”),并带有为各 CPU 存储的连接数据。如果不希望创建新的数据块并输入连接数据,则可直接使用创建的数据块(“PLC_Tsend_Connection_DB”,“PLC_Trcv_Connection_DB”)。
如果要选择已创建的数据块,则这些数据块必须位于“项目树”(project tree) 的“程序块 > 系统块”(Program blocks > System blocks) 中。

8535196a-1cba-11ee-962d-dac502259ad0.png

建立连接的操作步骤

请遵循相关操作步骤的顺序:

1.对于 CPU 2 / TCON,将参数 REQ 更改为“TRUE”。

2.对于 CPU 1 / TCON,将参数 REQ 更改为“TRUE”。

3.对于 CPU 2 / TCON,将参数 REQ 更改为“FALSE”。

4.对于 CPU 1 / TCON,将参数 REQ 更改为“FALSE”。

终止连接的操作步骤

请遵循相关操作步骤的顺序:

1.对于 CPU 1 / TDISCON,将参数 REQ 更改为“TRUE”。

2.对于 CPU 2 / TDISCON,将参数 REQ 更改为“TRUE”。

3.对于 CPU 1 / TDISCON,将参数 REQ 更改为“FALSE”。

4.对于 CPU 2 / TDISCON,将参数 REQ 更改为“FALSE”。

CPU 1 的行为

程序段 1 (TCON):

输入参数 REQ(“TCON.start”)的信号状态为“TRUE”时,启动指令“TCON”。多次调用时,指令“TCON”将创建与伙伴 CPU 的通信连接。为此,可通过输入参数 CONNECT(或数据块“PLC_Trcv_Connection_DB”)检索该连接数据。

连接设置成功时,输出参数 DONE(“#doneCON”)的信号状态为“TRUE”,且输出参数 STATUS(“TCON.status”)的值为“0000”。由于输出参数的值仅在有效时才显示,因此成功状态将保存在变量“TCON.done”中。复位所有之前连接终止的成功状态(“TDISCON.done”)。

输出参数 ERROR(“TCON.error”)或变量“TCON.memErrStatus”)可用于指示本示例中的执行过程是否出错。

85527bfe-1cba-11ee-962d-dac502259ad0.png

程序段 2 (TCON):

如果 TCON 发出信号指示错误(“TCON.error”为“TRUE”),则所报告的状态(“TCON.status”)将进行永久性存储(“TCON.memErrStatus”)。

程序段 3 (TSEND):

根据输入参数 ID(“connectionID”),指令“TSEND”可确定待使用的通信连接。

输入参数 REQ(“TSEND.start”)的信号状态为“TRUE”时,启动指令“TSEND”。进行多次调用时,“TSEND”指令将传送输入参数 DATA(“SLI_plcDB_sendData_TSEND”)处检测到的数据记录。

数据记录传送成功时,输出参数 DONE(“#doneSEND”)的信号状态为“TRUE”,且输出参数 STATUS(“TSEND.status”)的值为“0000”。由于输出参数的值仅在有效时才显示,因此成功状态将保存在变量“TSEND.done”中。

输出参数 ERROR(“TSEND.error”)或变量“TSEND.memErrStatus”)可用于指示本示例中的执行过程是否出错。

85739c3a-1cba-11ee-962d-dac502259ad0.png

程序段 4 (TSEND):

如果 TSEND 发出信号指示错误(“TSEND.error”为“TRUE”),则所报告的状态(“TSEND.status”)将进行永久性存储(“TSEND.memErrStatus”)。

程序段 5 (TDISCON):

输入参数 REQ(“TDISCON.start”)的信号状态为“TRUE”时,启动指令“TDISCON”。多次调用时,指令“TDISCON”将终止该通信连接。为此,需检索输入参数 ID(“connectionID”)中使用的通信连接。

连接终止成功时,输出参数 DONE(“#doneDISC”)的信号状态为“TRUE”,且输出参数 STATUS(“TDISCON.status”)的值为“0000”。由于输出参数的值仅在有效时才显示,因此成功状态将保存在变量“TDISCON.done”中。复位连接设置(“TCON.done”)和数据传送(“TSEND.done”)的成功消息。

输出参数 ERROR(“TDISCON.error”)或变量“TDISCON.memErrStatus”)可用于指示本示例中的执行过程是否出错。

858a7b4e-1cba-11ee-962d-dac502259ad0.png

程序段 6 (TDISCON):

如果 TDISCON 发出信号指示错误(“TDISCON.error”为“TRUE”),则所报告的状态(“TDISCON.status”)将进行永久性存储(“TDISCON.memErrStatus”)。

CPU 2 的行为

TCON 和 TDISCON 的运行与 CPU 1 中的相同。

85b22716-1cba-11ee-962d-dac502259ad0.png

85cbe6f6-1cba-11ee-962d-dac502259ad0.png

程序段 3 (TRCV):

根据输入参数 ID(“connectionID”),指令“TRCV”可确定待使用的通信连接。

输入参数 EN_R(“TRCV.start”)的信号状态为“TRUE”时,启动指令“TRCV”。进行多次调用时,“TRCV”指令将接收所传送的数据记录。并检查输入参数 DATA(“SLI_plcDB_rcvData_TRCV”)处的该数据记录。

85ea9d08-1cba-11ee-962d-dac502259ad0.png

并通过输出参数 LEN(“#length”),确定 BYTE 中实际传送的数据记录长度。仅当传送成功时,才显示该值。之后,将检查“0”。数据记录接收成功时,输出参数 DONE(“#doneRCV”)的信号状态为“TRUE”,且输出参数 STATUS(“TRCV.status”)的值为“0000”。

由于输出参数的值仅在有效时才显示,因此请进行以下操作步骤:

成功状态保存在变量“TRCV.done”中。

BYTE 长度保存在变量“TRCV.readLength”中。

输出参数 ERROR(“TRCV.error”)或变量“TRCV.memErrStatus”)可用于指示本示例中的执行过程是否出错。

8607eda4-1cba-11ee-962d-dac502259ad0.png

程序段 4 (TRCV):

如果 TRCV 发出信号指示错误(“TRCV.error”为“TRUE”),则所报告的状态(“TRCV.status”)将进行永久性存储(“TRCV.memErrStatus”)。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    通过编写程序来控制各种机械、设备及其传感器,实现自动化控制。   2. 控制逻辑简单:PLC编程使用的是简单的输入输出逻辑,不需要复杂的编程语言,语言基础不够好的人也可以较快上手。   3. 可靠性高:PLC编程......
    函数发生器等一系列特殊功能,而且不需要专门的编程知识,只需要懂得图形化处理和标准程序块的使用,进行简单的设置即可。   聊聊PLC的学习方法 1、学习PLC编程需要坚强的毅力和足够的耐心 人各有所长。有些人把编程......
    一种思维方式。编写梯形图的过程实际上是将复杂的控制逻辑以简单直观的方式展示出来,这不仅能够提高编程效率,还能减少出错的可能性。此外,良好的编程习惯和遵循的规则也能大大提升程序的维护性和扩展性。因此,理解并熟练掌握梯形图编程......
    图强调逻辑控制,可表示逻辑运算、开关控制、定时与计数等多种逻辑关系;而继电器接触器线路图则更加突出控制电路的物理连接关系,适用于简单的电气控制和较低的控制要求。   3. 编程方式不同:PLC梯形......
    高效的并行处理。   2. 界面友好化:编程语言使用图形化的界面,通过拖拽和连接元件构建梯形图,使得PLC程序的设计和调试变得更加直观化和简单化。   3. 逻辑可读性:PLC梯形图编程语言中,每一条线路都对应一个简单的......
    浅谈PLC编程容易忽略的延时问题;PLC在机械加工类的专用设备中有很大的应用,然而有一个问题常常被初入门的编程人员忽略,即延时问题。 简单的说,以气缸为例,PLC判断......
    子,欧姆龙,PLC编程语言很简单的,有梯形图,语句表,功能图 等等,常用的是梯形图,放心这个不难懂得,最常用的是梯形图,其次助记符号,然后步进图,剩下的就是不同厂家的所谓的高级汇编语言了。就是......
    机的框架,单片机的寄存器,以及单片机的操作指令,用汇编语言实现一些简单的功能。 当时学习的时候知识课本知识,而又没有配套的开发板,可以让我们动手。 当时的感触就是一个字:难,两个字:枯燥。 也许......
    机是一款传统的,非常典型的通用性比较强的单片机,可以非常有效的帮助大家理解单片机的编程过程,而且学习起来相对比较简单,更容易上手。 如果选择C51单片机开始学习的,百度一下有大把的学习课程,如果......
    较高的抗干扰、抗振动和抗电磁干扰能力。   2. 稳定性好:PLC用于控制系统时,其稳定性和可靠性都得到了较好的保证。   3. 编程简单:PLC的编程方式通常基于图形化编程,易于理解和掌握,而且可以通过简单的......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>