如何使用HTTP协议,读写PLC点位状态(含欧姆龙、三菱、西门子、施耐德、松下等PLC)
前言
现代工业产线,与以往的技术方向发生了很大变化,更多的互联网元素(REST,HTTP,H5,WEB),更多的编程语言(JAVASCRIPT,PYTHON,GO,Node.js)融入了工业生成的应用中,为工业互联网添砖加瓦;但随之产生的问题就是,老旧的PLC和PC开发方法,无法快速,简便的将数据流与上位系统,如SCADA、MES、HIM快速互联;
传统的模式是,通过C#针对不同的PLC开发对应的接口程序,然后将数据采集和控制,使用自定义协议,与上位系统对接,这种方法开发难度困难,而且维护和稳定性都有缺陷。
为了解决这个问题,近些年国内也有很多企业研发了通过单片机将PLC协议转译为HTTP,MQTT,MODBUS的通讯硬件,俗称PLC云网关;这种解决方案优势是显而易见的,首先解决了第一种方法的开发难度问题,其次稳定性也得到了很大的提升,但问题还是有的,就是成本,一般的云网关,一个大概在1-2k人民币左右,其次就是配置,由于是独立硬件,因此对于一个PLC就需要独立配置一次,现场数量少的话还好,如果现场PLC上几十台,配置本身成本也是个巨大的开销。
方案
目前还有一种比较前沿的做法,就是通过一个工控机或服务器,通过网口或者串口,直接与PLC进行挂接,然后将PLC的点位信息转存到上位系统,代表软件是付费的KepServer和免费的LECPServer。
软件中间件通讯框架图
我们这里选免费的LECPServer来做演示,需要说明的是,KepServer使用的是OPCUA和MQTT进行上位转译,具体的可以查看KepServer的使用说明。
配置说明
LECPServer的使用和配置还是比较简单的
首先是LECPServer的运行环境,.NET和VC2013是必须前置安装的
Microsoft .NET Framework 4.6.1 Download .NET Framework 4.6.1 Web Installer
Visual C++ Redistributable Packages for Visual Studio 2013 Download Visual C++ Redistributable Packages for Visual Studio 2013 from Official Microsoft Download Center
打开LECPServer图标,就是主界面
我们选用欧姆龙的PLC作为例子,在设备选项上点击“新加设备”,并且填入设备名称,这里我们填写 OFINS ,在设备栏的PLC_DEVICE里面选中OmronFinsNet,则使用欧姆龙的FinsTCP协议进行通讯,配置好PLC端的IP和端口,还有SA1、DA2值(SA1代表本机IP地址的最后部分,如本机IP地址是192.168.123.203,那SA1就填写203,DA2一般填写0或者1,这个根据PLC的UNIT号设置),点击设备配置的“应用”按钮,则提示保存成功,这样我们就成功添加了一个欧姆龙的PLC进去了。
接下来我们开始配置需要控制的PLC地址(则点位)
点击“+”号,添加一个节点,输入节点名称,如D100,在地址栏目填写D100,则这个地址栏定位到PLC的D100,选择节点的类型,这里我们选择FLOAT,浮点类型(32bit);长度,他们设置为5,则表明D100开始,由5个元素长度构成的FLOAT数组,实际使用到的32bit*5地址长度作为存储空间;配置完成后,点击“应用”,则可以看到连接标记的绿色色条亮起,并且值上有数据,则表明连接成功。
读写说明
接下来就是SCADA,MES通过HTTP协议去读写PLC点位的说明。
在LECPServer 1.0.9版本之后,提供了一个HTTP调试器工具,这个工具可以很方便的调试点位的读写,当然,你也可以使用第三方工具,如POSTMAN这种,甚至使用原生JS,Python程序达到同样的效果。
URL输入默认服务器地址 http://127.0.0.1:8088
发送内容写入
{"action":"plc_read_node", "node":"NODES.OFINS.D100"
}
点击发送,你可以看到返回值即是D100的点位数据
{"errcode":"0", "errmsg":"","rtval":[0, 34.3, 33.1, 0, 0]
}
当然你也可以批量的对点位进行读写操作,这里就不再赘诉了,具体操作可以参考LECPServer的使用说明。
关于效率
解决方案是否合适,读写效率可能是大家重点关心的话题,由于LECPServer使用的JLean框架编写,对于单个LECPServer读写效率,可以达到ms级别,官方做过一个基准测试,测试方法如下
- 给PLC设置一个BOOL点位C0000和一个WORD点位H0000,开启50个读线程和50个写线程,运行 plc_read_node 和 plc_write_node 命令,测试两个命令的响应速度
- 给PLC设置一个BOOL点位C0000和一个WORD点位H0000,开启50个读线程和50个写线程,运行 plc_read_nodes 和 plc_write_nodes 命令,测试两个命令的响应速度
结论,第一组测试结果,50个读线程和50个写线程,针对单个线程的读写返回时间在10ms-13ms,第二组测试结果,50个读线程和50个写线程,针对单个读写返回时间在20ms-24ms
后话:由于LECPServer是开源项目,你可以很轻松的在Github找到他的资料,并对他进行二次开发。
如何使用HTTP协议,读写PLC点位状态(含欧姆龙、三菱、西门子、施耐德、松下等PLC)相关推荐
- PLC远程通讯功能集锦(互联网、局域网)(PLC远程监控,PLC远程监视,PLC手机监控)
远程运维: 目前机械设备普遍存在问题如下: l 对于大多数PLC机械设备的故障诊断,基本上由人工去完成. 2 设备故障大部分是操作人员操作失误或软件故障引起的. 3 售后人员无法判断设备的故障点 ...
- plc控制可调节阀流程图_工业电气控制及PLC技术第四章可编程控制器及其工作原理ppt课件...
PPT内容 这是工业电气控制及PLC技术第四章可编程控制器及其工作原理ppt课件下载,主要介绍了可编程控制器的产生和发展:可编程控制器的用途及特点:PLC的硬件组成:PLC的软件及应用程序编程语言:可 ...
- 三菱fx5u plc螺丝机项目整套程序(含触摸屏程序) 程序注释全面,用的三菱fx5u系列plc和威纶触摸屏、三菱伺服电机
三菱fx5u plc螺丝机项目整套程序(含触摸屏程序) 程序注释全面,用的三菱fx5u系列plc和威纶触摸屏.三菱伺服电机. 文件包括plc程序.触摸屏程序.电气图.IO地址分配表.电气BOM表.伺服 ...
- 2022-02-21 WPF上位机 121-三菱PLC协议读写代码的封装
文章目录 一.三菱PLC协议读写代码的封装 1.base基类封装 2.Result返回结果 3.A1E封装 4.QNA3E的封装 5.使用 一.三菱PLC协议读写代码的封装 1.base基类封装 pu ...
- 2021-12-20 WPF上位机 121-三菱PLC协议读写代码的封装
文章目录 一.三菱PLC协议读写代码的封装 1.base基类封装 2.Result返回结果 3.A1E封装 4.QNA3E的封装 5.使用 一.三菱PLC协议读写代码的封装 1.base基类封装 pu ...
- C#使用Modbus协议读写汇川PLC的M区寄存器(测试示例),接上篇
对汇川PLC采用Modbus-TCP进行读写寄存器测试示例 新建WinForms应用程序InovancePlcDemo,.net framework 4.5. 重命名窗体名为FormInovanceP ...
- 关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析)
关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析) 这是数年前给一个公司做的:使用WireShark抓包分析程序问题:是使用WireShark分析程序涉及到网 ...
- 编写AXI4协议读写BRAM并仿真验证
前篇博文我们试验了AXI4-Lite协议读写BRAM,这里我们试验一下完整的AXI4协议.流程跟AXI4-Lite是一样的.省略的部分请参考:编写AXI4-Lite协议读写BRAM并仿真验证 一. 建 ...
- 2021-12-14 WPF上位机 114-欧姆龙协议读写代码的封装
文章目录 一.欧姆龙协议读写代码的封装 1.base基类封装 2.Result返回结果 3.FinsTcp封装 4.使用 一.欧姆龙协议读写代码的封装 1.base基类封装 public enum A ...
最新文章
- batch normalization
- Centos 7 解压文件
- 657. Robot Return to Origin 机器人能否返回原点
- YOUR GUIDE TO Lowering YourCholesterol With TLC学习笔记(暂时没有完成)
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
- Python数据库编程pymysql
- tomcat如何进入管理页面 manager/html 配置方法
- 简单com编写流程及注册事项
- SpringSecurity框架【详解】
- 路西法第一季为什么会被打伤_海贼王:路飞新招式‘红岩枪’,这次把凯多打伤了,大妈震惊...
- 微博市值破百亿,真的只是恰巧赶上奥运了吗?
- [转载] 实现宿主机和VirtualBox下虚拟机ping相通教程
- java swing获得焦点_Java Swing TextArea 滚动条并获取焦点
- 网站推广 seo优化 教程102条
- Python实战项目—金融量化分析(数据的简单预处理)
- java 字符长度判断_java判断中文字符串长度的简单实例
- echarts折线图和柱状图结合绘制
- 开发power apps canvas时用到的一些公式和小技能
- 常用工具及常用解决方案
- makefile suppress echoing the actual command @
热门文章
- 射频同轴连接器的设计参数与产品类型介绍
- 增强团队创新力需要打造多样性团队
- 达梦数据库迁移数据失败,错误码:6002,消息校验异常
- jQuery表单提交和后台交互
- 【学习日记04】高数复习+学习周报
- ffmpeg将yuv数据编码为H264格式数据
- 【vue】vue网站设计----模仿小米商城首页
- Chapter1.1:自动控制系统基本概念
- java stm32wifi模块_STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率...
- Python 炫技操作:Python 绘制属于你的世界地图