您现在的位置是:首页 > PLC技术 > PLC技术
只需一个站编程的S7基本通信
来源:艾特贸易2017-12-20
简介除了上述使用 SFC 65 “ X_SEND ”和 SFC 66 “ X_RCV ”的双向通信之外,还可以实现单向通信。编写程序的一方的 CPU 作客户机,另一方作服务器,后者不需要编写程序。客户机是通信的主动
除了上述使用SFC 65“X_SEND”和SFC 66“X_RCV”的双向通信之外,还可以实现单向通信。编写程序的一方的CPU作客户机,另一方作服务器,后者不需要编写程序。客户机是通信的主动方,服务器是被动方。
在S7基本通信中,S7 -300或S7 - 400都可以作客户机或服务器,S7 - 200只能作服务器。
在STEP 7中创建一个项目(见随书光盘中的例程MPI_UC_2),生成两个站,CPU 413-2DP作客户机,CPU 315 - 2DP作服务器。将它们连接到MPI网络上,它们的MPI站地址分别为2和3。在单向通信中,客户机调用SFC 68“X_PUT”来写服务器中的系统地址区,调用SFC 67“X_GET”来读取服务器中的数据。在读取服务器数据时,客户机首先要发送读取命令给客户机。为了保证发送读、写命令的时间间隔,在循环中断组织块OB35中调用SFC 68“X_PUT”和SFC 67“X_GET”。下面是客户机的OB35中的程序:
程序段1:准备要发送的数据
L DB1.DBW 0
+ 1
T DB1.DBW 0 //每100 ms将DB1.DBW加1
L ID 0
T DB1.DBD 2 //用本站的ID0控制对方的QD4
程序段2:用SFC 68写对方的数据区
CALL “X_PUT” //调用SFC 68
REQ := M0.0 //写数据使能信号
CONT := TRUE //发送完成后保持连接
DEST_ID :=W#16#3 //对方的MPI地址
VAR_ADDR:=P#DB2.DBX0.0 BYTE 76 //通信伙伴要写入数据的地址区
SD := P#DB1.DBX0.0 BYTE76 //存放本站要发送的数据的地址区
RET_VAL := MW2 //状态字,返回的错误信息
BUSY :=M0.1 //为1时写数据未完成
程序段3:用SFC 67读对方的数据区
CALL“X_GET” //调用SFC 67
REQ :=M0.2 //读数据使能信号
CONT := TRUE //读数据完成后保持连接
DEST_ID :=W#16#3 //对方的MPI站地址
VARADDR:=P#DB1.DBX0.0 BYTE 76 //要读取的通信伙伴的地址区
RET_VAL := MW4 //通信状态字,返回的错误信息
BUSY :=M0.3 //为l时读数据未完成
RD := P#DB2.DBX0.0 BYTE76 //本站存放读取的数据的地址区
L DB2.DBD 2
T QD 0 //用对方的ID0控制本站的QD0
程序段4:断开连接
CALL “X_ABORT” //调用SFC 69
REQ := M0.4 //使能信号
DEST_ID :=W#16#3 //对方的MPI地址
RET_VAL :=MW6 //返回的错误信息
BUSY :=M0.5 //为1表示操作未完成
如果在3号站用SFC 67“X_GET”和SFC 68“X_PUT”读写2号站的系统数据区,可以使用与上面基本上相同的程序,只是需要将SFC中的DEST_ID(对方的MPI地址)改为W#16#2。
SFC 69“X_ABORT”的参数REQ为1时,将会中断一个由SFC“X_SEND”、“X_GET”或“X_PUT”建立的连接。如果上述SFC的工作已经完成(BUSY为0),调用SFC 69“X_ABORT”后,通信双方的连接资源被释放。
下面是服务器( CPU315 -2DP)的OB1中的程序:
L ID 0
T DB1.DBD 2 //用本站的ID0控制对方的QD0
L DB2.DBD 2
T QD 4 //用通信伙伴的ID0控制本站的QD4
OB100中的程序与项目MPI_UC_1的相同,调试程序的方法也与该项目基本上相同。
(部分原创文章应编辑稿费需求,每篇需要收取2元的稿费,如需查看全文请联系客服索取,谢谢理解!在线客服:)
点击排行
