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

单向S7通信

来源:艾特贸易2017-06-05

简介在下面的单向 S7 通信例程中, S7-300 和 S7-400 分别作为服务器 (Server) 和客户机 ( Client) ,通过集成的 DP 接口和 SFB PUT/GET 进行 PROFIBUS-57 通信。 图 7-18 网络与连接的组态 (1) S7 连接的组态

在下面的单向S7通信例程中,S7-300S7-400分别作为服务器(Server)和客户机( Client),通过集成的DP接口和SFB PUT/GET进行PROFIBUS-57通信。

网络与连接的组态

7-18 网络与连接的组态

(1) S7连接的组态

STEP 7中创建一个项目,生成两个站,CPU模块分别为CPU 413-2 DPCPU 315-2 DP,点击SIMATIC管理器中的按钮,打开网络组态工具NetPro,将两个站连接在MPI网络上,设置它们的MPI站地址分别为23

选中2号站的CPU 413-2DP所在的小方框,在NetPro下面的窗口出现连接表(见图7-18)。双击连接表中的第1行,在出现的“插入新连接”对话框中(见图7-19),系统默认的通信伙伴为同一项目中的CPU 315-2DP,在“连接”区的“类型”选择框中,默认的连接类型为S7连接。

点击“确定”按钮确认默认值后,出现“属性- S7连接”对话框(见图7-19)。在调用通信SFB时,将会用到“块参数”区内的“本地ID”(本站的标识符)。

 建立新的连接

7-19 建立新的连接

S7-300S7-400之间只能建立单边的连接,S7-400可以用SFB PUT/GET主动读、写S7-300的存储区,S7-300不能访问S7-400的存储区。

在“本地连接端点”区,可以看到多选框“单向”被自动选中,不能更改。点击“地址详细信息”按钮,可以查看地址的详细信息。

选中图7-183号站的CPU所在的小方框,因为是单边连接,连接表中没有连接信息。

(2)单向S7通信的编程

S7-400SFB PUT/GET最多可以读、写4组数据。下面是S7-400100ms循环执行一次的组织块OB35中的程序:

程序段1DB1DBW1

L  DB1DBW 0

+  1

T  DB1DBW 0    //100msDB1DBW01

下面是S7-400081中的程序:

程序段1:读取通信伙伴的数据

CALLGET”,DB 14    //SFC 14

REQ =M0.0    //通信请求,七升沿时激活据传输

ID =W#16#1    //S7连接号

NDR =M0.1    //操作成功完成为1

ERROR =M0.2    //错误标志,出错时为1

STATUS =MW2    //状态字,为O时表示没有警告和错误

ADDR_1 =P#DB1DBX0.0 BYTE 20    //要读取的通信伙伴的数据区地址指针1

ADDR_2 =P#DB1DBX30.0 BYTE 20    //要读取的通信伙伴的数据区地址指针2

ADDR_3 =P#1 0.0 BYTE 2    //要读取的通信伙伴的数据区地址指针3

ADDR_4 =P#M 20.0 BYTE 20    //要读取的通信伙伴的数据区地址指针4

RD_1 =P#DB2. DBX0.0 BYTE 20    //本站存放读取的数据的数据区地址指针1

RD_2 =P#DB2DBX30.0 BYTE 20    //本站存放读取的数据的数据区地址指针2

RD_3 =P#Q  0.0 BYTE 2   //本站存放读取的数据的数据区地址指针3

RD_4 =P#M  20.0 BYTE 20    //本站存放读取的数据的数据区地址指针4

程序段3:向通信伙伴的数据区写入数据

CALL "PUT”,DB 15    //SFC 15

REQ =M10.0    //通信请求,上升沿时激活数据交换

ID =W#16#1    //S7连接号

DONE =M10.1    //任务被正确执行时为1

ERROR =M10.2    //错误标志,出错时为1

STATUS =MW12    //状态字,为0时表示没有警告和错误

ADDR_1 =P#DB2DBX0.0 BYTE 20    //要写入的通信伙伴的数据区地址指针1

ADDR_2 =P#DB2DBX30.0 BYTE 20    //要写入的通信伙伴的数据区地址指针2

ADDR_3 =P#Q 4.0 BYTE 2    //要写入的通信伙伴的数据区地址指针3

ADDR_4 =P#M 40.0 BYTE 20    //要写入的通信伙伴的数据区地址指针4

SD_1 =P#DB1DBX0.0 BYTE 20    //本站CPU数据发送区地址指针1

SD_2 =P#DB1DBX30.0 BYTE 20    //本站CPU数据发送区地址指针2

SD_3 =P#I 0.0 BYTE 2    //本站CPU数据发送区地址指针3

SD_4 =P#M 40.0 BYTE 20    //本站CPU数据发送区地址指针4

在调用SFB PUTGET时,允许只使用4个变量中的部分变量。通过CPU413- 2DP读、写CPU315- 2DP中的数据,实现了用两个站的IW0分别控制对方的QW0QW4

在例程MPI_S7_1中,两台CPUOB1都没有编程。在CPU 315- 2DP100ms执行一次的OB35中,将DB1. DBW01

在通信双方的OB100中,将存放接收数据的部分地址清零,给存放待发送数据的部分地址置初始值。并在变量表中监视这些地址,观察通信的实现情况。

(3)通信的监控

将程序和系统数据分别下载到两台CPU后,用电缆连接两台CPU和计算机的MPI接口,同时打开两个站的变量表,在屏幕上同时显示两个变量表中的动态数据。在运行时观察是否能用一个站的输入IW0控制另一个站的输出QW0QW4,发送方的DB1. DBW0和接收方的

DB2. DBW0的值是否基本上同步变化。图7-20和图7-21是在运行时复制的状态表,只监视了各地址区的第一个变量和最后一个变量。用变量表改变M0.0M10.0的状态,产生通信块的通信请求信号。

CPU 413- 2DP的变量表

    7-20    CPU 413- 2DP的变量表

CPU 315-2DP的变量表

    7-21    CPU 315-2DP的变量表