您现在的位置是:首页 > PLC技术 > PLC技术
基于以太网的S7连接通信的通信程序
来源:艾特贸易2017-12-20
简介通信双方的发送程序和接收程序在 OB1 ,编程时应使用组态时生成的 S7 连接的 ID 号。 FB 8 和 FB 9 中的参数 R_ID 用于区分同一连接中不同的 SFB/FB 调用,发送方与接收方的 R_ID 应相同。为
通信双方的发送程序和接收程序在OB1,编程时应使用组态时生成的S7连接的ID号。FB 8和FB 9中的参数R_ID用于区分同一连接中不同的SFB/FB调用,发送方与接收方的R_ID应相同。为了区分两个方向的通信,令CPU 313C - 2DP发送的数据包(即CPU 315接收的数据包)的R_ID为1,CPU 315发送的数据包的R_ID为2(见图8-25)。
图8-25 数据发送示意图
提供发送请求信号的M8.0是周期为100 ms的时钟存储器位,接收请求信号EN_R一直为1状态( TRUE)。如果接收请求EN_R的实参为一个位地址(例如M10.0),可以用它来控制是否接收数据。S7 -400使用的SFB 8/SFB 9可以发送和接收4个数据区的数据,S7 - 300使用的FB 8/FB 9只能发送和接收一个数据区的数据。
S7 - 300使用的S7通信功能块(FB)在文件夹“\库\SIMATIC_NET_CP\CP 300”中。
程序段1:发送数据
L ID 0
T DB1.DBD 2 //用本站的IDO控制对方的QD4
CALL”USEND”,DB8 //调用FB 8
REQ :=M8.0 //发送请求,上升沿有效,周期为100 ms
ID :=W#16#1 //S7连接号
R_ID :=DW#16#1 //发送与接收请求号
DONE :=M10.1 //任务被正确执行时为1
ERROR:=M10.2 //错误标志位,为1时出错
STATUS:=MW12 //状态字
SD_1 :=P#DB1.DBX0.0 BYTE100 //存放本站要发送的数据的地址区
程序段2:接收数据
CALL ”URCV”,DB9 //调用FB 9
EN_R :=TRUE //接收请求,为1时接收
ID :=W#16#1 //S7连接号
R_ID :=DW#16#2 //发送与接收请求号
NDR :=M0.1 //任务被正确执行时为1
ERROR:=M0.2 //发送错误标志位,通信出错时为1
STATUS:=MW2 //状态字
RD_1 :=P#DB2.DBX0.0 B YTE100 //本站存放读取的数据的地址区
L DB2.DBD 2
T QD 4 //用对方的ID0控制本站的QD4
在OB35中,DB1. DBW0每隔100 ms被加1。在初始化程序OB100中,用SFC 21预置数据发送区DB 1各个字的初值为16#1111,将数据接收区DB 2各字节清零。
CPU 315的程序与CPU 313C - 2DP的基本上相同,需要注意的是,在前者的OB1中,USEND的输入参数R_ID为2,URCV的R_ID为1,它们的ID(连接号)均为1。在OB100中,发送区的数据字被初始化为W#16#2222。
(部分原创文章应编辑稿费需求,每篇需要收取2元的稿费,如需查看全文请联系客服索取,谢谢理解!在线客服:)
点击排行
