电工学习网

 找回密码
 立即注册
查看: 1822|回复: 0
打印 上一主题 下一主题

基于Socket访问西门子PLC调试应用

[复制链接]
跳转到指定楼层
楼主
发表于 2021-2-7 23:14:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
西门子plc是每个人都非常熟悉的一款PLC品牌,大家在使用西门子软件或者逛西门子论坛,经常会看到一个词叫做Open User Communication或开放式通信,其实就是TCP/UDP通信方式。我们可以从以下两张图中看出,分别为S7-200Smart编程软件Micro/Win Smart V2.5及博途TIA V15.1编程软件中关于通信库的部分截图:
基于Socket访问西门子PLC调试应用
基于Socket访问西门子PLC调试应用
        我们可以看到无论是西门子的中高端PLC还是低端PLC,都是支持开放式TCP/UDP通信的,本案例以西门子S7-1200PLC作为TCP服务器,上位机作为TCP客户端来实现上位机与PLC之间的通信。
1、PLC程序编写
(1)通过博图软件创建一个新的PLC项目根据硬件型号插入新设备,这里选择CPU 1214C DC DC DC
基于Socket访问西门子PLC调试应用
(2)双击PLC的以太网口,设置IP地址,这里设置为192.168.1.210
基于Socket访问西门子PLC调试应用
(3)创建一个新的DB块用于发送和接收数据,这里定义为DB100,其中SendBuffer和ReceiveBuffer分别为100个字节的数组,注意DB块要去除优化的块访问
基于Socket访问西门子PLC调试应用
(4)打开OB1,将指令TSEND_C拖拽至OB1的程序段1中,根据操作提示添加背景数据块
基于Socket访问西门子PLC调试应用
(5)在TSEND_C选择属性>组态>连接参数:
伙伴选择“未指定”
设置客户端主动建立连接
连接类型选择TCP
新建一个连接数据
连接ID设置为1
本地端口设置为2000
基于Socket访问西门子PLC调试应用
(6)双击CPU,启用系统存储区和时钟存储区字节,使用默认的MB0和MB1
基于Socket访问西门子PLC调试应用
(7)回到OB1,填写REQ和DATA,REQ采用1秒钟的脉冲,DATA为SendBuffer和ReceiveBuffer的结合
基于Socket访问西门子PLC调试应用
(8)将指令TRCV_C拖拽至OB1的程序段1中,根据操作提示添加背景数据块,连接数据选择之前创建好的
基于Socket访问西门子PLC调试应用
(9)回到OB1,填写ENR和DATA,ENR填写True,保持接收,DATA为ReceiveBuffer
基于Socket访问西门子PLC调试应用
(10)编译PLC程序,下载PLC程序
基于Socket访问西门子PLC调试应用
(11)打开NetAssist连接PLC,进行通信测试 :
设置TCP Client
远程主机地址填写PLC的IP
端口号填写设置的2000
接收选择Hex显示
点击连接
观察返回数据及长度
基于Socket访问西门子PLC调试应用
2、上位机程序编写
        PLC作为TCP服务器,上位机作为TCP客户端,因此上位机开发流程就是TCP客户端的编写流程,如下图所示:

基于Socket访问西门子PLC调试应用
    TCP客户端编程步骤:
客户端初始化 Socket,得到文件描述符
客户端调用Connect,连接服务器
连接成功调用Send向客户端发送消息
通过Receive接收客户端消息
     根据上述流程编写UI界面如下图所示:
基于Socket访问西门子PLC调试应用
         PLC程序中,每隔一秒钟会往客户端中发送200个字节数据,因此只要我们连接上服务器,然后通过开启一个线程来持续接收,即可获取到PLC发送的数据。
来源:西门子工业技术论坛

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-26 08:46

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表