Engee 文档
Notebook

从Elikont-CS读取Modbus TCP数据

导言

这个例子展示了一个集成Engee和Elikont-CS的简单方法. Elikont-CS使用Modbus TCP协议实时生成和Engee读取信号。

埃利康特-CS

简要概述

"[Elikont-CS](https://ptk-sura.ru/products/kommunikatsionnyy-server/elicont-cs /)"-来自[Elara JSC]的软件(https://elara.ru/products/asu-tp-i-iiot/elikont-ks /?ysclid=mceomskbl9730209168),用于工业自动化和物联网(Iiot)系统中的数据采集、处理和传输,充当工业协议转换器、数据集线器、通信网关和多服务器。

此示例中使用的通信服务器版本为2.6.2。 操作系统是Windows10Pro。

Modbus TCP服务器配置

用于从示例部署Elikont通信服务器的配置文件 - Engee_read_1.elconf. 在Elikont-CS中打开它并开始数据交换就足够了。

创建Modbus TCP服务器时,必须配置其连接。 在这个例子中:

*Modbus TCP服务器IP: 127.0.0.4

*港口: 502

*设备地址: 1

image.png

生成的模拟和离散信号将传输到配置的Modbus TCP服务器。

生成用于从Engee读取的信号

Elikont CS中的生成器模块用于生成信号。 在示例中,它生成两个信号:

  1. "标志性_sinusoid" :

    *数据类型 : INT16

    *生成类型 : Синус

    *期间 : 4

    *数值范围: -30 000 ÷ 30 000

  2. "周期性_bit" :

    *数据类型 : BOOLEAN

    *生成类型 : Треугольник

image.png

相同的信号被传输到Modbus TCP服务器。:

服务器信号块中添加了两个信号源。 它们已被分配Modbus寄存器的名称和地址:

"周期性_bit":

*Modbus名称:Modbus_periodic_bit

*注册地址: 0

"标志性_sinusoid":

*Modbus名称: Modbus_sinus

*注册地址: 5

image.png

配置服务器、生成器和生成的信号后,您需要下载服务器并建立连接。 下面的屏幕截图显示了通信服务器在生成信号的过程中。

image.png

有关Elikont-CS设置过程的更多信息,请参阅[手册](https://ptk-sura.ru/products/kommunikatsionnyy-server/elicont-cs /)。

示例模型

这个例子的模型 - elicont_cs_read.engee.

连接到Elikont-CS需要一个电源单元 Modbus TCP Setup 从Engee块库的硬件部分。 您必须在其中指定服务器地址。 - 127.0.0.4 和港口 - 502.

我们将使用功能块1读取离散数据。 - Modbus Read Coil Status. 您必须在其中指定服务器ID。 - 1,读数的初始地址(寄存器号) - 0 和读取位数 - 1.

我们将使用功能块3读取模拟数据。 - Modbus Read Holding Register. 您必须在其中指定服务器ID。 - 1,读数的初始地址(寄存器号) - 5 和正在读取的寄存器的数量 - 1.

因此,示例模型如下所示:

image.png

此外,您应该配置读取数据的记录,Engee中模拟时间的管理以及块的采样周期。

与外部设备的连接:Modbus TCP

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

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

模拟仿真

在Elikont-CS中启动Modbus TCP服务器并将Engee连接安装到低级接口后,我们将继续运行示例模型。:

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

执行仿真后,我们将通过Modbus TCP处理接收到的数据读取结果。

模拟结果

让我们从变量中收集数据 simout 成两个变量,其中包含Modbus服务器中信号的名称。

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

让我们绘制读取信号:

In [ ]:
gr(size = (1000, 400))
AO = plot(t, Modbus_sinus;
          seriestype = :step, title = "Эликонт-КС: аналоговый сигнал",
          label = "Modbus TCP \n127.0.0.4:502 \nУстройство 1 \nРегистр 5")
DO = plot(t, Modbus_periodic_bit;
          seriestype = :step, title = "Эликонт-КС: дискретный сигнал",
          label = "Modbus TCP \n127.0.0.4:502 \nУстройство 1 \nРегистр 0")
plot(DO, AO, layout = (1, 2), legend = :bottomright, xlabel = "Время, с", ylabel = "Величина сигнала")
Out[0]:

如图所示,接收数据的频率、幅度和形状与Elikont-CS生成的信号相对应。

结论

在这个例子中,考虑了Elikont-KS通信服务器的简单配置,用于通过Modbus TCP生成离散和模拟信号。 已经使用相同的协议建立了Engee连接,以将生成的信号读入模型并进一步处理它们。