OpenPLC官方文档简单翻译(二)OpenPLC Runtime

发布时间 2023-12-23 21:00:03作者: 碳酸钾K2CO3

参考网址:https://autonomylogic.com/docs/2-1-openplc-runtime-overview/

网站更新时间:2022-10-05

2.1  OpenPLC Runtime概述

OpenPLC Runtime用来运行Editor创建的PLC程序。Main runtime有一个内置的网络服务器,可以配置runtime的多个参数。但OpenPLC runtime的微型实现(直接运行在微控制器和Arduino板子上的runtime,将runtime当作PLC程序的一部分的那些),没有内置的网络服务器,所有runtime有关的配置需要在editor中完成。

Main runtime的网络服务器可以用过你的目标OP的8080端口实现。例如:如果你在一个树莓派上安装了OpenPLC的runtime,并且你的树莓派的IP地址是192.168.0.103,你可以通过你的浏览器去访问runtime:

如果出现页面错误,请确保您的电脑可以通过网络访问 Raspberry Pi。如果不知道电路板的 IP 地址,Raspberry Pi 基金会有相关的指南可以帮助你。

一旦成功访问Main runtime的网络服务器,可以看见如下登录页面:

默认用户名和密码是 openplc(登录)和 openplc(密码)。首次登录后必须做的第一件事就是更改默认用户名和密码。只需进入左侧的 "用户 "菜单,点击 OpenPLC 用户,即可更改用户信息。

保存更改后,系统会提示您再次登录。只需使用新的凭据登录即可!

 

通过硬件IO接口访问runtime

默认情况下,OpenPLC 运行时安装的是空白驱动程序。这意味着无法直接使用 OpenPLC 来控制硬件的 GPIO 引脚,必须要先为硬件启用正确的硬件驱动程序。在左侧菜单中点击 "Hardware(硬件)",然后从弹出菜单中选择相应的驱动程序。请确保为您的电路板选择了正确的驱动程序,否则 OpenPLC Runtime 将无法编译runtime core。

 

选择正确的驱动程序后,点击 "保存更改",然后等待runtime core重建。如果一切正常,最后应该会看到一条信息,提示编译成功结束。

2.2  将程序上传至OpenPLC的runtime

OpenPLC runtime有一个内置的网络服务器,可用于配置 OpenPLC 和上传新程序供其运行。OpenPLC runtime的微型实现(直接运行在微控制器和Arduino板子上的runtime,将runtime当作PLC程序的一部分的那些),没有内置网络服务器。微型runtime的所有runtime配置均可直接从 OpenPLCe editor的上传对话框中完成(参见 1.5 在微控制器板上安装 OpenPLC 运行时)。

在计算机上打开网络浏览器,在 8080 端口输入 OpenPLC 设备的 IP 地址,即可访问 OpenPLC 网络服务器。有关 OpenPLC Runtime 网络服务器的更多信息,请查阅 2.1 OpenPLC Runtime 概述。

登录网络服务器后,您将看到 OpenPLC 的dashboard,其中包含有关当前运行程序和运行日志的一些信息。

要上传新程序,请进入左侧菜单的 "Program "部分。在那里,你会看到最近上传的所有程序的列表。只要点击列表中的程序,然后在下一页确认,就可以返回到之前上传的程序。要上传新程序,请点击 "Choose File",选择 .st 文件,然后点击 "Upload Program"。

在出现的窗口中,填写一些有关程序的信息,以便下次登录时了解程序在做什么。完成后,点击 "Upload program",将新的 .st 文件加载到 OpenPLC 中。

文件上传后,您将返回dashboard,OpenPLC 状态将变为 "compiling"。有关编译过程的日志将显示在运行时日志框中。编译过程结束后,状态将变为 "running",新程序将开始运行。如果程序出错,状态将变为 "stopped",错误信息将显示在运行时日志框中。

2.3  输入,输出和内存寻址

