ARIES PLC110[M02]-MS4、HMI、OPC 和 SCADA,或者一个人需要多少洋甘菊茶。 第1部分

亲爱的本文读者,大家下午好。 我正在以评论的形式写这篇文章。

一点警告我想警告您,如果您从标题中立即明白我们在说什么,我建议您将第一点(实际上是 PLC 核心)更改为价格类别更高的任何内容。
从主观上来说,省多少钱都不值得这么紧张。

对于那些不怕一点白发和神经抽搐幅度的人来说,稍后我将详细描述这个技术奇迹是如何创造的。 本文对该项目进行了简要分析,并带有一定的批评。

起源。 问题的表述

实际上,我在一家设计局工作,我们测试自动化设备以集成到我们的交钥匙工厂中。 近日,OWEN设备抵达仓库,决定用它组装一个测试台:

  • PLC110[M02]-MS4(执行环境MasterSCADA 4D)
  • 操作面板 SP307
  • 通用模拟信号输入模块МВ110-224.2А
  • MV110-4TD应变片信号输入模块
  • 电气测量模块MV110-220.3M

系统结构 根据目的选择不同的网络:

  1. 基于RS-485的Modbus RTU - PLC和从站设备(模块、变频器、智能传感器、HMI面板SP307)、PLC网络主站之间的通信。
  2. 基于以太网的 Modbus TCP - 不同 PLC 之间以及与 OPC 服务器的通信
  3. OPC和SCADA系统PC服务器同时是两个不同网络(企业的公司LAN和控制器的Modbus TCP网络(两个网络适配器,使用标准Windows工具进行数据路由)之间的网关
  4. 公司局域网通过代理服务器访问互联网

系统总体结构如下图所示:

ARIES PLC110[M02]-MS4、HMI、OPC 和 SCADA,或者一个人需要多少洋甘菊茶。 第1部分

内置功能

  • 将数据从 PLC 收集并重定向到 OPC 服务器
  • 通过 HMI 面板进行本地控制和监控
  • 通过 OPC 服务器从 SCADA 进行控制和监控
  • 使用 SCADA 客户端从企业 LAN 和互联网的任何 PC 进行控制
  • 通过 LAN 和 Internet 连接移动 OPC 监视器
  • 当然,归档和报告生成

似乎什么都没有错过。 有一个系统的一般描述,现在,实际上,关于这个主题(我将在文章中描述消除方法以及每个节点的实现):

遇到的困难

1.PLC文档

制造商于 4 年表示,已在 MasterSCADA 2012D 核心上对所声明的 PLC 进行了 Beta 测试。 尽管这个概念的生命周期如此令人印象深刻,但开发人员在 2019 年所拥有的只是一本 28(!?)页的编程手册,其中几乎没有有用的信息,并且手册中的屏幕截图来自 MasterSCADA 3D,考虑到界面已经改变,这很有趣。

包含 20 个主题的论坛主题也得到了三名追随者和一名销售经理的积极支持。

2. PLC模块的架构

这是一个单独的主题来讨论。 简而言之:PLC 作为 Modbus RTU 从站设备与模块进行通信,这些模块必须首先由实用程序通过 RS-485 转换器将每个模块连接到 PC 来单独配置。

当然,聪明的人可能知道如何在没有转换器的情况下通过 PLC 来做到这一点,依次将模块连接到网络并写入必要的寄存器,但这需要经验和巨大的痛苦。

对于第一次看到这样的架构的开发人员来说,它一点也不人性化。
此外,所有模拟模块都喜欢因未知原因而失败,并带走 Terra Incognita 中的整个 RS-485 网络,但我也想单独谈论这个,当然,这是一个完整的史诗。 顺便说一句,这个问题已经有 10 年历史了,制造商对此一笑置之 “我们必须承认这些模板不适合我们”然而,这是与模块通信的唯一接口,人们很认真地编写他们的 Modbus RTU 实现很长时间了。

与此同时,甘菊茶已经用完了...... 太阳正在落山

3.IDE MasterSCADA

我们不会谈论图形工具;我还没有对它们进行广泛的测试,但我会立即说我不喜欢它。

我们正在谈论数据交换和IEC标准语言的实现:

控制器的物理输入和输出不是全局变量,无法通过编写别名(例如“DI1”)从程序的任何部分进行访问。 您应该使用句柄将其拖到每个程序中,在那里形成一个局部变量,它继承或传输该值。 那些。 在我看来,PLC 的本质有点迷失了:设备应该将物理通道操作的逻辑编程简化到级别 “如果输入 DI1 被触发,则打开输出 DO1”看起来像这样 “输入 DI1 - 变量 LI1 - 变量 LO1 - 输出 DO1”另外,由于对这个IDE原理的无知,你可能会收到一个令人愉快的警告“布尔-布尔转换是不可能的”(最有可能的是,其中一个是指针,但我想在创建者的编辑器中,它更和谐) 。

ST、FBD、SFC语言的库相当庞大,并且有一个易于编程的选择,但是,这些组件不是函数,而是嵌入方法的类,其次,大多数没有帮助描述功能和数据类型。 坚持不懈让我找到了 CodeSys 内核库,所有这些函数都取自其中,它们的帮助很有帮助。

4.与SP307面板互换

对于那些无处可去的人来说,这是一个非常有趣的活动。

对我来说,标准 GUI 测试(HMI 或 SCADA)需要进行 6 项测试:

  1. 读取离散信号
  2. 记录离散信号
  3. 读取整数值
  4. 写入整数值
  5. 读取真实值
  6. 写出真实的值

因此,我在屏幕上绘制了 6 个原始组件,并按顺序检查每个组件
交换与模块完全相同,但来自单独的 RS-232/485 PLC 端口,而且看起来更稳定。 由于它是一个HMI从站,所以我通过更改写入它,并以500ms轮询的方式读取它,以免错过操作员的操作。

前4点完成得很完美,但第5点和第6点却出现了问题。

我们发送 Single Float 类型的数据,将其显示在屏幕上,看到数据不一样,尽管所有输出设置(Float、维度 1 寄存器等)都是正确的。 如果说文档中没有描述先例,那是骗人的,但是,尝试找到哪个先例以及在哪里,从外面看很有趣。

在歇斯底里地搜索了有关数据本身及其发送的所有设置后, 我们写信给技术支持,平均5-6个日历日得到答复,我们按照标准技术支持脚本“检查电源是否打开 - 检查软件版本 - 请再等一周 - 让我们自己解决” ”.

顺便说一句,这是通过在一个绝对不合适的地方安装一个蜱虫和一个绝对不合适的签名来决定的。

屏幕内功能 不包括“Slider”格式的模拟信号输入,只能使用数字在文本字段中输入。 这简直太神奇了,要么我们自己编写“±”按钮和脚本,要么我们从键盘输入一个数字,而忘记某些驱动器的软控制。

我不会让这篇文章过多,因此我将在第 2 部分中描述顶层的问题。

综上所述, 我想指出的是,我有足够的自由和大量的时间来解决这些问题,乍一看似乎很有趣,但给受害者带来了很多痛苦。 在时间有限的情况下,面对这样的问题至关重要。

PS:这里提出的所有这些都是主观的,只是试图警告那些没有准备的人,而不是歧视厂家,我请你从这个角度来看待这篇文章。

第二部分已经在这里: 点击

来源: habr.com

添加评论