• S7-1200PLC与上位机ModbusTCP通信


    ​ 西门子PLC作为市场占有率非常高的一款PLC,支持Profinet、Profibus、S7、Modbus、TCP等多种通信协议,本案例以S7-1200 PLC为例,主要讲述使用西门子PLC作为ModbusTCP服务器,上位机作为ModbusTCP客户端的应用场景。西门子S7-1200 PLC并不支持直接ModbusTCP,需要编写一些PLC程序,PLC程序的主要目的是通信参数及地址映射的设置。

    【新阁在线教育 服务号:thinger_as】

    1. PLC程序编写

    步   骤操作说明
    1 通过博图软件创建一个新的PLC项目,
    根据硬件型号插入新设备,这里为
    CPU 1214C DC DC DC
    2 双击PLC的以太网口,设置IP地址,
    这里设置为192.168.1.210
    3 创建一个新的DB块用于数据传输,定义为DB100,其中<ModbusData为200个
    字节的数组,注意DB块要去除优化的块
    访问
    4 打开OB1,将指令MB_SERVER拖拽至OB1的程序段1中,根据操作提示,添加背景数据块
    5 将MB_SERVER功能块各个引脚填写完整:
    (1)DISCONNECT设置为False
    (2)CONNECT_ID设置为1
    (3)IP_PORT使用默认502
    (4)MB_HOLD_REG使用创建的ModbusData
    6 编译PLC程序,下载PLC程序

     

    2. Modbus地址映射

    PLC程序编写完成后,下一步进行Modbus测试,在测试之前,首先明确Modbus地址与PLC地址的映射关系:

    由上表可知,Modbus的0区、1区和3区,分别对应PLC的过程映像输出、过程映像输入和过程映像输入,但实际应用中,这三个区应用较少,主要使用的是4区,4区的映射地址是由自己设置,也就是MB_HOLD_REG。

    3. 通信功能测试

    下面我们使用ModbusPoll软件来针对各个区做下简单的测试,具体如下所示:

    • 输出Q点对应0区:该存储区是可读可写的,可以通过ModbusPoll读取到PLC中Q点的值,也可以进行写入,PLC监控及Modbus软件监控结果如下:

    • 输入I点对应1区:该存储区是只读的,可以通过ModbusPoll读取到PLC中I点的值,PLC监控及Modbus软件监控结果如下:

    • 过程输入存储区对应3区:该存储区是只读的,可以通过ModbusPoll读取到PLC中输入存储区的值,PLC监控及Modbus软件监控结果如下:

    • 创建的DB存储区对应4区:该存储区是可读可写的,可以通过ModbusPoll读取到PLC中DB存储区的值,也可以进行写入,PLC监控及Modbus软件监控结果如下:

    4. 写在最后

           公司开通了服务号,用于活动通知。针对本群粉丝,直接扫描下方二维码,关注新阁教育公众号,后台回复【抽奖】,奖品丰厚,先到先得。

     

  • 相关阅读:
    Spring Data框架
    Flutter入门坑一Could not resolve com.android.tools.build:gradle:3.2.1.
    圆形图像
    MissingPluginException(No implementation found for method getDatabasesPath on channel com.tekartik.sqflite)
    flutter应用打包、修改图标、启动页和app名字
    sqflite常用操作
    Flutter解决神奇的ListView顶部多一段空白高度的问题
    Flutter-CircleAvatar圆形和圆角图片
    flutter 报错 DioError [DioErrorType.DEFAULT]: Bad state: Insecure HTTP is not allowed by platform
    【flutter 溢出BUG】 bottom overflowed by xxx PIXELS
  • 原文地址:https://www.cnblogs.com/xiketang/p/13540698.html
Copyright © 2020-2023  润新知