plc 上位机编译算法_基于西门子PLC的Socket通信深度剖析
对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌;而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式。西门子的200Smart PLC,可以利用它来跟大家聊聊Socket通信的那些事儿。
相比较而言,西门子PLC对Socket通信的支持性是很不错的。如果你在使用西门子软件或者逛西门子论坛时,发现一个词叫做Open User Communication或开放式通信,没错,那其实就是我们说的Socket通信方式。关于这一点,我们可以从以下两张图中看出,分别为S7-200Smart编程软件Micro/Win Smart V2.5及博途TIA V15.1编程软件中关于通信库的部分截图:
我们可以看到无论是西门子的中高端PLC还是低端PLC,都是支持开放式TCP/UDP通信的,既然都支持,我们来看下如何实现。
众所周知,对于Socket通信来说,是可以支持TCP、UDP等多种通信方式,但是今天在这里,我们主要针对TCP这种通信方式。除此以外,大家都知道,Socket会存在服务器和客户端的说法,也就意味着,同样是使用Socket通信,我们仍然需要确定到底PLC是作为服务器还是作为客户端,因为不管对于PLC编程或者上位机开发来说,这两种方式都是完全不同的,下面做具体介绍。
一、PLC作为TCP服务器的实战应用
(1)PLC编程
1.1:创建一个TCPServer的子程序,拖拽一个TCP_CONNECT的库指令,对于该指令的每个引脚对应的含义,大家可以按下F1直接获取在线帮助,程序段1编写如下图所示:
1.2:拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为1,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示:
1.3:拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为1,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示:
1.4:最后需要编译,编译会提示需要给库分配地址,点击文件下的存储器,给该库分配地址即可,然后在MAIN主程序中调用TCPServer这个子程序,并下载到PLC中,PLC编程部分结束。
(2)TCP调试助手测试
如果PLC程序编写没问题,打开一个网络调试助手,输入对应的IP地址及端口号,即可连接上服务器。
连接服务器后,PLC端会自动每隔一秒发送200个字节数据过来,这200个字节即对应VB100-VB299的值。
(3)上位机客户端软件开发
通过与编程软件的状态图表进行对照,可以实时读取PLC数据,并随时设置相应的数值。
二、PLC作为TCP客户端的实战应用
(1)PLC编程
1.1:创建一个TCPClient的子程序,拖拽一个TCP_CONNECT的库指令,与服务器程序不同的是,这里需要把Active设置为ON,同时IP地址和端口号需要根据上位机实际情况填写,程序段1编写如下图所示:
1.2:拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为2,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示:
1.3:拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为2,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示:
1.4:最后需要编译,如果已经编写过服务器程序,这里就不需要分配地址了,直接在MAIN主程序中调用TCPClient这个子程序,并下载到PLC中,PLC编程部分结束。
(2)TCP调试助手测试
如果PLC程序编写没问题,打开一个网络调试助手,设置模式为TCP Server,输入端口号为2000,即可开启服务器。
服务器开启后,PLC端会自动连接服务器,并且每隔一秒发送100个字节数据过来,这100个字节即对应VB500-VB599的值。
(3)上位机服务器软件开发
通过与状态图表进行对比,验证可以正常读取和写入PLC数据。
三、整体总结
后续通过进一步测试,验证PLC可以同时作为服务器和客户端与上位机进行通信。本次主要针对西门子PLC的开放式TCP通信作了较为详细地阐述,由于篇幅有限,无法将上位机部分的具体编程代码进行展示分析。
plc 上位机编译算法_基于西门子PLC的Socket通信深度剖析相关推荐
- plc 上位机编译算法_什么是PLC与DDC PLC与DDC的区别
DDC是由PLC发展而来的,但与PLC还是有所区别的.那么,什么是PLC与DDC呢?PLC与DDC的区别又是如何?一起往下了解吧! 一.什么是PLC与DDC(1)PLC的工作原理 PLC即可编程控制器 ...
- plc 上位机编译算法_西门子PLC的开放式TCP通信
对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌:而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式. 相比较而言,西门子PLC对Soc ...
- C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)
C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 20 ...
- java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践
写在前面: 就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况.然后对于西门子PLC来说,通信方式有很多,下面简单列举一下: ...
- C# / VB / LabVIEW / VC / Python 上位机使用S7-TCP协议与西门子PLC进行网口通信的教程 (Win/Linux)
现在越来越多的项目开始使用上位机了,在上位机实现数据存储.曲线绘制时,使用高级语言自行开发程序,比各种组态软件更加自由,更加强大.在进行上位机软件开发时,第一步就是要跟PLC取得通信,能够读写PLC内 ...
- C#上位机开发源码基于RS485通讯总线的ModbusRtu协议,支持用户权限管理
C#上位机开发源码 上位机项目源代码 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理.sqlite数据库.实时曲线.历史曲线.历史报表.导出Excel.主界面布局可调带记忆等功能 ...
- C#串口上位机的开发,基于杜洋的视频课程
C#串口上位机的开发,基于杜洋的视频课程 上位机开发 1. 知识储备 2. 串口助手的开发 上位机开发 此教程参考 杜洋的C#教程 串口助手软件的开发共使用了如下的几个开发工具 a. 按钮 :butt ...
- plc通讯的握手信号_基于Modbus协议实现PLC与智能仪表的通讯
1 引言 Modbus 协议是法国施耐德公司推出的一个全开放的"主从式(Master/Slave)"通讯协议,其本意在于实现上位机(主设备)对PLC(从设备)内部存储区域的&quo ...
- PLC上位机程序开发
目标: 1.通过MC协议进行PLC上位机程序的编写 2.将学到的内容:异常捕获,tkinter显示图像 异常捕获十分方便程序开发时,当未每一个函数添加抛出异常时,可以方便判定错误出现的函数 3.生成e ...
最新文章
- 查看linux版本信息
- Thymeleaf一些标签的传字符串/message/消息
- Swagger 2——@ApiOperation注解、@ApiModel注解、@ApiImplicitParams注解、@ApiImplicitParam注解无效解决方案
- 自学linux指令分析-find
- Codeforces Round #497 (Div. 1)
- BOOT.INI文件的目的[微软提供]
- mysql的to datetime_mysql-笔记-datetime
- 无法加载_Microsoft store应用商店无法加载 问题解决
- 深度学习花书-5.4 估计、偏差和方差
- Spring Cloud Data Flow 2.0.1 GA 发布
- 计算机组成原理——指令格式设计
- 解决DOS窗口中文乱码问题
- 基于时间窗的AGV调度算法优化
- 【metasploit】1 渗透测试与metasploit基础介绍 [PTES|msf|armitage安装]
- 汇编jnl_汇编指令
- 【数据结构与算法分析1.2】编写一个程序求解字谜游戏问题
- 正弦定理、余弦定理及解三角形
- selenium: 网页打开最大化
- 公司最大的内卷,是“管理错位”
- 涂抹mysql 完整_涂抹MYSQL-跟着三思一步一步学MySQL
热门文章
- [TimLinux] JavaScript AJAX接收到的数据转换为JSON格式
- A1136 | 字符串处理、大整数运算
- Class.forName(com.mysql.jdbc.driver);
- BZOJ4360 : achievement
- squid不能启动问题及解决方法
- [转载] python字符串数组字典_Python:字符串、列表、元组、字典
- Nessus虚拟机的几个问题解决办法
- Ubuntu18.0.4配置Hadoop1.2.1环境
- 计数器:counter
- Angular07 利用angular打造管理系统页面