前言

现代工业产线,与以往的技术方向发生了很大变化,更多的互联网元素(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级别,官方做过一个基准测试,测试方法如下

  1. 给PLC设置一个BOOL点位C0000和一个WORD点位H0000,开启50个读线程和50个写线程,运行 plc_read_node 和 plc_write_node 命令,测试两个命令的响应速度
  2. 给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)相关推荐

  1. PLC远程通讯功能集锦(互联网、局域网)(PLC远程监控,PLC远程监视,PLC手机监控)

    远程运维: 目前机械设备普遍存在问题如下: l  对于大多数PLC机械设备的故障诊断,基本上由人工去完成. 2  设备故障大部分是操作人员操作失误或软件故障引起的. 3  售后人员无法判断设备的故障点 ...

  2. plc控制可调节阀流程图_工业电气控制及PLC技术第四章可编程控制器及其工作原理ppt课件...

    PPT内容 这是工业电气控制及PLC技术第四章可编程控制器及其工作原理ppt课件下载,主要介绍了可编程控制器的产生和发展:可编程控制器的用途及特点:PLC的硬件组成:PLC的软件及应用程序编程语言:可 ...

  3. 三菱fx5u plc螺丝机项目整套程序(含触摸屏程序) 程序注释全面,用的三菱fx5u系列plc和威纶触摸屏、三菱伺服电机

    三菱fx5u plc螺丝机项目整套程序(含触摸屏程序) 程序注释全面,用的三菱fx5u系列plc和威纶触摸屏.三菱伺服电机. 文件包括plc程序.触摸屏程序.电气图.IO地址分配表.电气BOM表.伺服 ...

  4. 2022-02-21 WPF上位机 121-三菱PLC协议读写代码的封装

    文章目录 一.三菱PLC协议读写代码的封装 1.base基类封装 2.Result返回结果 3.A1E封装 4.QNA3E的封装 5.使用 一.三菱PLC协议读写代码的封装 1.base基类封装 pu ...

  5. 2021-12-20 WPF上位机 121-三菱PLC协议读写代码的封装

    文章目录 一.三菱PLC协议读写代码的封装 1.base基类封装 2.Result返回结果 3.A1E封装 4.QNA3E的封装 5.使用 一.三菱PLC协议读写代码的封装 1.base基类封装 pu ...

  6. C#使用Modbus协议读写汇川PLC的M区寄存器(测试示例),接上篇

    对汇川PLC采用Modbus-TCP进行读写寄存器测试示例 新建WinForms应用程序InovancePlcDemo,.net framework 4.5. 重命名窗体名为FormInovanceP ...

  7. 关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析)

    关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析) 这是数年前给一个公司做的:使用WireShark抓包分析程序问题:是使用WireShark分析程序涉及到网 ...

  8. 编写AXI4协议读写BRAM并仿真验证

    前篇博文我们试验了AXI4-Lite协议读写BRAM,这里我们试验一下完整的AXI4协议.流程跟AXI4-Lite是一样的.省略的部分请参考:编写AXI4-Lite协议读写BRAM并仿真验证 一. 建 ...

  9. 2021-12-14 WPF上位机 114-欧姆龙协议读写代码的封装

    文章目录 一.欧姆龙协议读写代码的封装 1.base基类封装 2.Result返回结果 3.FinsTcp封装 4.使用 一.欧姆龙协议读写代码的封装 1.base基类封装 public enum A ...

最新文章

  1. batch normalization
  2. Centos 7 解压文件
  3. 657. Robot Return to Origin 机器人能否返回原点
  4. YOUR GUIDE TO Lowering YourCholesterol With TLC学习笔记(暂时没有完成)
  5. ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
  6. Python数据库编程pymysql
  7. tomcat如何进入管理页面 manager/html 配置方法
  8. 简单com编写流程及注册事项
  9. SpringSecurity框架【详解】
  10. 路西法第一季为什么会被打伤_海贼王:路飞新招式‘红岩枪’,这次把凯多打伤了,大妈震惊...
  11. 微博市值破百亿,真的只是恰巧赶上奥运了吗?
  12. [转载] 实现宿主机和VirtualBox下虚拟机ping相通教程
  13. java swing获得焦点_Java Swing TextArea 滚动条并获取焦点
  14. 网站推广 seo优化 教程102条
  15. Python实战项目—金融量化分析(数据的简单预处理)
  16. java 字符长度判断_java判断中文字符串长度的简单实例
  17. echarts折线图和柱状图结合绘制
  18. 开发power apps canvas时用到的一些公式和小技能
  19. 常用工具及常用解决方案
  20. makefile suppress echoing the actual command @

热门文章

  1. 射频同轴连接器的设计参数与产品类型介绍
  2. 增强团队创新力需要打造多样性团队
  3. 达梦数据库迁移数据失败,错误码:6002,消息校验异常
  4. jQuery表单提交和后台交互
  5. 【学习日记04】高数复习+学习周报
  6. ffmpeg将yuv数据编码为H264格式数据
  7. 【vue】vue网站设计----模仿小米商城首页
  8. Chapter1.1:自动控制系统基本概念
  9. java stm32wifi模块_STM32F103RE单片机驱动88W8801 WiFi模块,如何提高TCP和UDP的传输速率...
  10. Python 炫技操作:Python 绘制属于你的世界地图