设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
在 S7-1500 系列的两个 CPU 间创建一个编程连接,发送函 ...
返回列表
发新帖
[西门子]
在 S7-1500 系列的两个 CPU 间创建一个编程连接,发送函数的编程示例
[复制链接]
129
|
0
|
2024-4-6 15:59:25
|
显示全部楼层
|
阅读模式
简介
在以下示例中,在 S7-1500 系列的两个 CPU 间创建一个编程连接,并将一个字符串从 CPU 1 发送到 CPU 2。待发送字符串的数据类型为 STRING。
要求
两个 S7-1500 系列的 CPU 通过 PROFINET 进行互连,它们之间的连接尚未组态。
基于“属性 > 保护”(Properties > Protection) 中的低保护级别,可确保每个 CPU 都可进行读写访问。
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”)可用于指示本示例中的执行过程是否出错。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
电气侠客
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』