简介
在以下示例中,在 s7-1500 系列的两个 cpu 间创建一个编程连接,并将一个字符串从 cpu 1 发送到 cpu 2。待发送字符串的数据类型为 string。
要求
cpu 1 中的程序
在全局数据块中,创建 9 个变量存储“tsend_c”的数据。
创建函数块“sli_fb_tsend_c”,并在该函数块中创建以下局部变量。
程序段 1:互连“tsend_c”指令的参数,如下所示:但请勿互连参数 connect。
程序段 2:保存 tsend_c 的错误状态,如下所示。
tsend_c 的组态
要互连参数 connect,可通过“属性 > 组态”(properties > configuration) 打开指令“tsend_c”的向导。
对 tsend_c 的组态进行如下设置:
输入字段 条目
端点 在下拉列表中,选择作为发送方和接收方的 cpu。
系统将自动输入接口、子网和地址。
连接数据 在下拉列表中选择“新建”(new),为每个 cpu 创建一个数据块。
该数据块用于存储连接数据。数据块的名称可任意设置。
为 cpu 1(本地 cpu)建立主动连接。
连接类型 选择条目“tcp”。
这意味着,连接建立时使用“tcp”协议的以太网连接。
组态模式 选择条目“使用程序块”(use program block)。
这意味着,将通过编程连接建立连接。
连接 id 在该通信连接中,输入任意一个选定的连接 id。
该连接 id 在项目中尚未分配。
伙伴端口 输入一个伙伴端口值。该值必须 >=2000。
cpu 2 中的程序
在全局数据块中,创建 10 个变量存储“trcv_c”的数据。
创建函数块“sli_fb_trcv_c”,并在该函数块中创建以下局部变量。
程序段 1:互连“trcv_c”指令的参数,如下所示:但请勿互连参数 connect。
程序段 2:保存 trcv_c 的错误状态,如下所示。
trcv_c 的组态
对 trcv_c 的组态进行如下设置:
说明
连接数据
组态 tsend_c 后,已创建了一个数据块(“sli_cdb_connector”),并带有为各个 cpu 存储的连接数据。如果不希望创建新的数据块并输入连接数据,也可直接使用创建的数据块(“sli_cdb_connector”)。
如果要选择已创建的数据块,则这些数据块必须位于“项目树”(project tree) 的“程序块 > 系统块”(program blocks > system blocks) 中。
连接建立的操作过程
要在 run 模式下建立通信连接,请按以下步骤操作:
对于 trcv_c,将参数 en_r 更改为“1”。
对于 trcv_c,将参数 cont 更改为“1”。
对于 tsend_c,将参数 req 更改为“1”。
对于 tsend_c,将参数 cont 更改为“1”。
终止连接的操作过程
要在 run 模式下终止通信连接,请按以下步骤操作:
对于 tsend_c,将参数 cont 更改为“0”。
对于 tsend_c,将参数 req 更改为“0”。
对于 trcv_c,将参数 cont 更改为“0”。
对于 trcv_c,将参数 en_r 更改为“0”。
cpu 1 的行为
输入参数 req(“start”)返回信号状态“true”时,启动指令“tsend_c”。输入参数 cont(“comcontrol”)中的信号状态为“true”时,“tsend_c”指令将在 cpu 1 与 cpu 2 间创建一个通信连接。为此,可通过输入参数 connect(或数据块“sli_cdb_connector”)检索该连接数据。
进行多次调用时,“tsend_c”指令将传送输入参数 data(“senddata”)处检测到的数据记录。数据记录传送成功时,输出参数 done(“#statdone”)的信号状态为“true”,且输出参数 status(“status”)的值为“0000”。由于输出参数的值仅在有效时才显示,因此 done(“#statdone”)的成功状态将保存在变量“done”中。
将该数据记录发送到 cpu 2 后,将继续监视该通信连接(状态为“7004”)。输出参数 error(“error”)或变量“memerrstatus”)可用于指示本示例中的执行过程是否出错。
cpu 2 的行为
输入参数 en_r(“start”)返回信号状态“true”时,启动指令“trcv_c”。输入参数 cont(“comcontrol”)中的信号状态为“true”时,“trcv_c”指令将在 cpu 2 与 cpu 1 间创建一个通信连接。为此,可通过输入参数 connect(或数据块“sli_cdb_connector”)检索该连接数据。
进行多次调用时,“trcv_c”指令将接收所传送的数据记录。该数据记录将记录在参数 data(“rcvdata”)中。数据记录传送成功时,输出参数 done(“done”)的信号状态为“true”,且输出参数 status(“status”)的值为“0000”。并通过输出参数 rcvd_len(“#statrcvlen”),确定 byte 中实际传送的数据记录长度。仅当传送成功时,才显示该值。之后,将检查“0”。
由于输出参数的值仅在有效时才显示,因此请进行以下操作步骤:
将“#statrcvlen”的值保存在“rcvlen”中。
将“#statdone”的值保存在“done”中。
将“#status”的值保存在“memerrstatus”中。
cpu 2 接收到该数据记录后,将继续监视该通信连接(状态为“7006”)。输出参数 error(“error”)或变量“memerrstatus”)可用于指示本示例中的执行过程是否出错。
两个 s7-1500 系列的 cpu 通过 profinet 进行互连,它们之间的连接尚未组态。
基于“属性 > 保护”(properties > protection) 中的低保护级别,可确保每个 cpu 都可进行读写访问。
罗克韦尔自动化升级,扩展人类的无限可能
美护产品应用人工智能会是在怎样的
常见的几种功率半导体器件
ug内部错误,内存访问违例怎么解决
福特Mustang Mach-E发布长续航后驱SE版车型
如何在S7-1500系列的两个CPU间创建一个编程连接
四路互锁开关电路讲解
三星助力!LGD电视OLED今年出货将增长20%
深入了解FPGA厂商并掌握FPGA编程语言
函数式编程语言Crumb简述
魅族Pro7最新消息:小米MIX2、魅蓝Note6联合夹击,魅族Pro7直降500绝地反击
谷歌云计算游戏平台Stadia支持多种游戏引擎?
世界首个海上风电桩——桶复合基础的成功安装
水表与物联网技术结合 有望提升智能水表的集中度
菜鸟CTO谷雪梅:物联网IoT将决定物流行业未来五年竞争格局
英国最终决停止用华为5G设备 特朗普承认亲自劝盟国禁用华为
三脚架产品类型
智能家居正迎来发展黄金时期,或成行业新风口
OPPO将携多项创新技术和产品亮相MWC 2022
ChatGPT会抢走好莱坞编剧饭碗吗?