Engee 文档
Notebook

开放式自动控制系统:通过Modbus TCP与Severstal的开放式软件PLC进行数据交换

该项目正在考虑开始集成一个开放的自动化过程控制系统和面向模型的开发环境Engee

导言

一个开放的自动化过程控制系统在这个例子中由一个远程客户端表示-一个开放的软件可编程逻辑控制器在Severstal PLC实时操作(OpenSoftPLC)。PLC控制面板上运行带复位的增量计数器程序。 PLC OP和Engee之间的数据交换通过Modbus TCP进行,而Engee作为Modbus主站,形成控制信号并从PLC OP寄存器读取数据。 Engee通过Modbus TCP访问Modbus从站由外部支持оборудования.

开放式自动化控制系统

[开放式自动化过程控制系统](https://habr.com/ru/companies/severstal/articles/895342 /)(自动化过程控制系统)是俄罗斯国家工业自动化平台,由[跨学科工作组](https://openapc.ru /)在俄罗斯联邦工业和贸易部的支持下。 它的目标是创建一个独立于供应商,模块化和安全的生态系统,用于管理生产流程,能够取代国外解决方案(西门子,通用电气等)。). 该项目由俄罗斯最大的工业公司发起,包括Severstal,EuroChem,Gazprom Neft,LUKOIL等。

开放式自动化过程控制系统的技术基础目前由OP PLC和基于[4diac FORTE]的集成开发环境(IDE)组成(https://gitverse.ru/IT_Severstal/4diac-forte )。 它是一个开源环境,支持分布式过程控制系统的面向事件范式的开发。 这种设计现代自动化过程控制系统的方法在国际标准[IEC61499](https://habr.com/ru/articles/676392 /)。

开放式软件PLC

开源软件PLC(OP PLC)和IDE正在由It公司Severstal-Infocom(PJSC Severstal的一部分)开发。 . 为了与Engee集成,在这个例子中,启动了一个带有OP PLC的远程虚拟机。 使用Modbus TCP协议与PLC交换数据。 PLC OP充当Modbus从站-它接收来自Engee的离散计数器复位信号,PLC控制图中的增量计数器将其当前值传输到打开的寄存器进行读取。 Engee不仅复位计数器,还从这些寄存器读取当前值。

PLC OP控制图

控制[功能框图](https://habr.com/ru/companies/severstal/articles/905334 /)在4DIAC FORTE中编译的PLC规范如下所示。

image.png

控制图的主要元素:

  • FB_CTU -增量计数器的块:

    • R -复位输入,

    • CU -直接帐户输入,

    • PV = 6500 -设定值,

    • CV -电流值的输出。

  • MSLAVE_8_tcp -Modbus TCP从站配置块:

    • QI = true -数据定义输入,
    • PARAMS = '{"host": "158.160.19.43:1502", "update": "500ms", "id":"1" }' -块参数:Modbus TCP从站地址和端口,更新周期,标识符。
    • IO0 = '.IX' -传输数据源的输入,
    • IO1 = '.QW' -传输数据源的输入。
  • IX -离散数据输入单元:

    • QI = true -数据定义输入,

    • PARAMS = 'c10' -离散数据的存储地址("线圈10")的确定,

    • IN -数据输出。

  • F_IN_TO_WORD -数据转换单元从格式 integer 在格式 word:

    • IN -输入格式数据 integer,

    • OUT -格式化数据输出 word.

  • QW -格式化数据输出块 word:

    • QI = true -数据定义输入,

    • PARAMS = 'h12' -数据的存储地址("保持寄存器12")的确定,

    • OUT -数据输入。

组装并运行图表以执行后,您可以查看和调试其元素的操作。:

image.png

检查连接

在与Engee集成之前,请确保图中定义的PLC OP的地址和端口是可读的。 您可以使用该实用程序执行此操作 mbpoll,使用以下命令:

``'bash
mbpoll-t4-a1-r13-c3 158.160.19.43-p1502


执行命令时,我们应该看到Modbus TCP从站保持寄存器中记录的当前计数器值。:

image.png

已建立与Modbus TCP从站在指定地址的通信,从指定寄存器(具有偏移量)读取成功,并且计数器值递增。 因此,与开放式自动化过程控制系统操作相关的项目准备部分已经成功完成,我们可以继续进行准备部分并与Engee合作。

示例模型

模型 open_soft_plc_counter.engee 它包含以下接口块:

*Modbus TCP设置-安装Modbus TCP连接。 必须在其中指定Modbus TCP从站地址。 - 158.160.19.43 和港口 - 502,

*Modbus写线圈-记录离散数据。 您必须在其中指定服务器ID。 - 1,记录地址(线圈编号) - 10,

*Modbus读保持寄存器-从保持寄存器读取数据。 您必须在其中指定服务器ID。 - 1,读数的初始地址(寄存器号) - 12 和正在读取的寄存器的数量 - 1.

image.png

计数器复位信号是周期性的,来自周期为5秒、填充因子为1%的矩形脉冲发生器单元。

与外部设备的连接:Modbus TCP

要连接到外部设备,您需要安装一个用于与外部设备一起工作的模块。 将Engee连接到低级计算机接口的详细分步过程在примере.

In [ ]:
# Установить модуль можно непосредственно в скрипте, следующей командой:
# engee.package.install("Engee-Device-Manager")

安装模块并运行客户端程序后,我们将继续进行建模。

模拟仿真

让我们使用软件控制来执行模型:

In [ ]:
name = "open_soft_plc_counter" # Имя модели
include(joinpath(@__DIR__, "start_model_engee.jl")) # Определяем функцию запуска модели
start_model_engee(name);  # Запускаем модель

在仿真过程中,有关通信状态,接收和发送数据的消息应显示在Engee客户端程序的信息窗口中。:

image.png

可以看到,连接建立,与PLC的数据交换成功。

模拟结果

在仿真中收集的数据(复位信号和当前计数器值)存储在一个变量中 simout. 我们将得到这些数据用于进一步绘制图表。

In [ ]:
data = collect(simout);
t = collect(data[1].time)[:,1];
counter = reduce(vcat, collect(data[2].value)[:,1])
reset = reduce(vcat, collect(data[1].value)[:,1]);

让我们绘制读取信号:

In [ ]:
gr(size = (1000, 400))
plot(t[505:end], [counter[505:end], 50*reset[505:end]];
          seriestype = :step, title = "Счётчик FB_CTU",
          xlabel = "Время, с",
          label = ["Значение счётчика (CV)" "Сигнал сброса (R)"])
Out[0]:

Engee模型从PLC OP接收的数据对应于现实,Engee成功地重置在4diac FORTE图中操作的计数器。

结论

考虑了Engee与开放式自动化过程控制系统成功集成的一个例子:通过Modbus TCP Engee与Severstal的开放式软件PLC交换数据。 自动化控制系统和控制的先进设计范例的协同效应使加速向工业4.0的过渡成为可能。