S7协议是SIEMENSS7系列产品之间通讯使用的标准协议 ,其优点是通信双方无论是在同一MPI总线上、同一PROFIBUS总线上或同一工业以太网中,都可通过S7协议建立通信连接,使用相同的编程方式进行数据交换而与使用何种总线或网络无关。S7通信分为按组态方式可分为单边通信和双边通信,单边通信通常应用于以下情况:
· 通信伙伴无法组态S7连接
· 通信伙伴无法停机
· 不希望在通讯伙伴侧增加通信组态或程序
本文介绍S7-400基于PROFIBUS总线的S7单边通信的组态步骤,用于实现两个独立项目之间的S7通信。
实验环境,见表1。
序号
名称
订货号
1
CR3导轨
6ES7 401-1DA01-0AA0
2
PS407
6ES7 407-0DA02-0AA0
3
CPU414-3
6ES7 414-3XM05-0AB0
4
STEP7 V11 SP2 update5
5
Windows 7 SP1
表1
2. 组态2.1配置S7-400站点S7-400站点配置参见表2。
序号
说明
图示
1.
创建新项目“S7-400one-way”后,单击“项目视图”
2.
双击项目树下的“添加新设备”功能,弹出添加新设备对话框
3.
在添加新设备对话框中的步骤:
a) 选择设备类型“PLC”
b) 选择使用的CPU型号
c) 选择使用的CPU的版本号
d) 勾选“打开设备视图”
点击“确定”按钮后将显示设备视图
4.
增加电源模块
5.
在设备视图中设置DP接口参数:
a) 点击工作区S7-400CPU的DP接口
b) 添加新子网
c) 设置S7-400的站地址为2
d) 将工作区切换到网络视图
6.
设置PROFIBUS总线参数:
a) 点击工作区内的PROFIBUS_1总线
b) 选择巡视窗口的属性标签中的“网络设置”
c) 设置传输率为1.5Mbps,标识号为标准,高PROFIBUS地址为126
7.
创建S7连接:
a) 点击工具栏“连接”图标,下拉框中选择S7连接
b) 鼠标右键点击CPU,在弹出菜单中选择“添加新连接”,出现“创建新连接”对话框
8.
在创建新连接对话框中做以下设置:
a) 确认连接类型为S7连接
b) 设定使用的本地接口,此处接口为PLC_1,DP接口_1(R0S2)
c) 设定连接ID,此处为1
d) 勾选“主动建立连接”复选框
点击“添加”按钮添加新连接,点击“关闭”按钮关闭创建新连接对话框
9.
展开网络视图列表区域,设置S7连接参数
a) 点击列表区域的“S7_连接_1”
b) 选择巡视窗口的属性标签中的“常规”
c) 设置伙伴地址,此处为3
10.
a) 选择巡视窗口的属性标签中的“地址详细信息”
b) 选择伙伴PLC的机架号和插槽号,示例中通信伙伴为S7-300,机架号为0,插槽号为2,TSAP为03.02
注:对于Profibus-S7通信:
· 通信伙伴为S7-300,TSAP为03.02
· 通信伙伴为S7-1200/1500,TSAP为03.01
· 通信伙伴为S7-200,TSAP 为03.00
11.
a) 点击工作区PLC_1站点
b) 点击编译图标,编译组态
c) 点击下载图标,下载组态到CPU中
表 1
S7-300站点配置参见表3。
序号
说明
图示
1.
创建新项目“s7-300”后,单击“项目视图”
2.
双击项目树下的“添加新设备”功能,弹出添加新设备对话框
3.
在添加新设备对话框中的步骤:
a) 选择设备类型“PLC”;
b) 选择使用的CPU型号
c) 选择使用的CPU的版本号
d) 勾选“打开设备视图”
点击“确定”按钮后将显示设备视图
4.
在设备视图中设置DP接口参数:
a) 点击工作区S7-300CPU的DP接口
b) 添加新子网
c) 设置S7-300站地址为3
d) 将工作区切换到网络视图
5.
设置PROFIBUS总线参数:
a) 点击工作区PROFIBUS_1总线
b) 选择巡视窗口的属性标签中的“网络设置”
6.
a) 点击工作区PLC_1站点
b) 点击编译图标,编译组态
c) 点击下载图标,下载组态到CPU中
表 3
3 通信连接
如图3-1示意图,使用RS485总线连接器通过PROFIBUS标准电缆分别连接CPU414-3DP 的X2接口和CPU315-2DP的X2 接口。
图3-1 CPU之间DP通信连接示意图
4 通信编程由于配置的是S7单边通信,只需在配置S7网络连接的一方进行编程,本例中只需要在CPU414-3DP中编程调用系统功能块SFB14/SFB15,如表4。
序号
说明
图示
1.
展开项目树,双击程序块下Main[OB1],在工作区中打开OB1
2.
a) 打开指令任务卡
b) 展开通信指令
c) 选择GET指令并拖拽至程序段1,按提示添加背景数据块
3.
展开巡视窗口,选择“属性”选项卡
a) 点击程序段1中GET功能块
b) 选择巡视窗口的“组态”标签页,点击“连接参数”
c) 点击“连接名称”后的“…”按钮在“连接概览”对话框中选择需要绑定的连接
4.
在连接概览对话框中选择需绑定到功能块的连接,此处为“S7_连接_1”,点击“确定”按钮完成连接选择
5.
为GET功能块设置参数
· REQ:控制参数 request,在上升沿时激活数据交换功能,此处为M0.0,系统自动为其分配符号名称“Tag_1”
· ADDR_1:指向通信伙伴 CPU 上待读取区域的指针,为P#M10.0BYTE10
· RD_1:指向本地 CPU 上用于写入已读数据的区域的指针,此为P#M100.0BYTE 10
注:此处功能块的调用结果是:REQ上升沿每执行一次,读取通信伙伴MB10~MB19当前的数据值,并保存至本地的MB100~MB109区域中
6.
重复步骤2~4,组态PUT功能块,设置参数:
· REQ:控制参数 request,在上升沿时激活数据交换功能,此处为M0.1,系统自动为其分配符号名称“Tag_2”
· ADDR_1:指向伙伴 CPU 上用于写入数据的区域的指针,此为P#M20.0BYTE10
· SD_1:指向本地 CPU 上包含要发送数据的区域的指针,此为P#M200.0BYTE 10
注:此处功能块的调用结果是:REQ上升沿每执行一次,本地MB200~MB209的当前数据值写入到通信伙伴MB20~MB29地址区域中
7.
右键单击项目树下程序块,在弹出对话框中选择“编译”->“软件”
8.
右键单击项目树下程序块,在弹出对话框中选择“下载到设备”->“软件(所有块)”