PLC 程序通过输入和输出模块和(或)SCADA 通信协议与外部世界进行交互。在设计 PLC 程序时,可通过为变量标注 PLC 地址来决定哪些变量应连接到 I/O 和通信模块。

     OpenPLC Runtime 遵循IEC 61131-3标准对输入、输出和内存寻址。I/O 位置的寻址是通过使用特殊字符序列完成的。这些序列由百分号"%"、位置前缀、大小前缀和一个或多个自然数组成,中间用空格隔开。支持以下位置前缀:

  • I for input
  • Q for output
  • M for memory

支持以下描述数据大小的前缀:

  • X for bit (1 bit)
  • B for byte (8 bits)
  • W for word (16 bits)
  • D for double word (32 bits)
  • L for long word (64 bits)

       例如,如果要将第一个数字输入的状态读入 BOOL 变量,则必须声明变量位于 %IX0.0。如果要将 UINT 变量的内容写入第二个模拟输出,则应声明 UINT 变量位于 %QW2。

       注意:PLC 到物理 I/O 映射取决于平台。有关每个支持平台的 PLC I/O 映射的更多信息,请查阅: 2.4 物理寻址

您可能已经注意到,X的 PLC 地址有两个分层地址(即有个.)。最不重要的部分(最右侧)可解释为字节中的一个位置,必须在 0 至 7 的范围内。最有意义部分(最左边)必须不大于 1023。各部分之间用一个句点隔开。X 以外的数据大小只有一个分层地址。它们不得包含句点(.),且不得超过平台的最大内存位置地址。

       由于所述原因,以下是 OpenPLC 中 PLC 地址的无效示例:

%IX0.8 最小有效指数大于 7。

%QX0.0.1 不允许使用三部分层次结构地址。

%IB1.1 仅允许 X 数据大小的两部分层次结构。

2.4  物理寻址

OpenPLC Runtime 兼容多种不同 I/O 模块配置的硬件平台。在内部,所有 I/O 变量都与 PLC 地址相关联,详见 2.3 输入、输出和内存寻址。硬件层是负责将内部 PLC 地址变量转换为物理硬件位置的组件。OpenPLC 支持的每个平台必须有不同的硬件层。下面是从平台的硬件层文件中提取的每个平台的引脚说明:(在此忽略,详见原文)

2.5  MODBUS寻址

OpenPLC 可配置为 Modbus 从站(服务器)。Modbus 从站通常由执行测量和控制的主站控制。远程主站通过网络(Modbus/TCP)向 OpenPLC 从站发送 Modbus 帧,从而发起读写请求。适用于 Arduino 兼容板的 OpenPLC 微型runtime也支持通过串行和 USB 发送 Modbus 帧。用于 Linux 和 Windows 主机的 OpenPLC Runtime 默认在 TCP 端口 502 上运行 Modbus 服务器。该配置可在 "设置 "选项卡上更改。

       OpenPLC 支持以下 Modbus 功能代码:

  • Read discrete output coil (0x01)
  • Write discrete output coil (0x05)
  • Write multiple discrete output coils (0x0F)
  • Read discrete input contacts (0x02)
  • Read analog input registers (0x04)
  • Read analog output holding registers (0x03)
  • Write analog output holding register (0x06)
  • Write multiple analog output registers (0x10)

Modbus 地址根据分层地址值与 PLC 地址绑定,即较低的 PLC 地址映射到较低的 Modbus 地址。地址尽可能按顺序映射。下表列出了 OpenPLC Linux/Windows 运行时的 Modbus 地址空间。

       后续省略,详见原文。

2.6  Slave Devices

注意:本节仅适用于在 Windows 或 Linux 设备上运行的 OpenPLC Runtime。基于微控制器的平台(如 Arduino)无法附加从站设备

您可以在 OpenPLC Runtime 上附加 Modbus 从站设备,以扩展 I/O 点数。这对于没有任何 I/O 点的系统特别有用,例如在台式电脑或服务器上运行的 OpenPLC Runtime。OpenPLC Runtime 支持使用 Modbus/TCP(网络)或 Modbus/RTU(串行)的从站设备。此外,还支持具有无线功能、可通过 TCP/IP 传输 Modbus 数据包的设备。

在此省略,详见原文。