对于自控或电气工程师来说,西门子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通信深度剖析相关推荐

  1. plc 上位机编译算法_什么是PLC与DDC PLC与DDC的区别

    DDC是由PLC发展而来的,但与PLC还是有所区别的.那么,什么是PLC与DDC呢?PLC与DDC的区别又是如何?一起往下了解吧! 一.什么是PLC与DDC(1)PLC的工作原理 PLC即可编程控制器 ...

  2. plc 上位机编译算法_西门子PLC的开放式TCP通信

    对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌:而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式. 相比较而言,西门子PLC对Soc ...

  3. C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)

    C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 20 ...

  4. java开发plc上位机软件开发_上位机开发之西门子PLC-S7通信实践

    写在前面: 就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况.然后对于西门子PLC来说,通信方式有很多,下面简单列举一下: ...

  5. C# / VB / LabVIEW / VC / Python 上位机使用S7-TCP协议与西门子PLC进行网口通信的教程 (Win/Linux)

    现在越来越多的项目开始使用上位机了,在上位机实现数据存储.曲线绘制时,使用高级语言自行开发程序,比各种组态软件更加自由,更加强大.在进行上位机软件开发时,第一步就是要跟PLC取得通信,能够读写PLC内 ...

  6. C#上位机开发源码基于RS485通讯总线的ModbusRtu协议,支持用户权限管理

    C#上位机开发源码 上位机项目源代码 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理.sqlite数据库.实时曲线.历史曲线.历史报表.导出Excel.主界面布局可调带记忆等功能 ...

  7. C#串口上位机的开发,基于杜洋的视频课程

    C#串口上位机的开发,基于杜洋的视频课程 上位机开发 1. 知识储备 2. 串口助手的开发 上位机开发 此教程参考 杜洋的C#教程 串口助手软件的开发共使用了如下的几个开发工具 a. 按钮 :butt ...

  8. plc通讯的握手信号_基于Modbus协议实现PLC与智能仪表的通讯

    1 引言 Modbus 协议是法国施耐德公司推出的一个全开放的"主从式(Master/Slave)"通讯协议,其本意在于实现上位机(主设备)对PLC(从设备)内部存储区域的&quo ...

  9. PLC上位机程序开发

    目标: 1.通过MC协议进行PLC上位机程序的编写 2.将学到的内容:异常捕获,tkinter显示图像 异常捕获十分方便程序开发时,当未每一个函数添加抛出异常时,可以方便判定错误出现的函数 3.生成e ...

最新文章

  1. 查看linux版本信息
  2. Thymeleaf一些标签的传字符串/message/消息
  3. Swagger 2——@ApiOperation注解、@ApiModel注解、@ApiImplicitParams注解、@ApiImplicitParam注解无效解决方案
  4. 自学linux指令分析-find
  5. Codeforces Round #497 (Div. 1)
  6. BOOT.INI文件的目的[微软提供]
  7. mysql的to datetime_mysql-笔记-datetime
  8. 无法加载_Microsoft store应用商店无法加载 问题解决
  9. 深度学习花书-5.4 估计、偏差和方差
  10. Spring Cloud Data Flow 2.0.1 GA 发布
  11. 计算机组成原理——指令格式设计
  12. 解决DOS窗口中文乱码问题
  13. 基于时间窗的AGV调度算法优化
  14. 【metasploit】1 渗透测试与metasploit基础介绍 [PTES|msf|armitage安装]
  15. 汇编jnl_汇编指令
  16. 【数据结构与算法分析1.2】编写一个程序求解字谜游戏问题
  17. 正弦定理、余弦定理及解三角形
  18. selenium: 网页打开最大化
  19. 公司最大的内卷,是“管理错位”
  20. 涂抹mysql 完整_涂抹MYSQL-跟着三思一步一步学MySQL

热门文章

  1. [TimLinux] JavaScript AJAX接收到的数据转换为JSON格式
  2. A1136 | 字符串处理、大整数运算
  3. Class.forName(com.mysql.jdbc.driver);
  4. BZOJ4360 : achievement
  5. squid不能启动问题及解决方法
  6. [转载] python字符串数组字典_Python:字符串、列表、元组、字典
  7. Nessus虚拟机的几个问题解决办法
  8. Ubuntu18.0.4配置Hadoop1.2.1环境
  9. 计数器:counter
  10. Angular07 利用angular打造管理系统页面