介绍
在以下示例中,在S7-1500 系列的两个CPU 之间创建编程连接,并将数据记录从CPU 1 发送到CPU 2。
要求
S7-1500 系列的两个CPU 通过PROFINET 互连,并且尚未组态它们之间的连接。
基于“属性保护”中的低保护级别,确保每个CPU的读写访问。
CPU 1 中的程序:数据存储
对于数据记录,创建以下PLC 数据类型。
对于数据传输,根据创建的PLC 数据类型创建以下数据块(“SLI_plcDB_sendData_TSEND”)。
要存储此数据,请使用以下结构和变量创建全局数据块(“SLI_gDB_TSEND”)。
CPU 1 中的程序:参数互连
创建功能块“SLI_FB_TSEND”并在此数据块中创建以下局部变量。
网络1:互连“TCON”指令的参数如下:
网络2:如果TCON 出现错误,请保存如下所示的状态信息。
网络3:互连“TSEND”指令的参数,如下所示:
网络4:如果TSEND有错误,则保存如下所示的状态信息。
网络5:互连“TDISCON”指令的参数如下:
程序片段6:如果TDISCON出错,则保存状态信息,如下所示。
CPU 1 中的程序:TCON 的配置
要互连输入参数CONNECT,请通过“属性配置”打开“TCON”指令的向导。
对TCON 配置进行以下设置:
输入字段条目Endpoint 在下拉列表中,选择CPU 作为发送方和接收方。
系统将自动输入接口、子网和地址。连接数据在下拉列表中选择“新建”,为每个CPU 创建数据块。
该数据块用于存储连接数据。数据块的名称可以任意设置。
已为CPU 1(本地CPU)建立有效连接。选择条目“ISO-on-TCP”作为连接类型。
这意味着建立连接时将使用使用“ISO-on-TCP”协议的以太网连接。连接ID 输入为此通信连接选择的任何连接ID。
该连接ID 尚未在项目中分配。确保该值与所使用的变量“connectionID”中的值相同。 TSAP ID 当选择“ISO-on-TCP”连接类型时,系统会自动输入详细的地址信息。
CPU 2 中的程序:数据存储
对于数据记录,创建以下PLC 数据类型。
对于数据传输,根据创建的PLC 数据类型创建以下数据块(“SLI_plcDB_rcvData_TRCV”)。
要存储此数据,请使用以下结构和变量创建全局数据块(“SLI_gDB_TRCV”)。
CPU 2 中的程序:参数互连
创建功能块“SLI_FB_TRCV”并在此数据块中创建以下局部变量。
网络1:互连“TCON”指令的参数如下:
网络2:如果TCON 出现错误,请保存如下所示的状态信息。
网络3:互连“TRCV”指令的参数如下:
网络4:如果TRCV出现错误,保存如下所示的状态信息。
网络5:互连“TDISCON”指令的参数如下:
程序片段6:如果TDISCON出错,则保存状态信息,如下所示。
CPU 2 中的程序:TCON 的配置
根据CPU 1/TCON 的示例,对CPU 2/TCON 连接进行以下设置:
连接数据
完成CPU 1/TCON 的组态后,已使用为相应CPU 存储的连接数据创建数据块(“PLC_Tsend_Connection_DB”、“PLC_Trcv_Connection_DB”)。如果不想创建新数据块并输入连接数据,可以直接使用创建的数据块(“PLC_Tsend_Connection_DB”、“PLC_Trcv_Connection_DB”)。
如果要选择创建的数据块,它们必须位于“项目树”的“程序块系统块”中。
建立连接的步骤
请按照以下顺序执行相关步骤:
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”)可用于指示本示例中执行期间是否发生错误。
网络2(TCON):
如果TCON 发出错误信号(“TCON.error”为“TRUE”),则报告的状态(“TCON.status”)将永久存储(“TCON.memErrStatus”)。
程序部分3 (TSEND):
“TSEND”指令根据输入参数ID(“connectionID”)确定要使用的通信连接。
当输入参数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”)可用于指示本示例中执行期间是否发生错误。
程序部分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”)可用于指示在执行本示例期间是否发生错误。
网络6(TDISCON):
如果TDISCON 发出错误信号(“TDISCON.error”为“TRUE”),则报告的状态(“TDISCON.status”)将永久存储(“TDISCON.memErrStatus”)。
CPU 2 的行为
TCON 和TDISCON 的操作与CPU 1 中相同。
网络3(TRCV):
“TRCV”指令根据输入参数ID(“connectionID”)确定要使用的通信连接。
当输入参数EN_R(“TRCV.start”)的信号状态为“TRUE”时,启动“TRCV”指令。通过多次调用,“TRCV”指令接收传输的数据记录。并在输入参数DATA (“SLI_plcDB_rcvData_TRCV”) 处检查该数据记录。
并通过输出参数LEN(“#length”)确定以BYTE传输的数据记录的实际长度。仅当传输成功时才会显示该值。之后,将检查“0”。当成功接收数据记录时,输出参数DONE (“#doneRCV”) 的信号状态为“TRUE”,输出参数STATUS (“TRCV.status”) 的值为“0000”。
由于输出参数的值仅在有效时才会显示,因此请按照下列步骤操作:
成功状态保存在变量“TRCV.done”中。
BYTE 长度存储在变量“TRCV.readLength”中。
输出参数ERROR(“TRCV.error”)或变量“TRCV.memErrStatus”)可用于指示本示例中执行期间是否发生错误。
网络4(TRCV):
如果TRCV 发出错误信号(“TRCV.error”为“TRUE”),则报告的状态(“TRCV.status”)将永久存储(“TRCV.memErrStatus”)。
审稿人:刘庆