您现在的位置是:首页 > PLC技术 > PLC技术

基于以太网的S7连接通信的通信程序

来源:艾特贸易2017-12-20

简介通信双方的发送程序和接收程序在 OB1 ,编程时应使用组态时生成的 S7 连接的 ID 号。 FB 8 和 FB 9 中的参数 R_ID 用于区分同一连接中不同的 SFB/FB 调用,发送方与接收方的 R_ID 应相同。为

    通信双方的发送程序和接收程序在OB1,编程时应使用组态时生成的S7连接的ID号。FB 8FB 9中的参数R_ID用于区分同一连接中不同的SFB/FB调用,发送方与接收方的R_ID应相同。为了区分两个方向的通信,令CPU 313C - 2DP发送的数据包(即CPU 315接收的数据包)的R_ID1CPU 315发送的数据包的R_ID2(见图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_CPCP 300”中。

    程序段1:发送数据

   L    ID    0

   T    DB1DBD  2    //用本站的IDO控制对方的QD4

   CALLUSEND,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#DB1DBX0.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#DB2DBX0.0 B YTE100  //本站存放读取的数据的地址区

   L    DB2DBD 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_ID2URCVR_ID1,它们的ID(连接号)均为1。在OB100中,发送区的数据字被初始化为W#16#2222

(部分原创文章应编辑稿费需求,每篇需要收取2元的稿费,如需查看全文请联系客服索取,谢谢理解!在线客服:艾特贸易网客服为您服务