zoukankan      html  css  js  c++  java
  • 2台S7-1200使用S7协议GET/PUT通讯

    兼容性:

    软件版本:最低 TIA PORTAIL V11。

    硬件版本:最低 2.0。
    连接数:3个用于服务器端(被动)连接,8个用于客户端(主动)连接。
    编程示例:
    这个示例演示两台S7 1200 PLC之间使用S7协议进行通讯,使用的IDE是TIA PORTAIL V13。
    新建一个项目,在“项目树”里双击“添加新设备”,添加两台PLC,这里以CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0)为例。
    其中PLC_1为客户端(主站),PLC_2为服务器(从站)。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在项目树双击“设备与网络”按住PLC_1的“Ethernet接口(绿色方块)”,拉到PLC_2的Ethernet接口上,建立一个子网。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
     
    点击左上角的“连接”按钮,可以看到PLC变为蓝绿色。在PLC_1上右键,点击“添加新连接(N)”按钮
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在弹出的窗口中,在左侧选择PLC_2,右上角类型选择“S7连接”右下角勾选“主动建立连接”。点击“添加”后关闭窗口。
    如果需要和其他不是本项目的兼容S7协议的设备通信,则选择未指定。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在设备与网络里能找到已建立的连接
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    回到项目树,双击PLC_2中的“设备组态”,右击PLC,点“属性”,在“常规-保护-连接机制”中勾选“允许借助 PUT/GET 通信从远程伙伴访问”
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在“常规-PROFINET接口-以太网地址”在IP协议中选中“在项目中设置IP地址”。填写IP地址为192.168.0.11,子网掩码255.255.255.0。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯

    在“PLC_2-程序块”中双击“添加块”,添加2个DB块,这里命名分别为GET_Data,PUT_Data,编号分别为1、2。
    在2个块中建立名为Data,类型为int的变量。名称、类型可任意指定。
    PLC_1将从GET_Data中读取数据,向PUT_Data中写入数据。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在“PLC_2-程序块”中右击“GET_Data”点击“属性”。取消勾选“优化的块访问”确认保存,PUT_Data块也这样操作。
    至此PLC_2的编程工作完毕,若想在最后的通信中看到效果,可以在GET_Data块中初始化一些数据,这里就不写了。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在“PLC_1-程序块”中双击“添加块”添加一个DB块,命名为"Recv_Data",块号为1,在块中添加类型为int的变量“Data”创建完成后同样要取消块的优化访问。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在“PLC_1-PLC变量”中,双击“默认变量表”,如图所示建立变量
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    打开“PLC_1-程序块”的“Main[OB1]”,在右侧指令窗口中找到“通信-S7通信-GET”拉到OB1的程序段1上。会提示创建DB块,确认即可。
    注意,若要和多个服务器通信,需要创建多个。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    在GET上右键属性,在“组态-连接参数-伙伴”的端点中选择刚才建好的那个PLC_2连接即可,如果选择未指定设备,则要填好对方的IP地址。
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    返回OB1,如图填好其他参数
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    参数说明:
    REQ:2Hz_clock //使用 2Hz 的时钟脉冲,上升沿激活发送任
    ID:W#16#100 //S7连接ID
    ADDR_1:P#DB1.DBX0.0 BYTE 2 //要读取对方(PLC_2)数据存储区地址指针,因为我们只读一个int,所以只有两个byte长度,不仅可以读DB块,I、Q、M等存储区也可读。
    RD_1:P#DB1.DBX0.0 BYTE 2 //自己用于存储接收数据的存储区指针。
    NDR:GET_NDR //为1时,读取完成
    ERROR:GET_ERROR //为1时,表示接收失败,有故障。
    STATUS:GET_STATUS //故障代码
    以上参数具体释义请查阅自带的信息系统。 
    以同样的方法,将“通信-S7通信-PUT”拉到OB1的程序段2,填好配置好属性及参数,如图
    [转载][西门子]S7-1200使用S7协议GET/PUT通讯
    参数说明:
    REQ:GET_NDR //使用读取成功的标志位,上升沿激活发送。
    ID:W#16#100 //S7连接ID
    ADDR_1:P#DB2.DBX0.0 BYTE 2  //要写入对方(PLC_2)数据存储区地址指针
    SD_1:P#DB1.DBX0.0 BYTE 2 //自己用于存储发送数据的存储区指针。这里我们将刚才读取的数据发送回去。
    DONE:PUT_DONE  //为1时,写入完成
    ERROR:PUT_ERROR //为1时,表示写入失败,有故障。
    STATUS:PUT_STATUS //故障代码
    至此编程工作已经全部结束,可以使用监视功能查看运行状况。
  • 相关阅读:
    NOIP2010提高组乌龟棋 -SilverN
    NOIP2009 提高组T3 机器翻译 解题报告-S.B.S
    controller向layout传值
    解决Yii2中刷新网页时验证码不刷新的问题
    关联表 重命名
    定义action的允许访问方式
    js 拷贝clone
    是否包含指定字符串
    indexOf()定义和用法
    直接借鉴的 ids拼接
  • 原文地址:https://www.cnblogs.com/laoxiongzhijia/p/13994629.html
Copyright © 2011-2022 走看看