您现在的位置是:首页 > PLC技术 > PLC技术
需要双方编程的S7基本通信
来源:艾特贸易2017-12-20
简介S7 基本通信不用组态静态连接,也不用在全局数据表中组态。 例程“ MPI_UC_1 ”用 S7 基本通信在两台 CPU315 -2DP 之间交换数据。要求将它们的 DB 1 中 76B 的数据发送到对方的 DB 2 中。在
S7基本通信不用组态静态连接,也不用在全局数据表中组态。
例程“MPI_UC_1”用S7基本通信在两台CPU315 -2DP之间交换数据。要求将它们的DB 1中76B的数据发送到对方的DB 2中。在STEP 7中创建一个项目,生成两个站,CPU均为CPU 315 -2 DP(见图9-12),将它们连接到MPI网络上,它们的MPI站地址分别为2和3。通信的双方都需要调用通信块,一方调用X_SEND来发送数据,另一方调用X_RCV来接收数据二这种通信方式适用于S7 - 300/400之间的通信。
如果在OB1中调用SFC 65“X_SEND”,发送的频率太快,将加重CPU的负荷,因此在循环中断组织块OB35中调用SFC 65,每隔一定的时间间隔(默认值为100 ms)调用一次SFC 65。下面是2号站的OB35中的程序:
图9-12 SIMATIC管理器
程序段1:准备要发送的数据
L DB1.DBW 0
+ 1
T DB1.DBW 0 //每100 ms将DB1.DBW加1
L IW 0
T DB1.DBW 2 //用本站的IW0控制对方的QW4
程序段2:通过MPI发送数据
CALL“X_SEND” //SFC 65
REQ :=M1.0 //发送请求,该参数为1时发送
CONT :=TRUE //发送完成后保持连接
DEST_ID:=W#16#3 //接收方的MPI地址
REQ_ID :=DW#16#1 //数据包标识符
SD :=P#DB1.DBX0.0 BYTE76 //存放要发送的数据的地址区,每次发送76B
RET_VAL:=MW10 //状态字,返回的故障信息
BUSY :=M1.1 //为1时正在发送,为0时发送完成
下面是2号站的OB1中接收数据的程序:
程序段1:从MPI接收数据
CALL “X_RCV” //SFC 66
EN_DT :=M0.0 //接收使能位
RET_VAL:=MW2 //状态字,返回的错误代码
REQ_ID :=MD4 //接收到的数据包的标识符
NDA :=M0.1 //为1时表示有新的数据包
RD :=P#DB2.DBX0.0 BYTE76 //存放接收数据的地址区
L DB2.DBW 2
T QW 4 //用对方的IWO控制本站的QW4
程序段2:断开连接
CALL “X_ABORT” //SFC 69
REQ :=M0.2 //使能信号
DEST_ID : = W#16#3 //对方的MPI地址
RET_VAL:=MW8 //返回的错误信息
BUSY :=M0.3 //为1表示操作未完成
3号站的程序与2号站的相同,只是将SFC中的DEST_ID由W#16#3改为W#16#2。
在2号站的初始化程序OB100中,调用SFC 21,将存放发送数据的DB 1的各个字预置为16#2222,将接收数据的DB 2的各个字清零。3号站的OB100基本上相同,区别在于将DB1的各个字预置为16#3333。
在运行时,用变量表监视通信双方接收的DB 1的第1个字DBW0和最后一个字DBW74(见图9-13)。为了观察数据传输的动态效果,将发送站的JW0送到DB1. DBW2,对方将接收到的对应的DB2.DBW2传送到QW4,相当于用发送站的IW0控制对方的QW4。在运行时改变IW0的状态,观察对方的QW4是否随之而变。
图9-13 3号站的变量表
在变量表中,通过修改M1.0、M0.0和M0.2的值,来控制数据的发送、接收和断开连接。发送使能位M1.0和对方的接收使能位M0.0必须同时为1状态,才能传送数据。
在每100 ms执行一次的OB35中,将发送的第1个字DB1.DBW0加1。在运行时同时打开两个站的变量表,观察接收到的DB2. DBW0的值是否不断增大。
因为SFC 65的参数CONT为1(TRUE),即使发送请求位M1.0变为0状态,连接仍然保持。可以通过置位M0.2来使能SFC 69,断开已建立的连接。断开连接后,可以看到接收到的DB2. DBW0停止变化。
本例因为每个站既要发送,也要接收,一共占用了两个连接。进入在线模式后,可以在CPU的模块信息对话框的“通讯”选项卡中,查看“其他通讯”(S7基本通信)的连接个数。
如果需要发送的数据超过76B,可以将数据分为若干个数据包来发送,即多次调用SFC65“X_SEND”。每次调用的接收方的MPI地址DEST_ID相同,但是数据包标识符REQ_ID不同。接收方调用SFC 66“X_RCV”,根据接收到的数据包的标识符REQ_ID判别收到的是哪一包数据,并分别存放到不同的地址区。
(部分原创文章应编辑稿费需求,每篇需要收取2元的稿费,如需查看全文请联系客服索取,谢谢理解!在线客服:)
点击排行
