OpenPLC官方文档简单翻译(三)OpenPLC Editor
参考网址:https://autonomylogic.com/docs/3-1-openplc-editor-overview/
网站更新时间:2022-10-05
3.1 OpenPLC Editor概略
OpenPLC 编辑器是一款符合 IEC 61131-3 标准的 PLC 代码编辑器。它允许您创建、编译 IEC 61131-3 程序并将其上传到 OpenPLC Runtime。
编辑器使用非常简单,支持 IEC 标准中定义的所有五种语言。IEC-61131-3 标准是由标准组织 IEC(国际电工委员会)提供的规范性文件,描述了设计可编程控制器的标准。该文件的第 3 部分(通常称为 IEC 61131-3)规定了 PLC 编程语言的语法和语义。OpenPLC Editor 实现了该文件中描述的所有语言: 梯形逻辑 (Ladder Logic,LD)、功能块图 (Function Block Diagram,FBD)、指令表 (Instruction List,IL)、结构化文本 (Structured Text,ST) 和顺序功能图 (Sequential Function Chart,SFC)。
PLC 项目存储在文件夹中,其中主 XML 项目文件遵循 PLCopen TC6-XML 方案。PLCopen 是一个独立于供应商和产品的世界性协会,为与控制编程相关的各种主题定义国际标准。PLCopen 第六技术委员会(TC6)的目标是定义一种基于 XML 的标准文件格式,用于存储 IEC 61131-3 程序。有了统一的标准,供应商就能导入和导出在不同平台上创建的 PLC 程序。
3.2 在OpenPLC Editor上创建你的第一个项目
这是一个关于开关的简单项目,需要以下硬件:
- 一个安装了OpenPLC runtime的硬件设备
- 两个开关
- 一个LED
如果您正在这些工业电路板(UniPi、PiXtend 等)中运行 OpenPLC,您可能需要将 LED 升级为工业 24V 灯。它的工作原理是一样的。首先,像这样为电路布线:
重要注意事项:
- +V 是设备的正电压电平。例如,Arduino 板通常为 +5V,Raspberry Pi 为 +3.3V,工业板为 +24V。
- PB1 和 PB2 是按钮,R1 和 R2 是下拉电阻。从 1K 到 10K 的电阻都可以。如果您使用的是工业电路板或内部带有下拉电阻器的电路板,那么电路中很可能不需要 R1 或 R2。在这种情况下,您可以将 PB1 和 PB2 直接连接到 %IX0.0 和 %IX0.1。
- 在 Raspberry Pi 电路板上,前两个输入(%IX0.0 和 %IX0.1)在硬件上是反相的。这可能会给您带来问题,因为这就像按钮被不断按下一样。您可以在 PLC 程序中使用负触点反转输入(如果您知道如何操作),或者使用其他输入,如 %IX0.2 和 %IX0.3。
首先在 OpenPLC 编辑器上创建一个新项目。为此,只需点击文件 -> 新建。
此时会出现一个保存对话框,让您选择项目的存储位置。OpenPLC Editor 项目实际上是文件夹,而不是单个文件。如果文件夹中已经有文件,则无法将项目存储在其中。为项目创建一个新文件夹,打开该文件夹并选择其作为项目位置。
选定位置后,OpenPLC Editor 将使用默认设置和配置为您创建项目,并打开一个新对话框,要求您创建一个新的 POU。POU 是 Program Organization Unit(程序组织单元)的缩写,用于存储您在项目中编写的所有代码。您可以创建三种类型的 POU:
-
程序(Program) - 结合输入、输出、功能和功能块的应用代码。
- 函数(Function) - 有返回值的可重用的用户代码。
- 功能块(Function Block) - 可保留状态(实例)的可重用用户代码。
在本教程中,我们只创建一个Program POU。因此,只需填写程序名称,确保 POU 类型为 "程序",语言为 "LD"。此外,请注意程序名称不能包含空格或特殊字符。
当您创建一个新程序时,OpenPLC Editor 会自动为您创建一个配置、一个资源、一个任务和一个实例。这些项目告诉 OpenPLC 如何处理您的程序(例如,何时调用函数、如何循环运行等)。您可以双击左侧面板上的 Res0 来编辑这些项目。
主窗口顶部会显示一个全局变量输入框(允许你为程序创建全局变量)、一个任务窗口和一个实例窗口。点击任务窗口内的绿色加号,即可创建新任务。我们不会为本项目创建新任务。不过,您可能需要根据运行 OpenPLC 的硬件来更改任务的时间间隔。PLC 程序是循环运行的,这意味着它们从第一条指令开始,到最后一条指令结束,稍等片刻,然后从第一条指令到最后一条指令重新开始。任务间隔意味着程序循环调用的频率。默认值为 20ms,这意味着程序将每 20ms 执行一次。如果您需要更频繁地运行程序,可以随意调整时间。但请注意,如果您选择的循环时间很低(如 1ms),您的程序可能会消耗设备 100% 的 CPU,而设备仍可能无法正常运行您的程序。对于所有平台来说,安全的循环时间通常为 20 毫秒。有底层操作系统的平台(例如 Windows 和 Linux)响应速度较慢,周期时间较短时可能表现不佳。这是因为操作系统会根据操作系统内核的优先级干扰 PLC 周期调度。另一方面,像 Arduino 板这样的裸机平台在保持精确的周期时间方面非常出色,并且可以在较低的周期时间内保持较高的响应速度。
项目创建完成后,就可以开始绘制梯形逻辑图了。点击左侧面板上的程序名称,打开梯形图逻辑编辑器。屏幕的上半部分用于放置变量。中间部分用于绘制图表。因此,我们先添加几个变量。点击绿色加号,添加三个变量:
我们想通过这个程序实现的是:每当按下 PB1,LAMP 就会打开,并一直保持打开状态,直到按下 PB2。我们需要这样一个简单的梯形逻辑锁存电路:
在OpenPLC中创建的过程为:
(1)首先,点击工具栏上的电源轨图标,添加左侧电源轨。
将左侧电源轨的引脚数量调整为 2(如果以后想在程序中添加更多的梯级,这是一个合理的数字)。添加另一个电源轨,针数为1,但这次要在属性中选择 "右电源轨"。将其放置在屏幕右侧。这样就可以为梯形图设置梯级了。
(2)现在可以开始添加梯形图元素了
单击工具栏上的联系人按钮或在空白编辑器窗口上单击右键并选择添加->接触点(contact),即可添加接触点。在出现的窗口中,在 "变量 "参数下选择 PB1,将新contact与变量 PB1 关联。
(3)重复该过程,再添加两个触点,一个与 PB2 相关,另一个与 LAMP 相关。对于 PB2 触点,选择 Negated 作为修改器。最后,点击工具栏上的线圈按钮或右键点击空白编辑器窗口并选择添加->线圈,添加一个线圈。将新线圈与 LAMP 变量相关联,并添加右侧电源轨以闭合电路。将元件摆放到位,使其看起来如图所示:
(4)最后一步是拖动所有元件的末端将其连接成一条线。将 PB1 和 LAMP 触点的左侧与左侧电源轨连接。将 PB1 的右侧与 PB2 连接,PB2 的右侧与 LAMP 线圈连接,LAMP 线圈的右侧与右电源轨连接。将 LAMP 触点的右侧与 PB2 的左侧连接,绘制并联 LAMP 触点电路。您的最终项目应与本教程的第一张梯形图相似。
该电路最初关闭了 LAMP 的电源。当您按下 PB1 时,哪怕只是一小会儿,电路也会打开 LAMP(前提是 PB2 也没有按下)。一旦 LAMP 打开,它就会绕过电路上的 PB1 按钮,即使在松开 PB1 后也会持续打开。这在梯形图逻辑中是一个很好的技巧,你实际上可以将输出作为触点来使用!现在,关闭 LAMP 的唯一方法是按下 PB2。由于 PB2 是一个负触点,一旦按下就会打开电路,从而关闭 LAMP。
现在您的项目已经创建完成,在将其上传到 OpenPLC Runtime 之前,是对其进行测试的好时机。单击工具栏上的 "Start PLC Simulation(开始 PLC 仿真)",即可模拟程序的行为。
这将打开一个新窗口,您可以看到程序的电子流。绿色的线路被激活,黑色的线路未被激活。右键单击触点或线圈,选择 "强制为真 "或 "强制为假",即可强制其激活或停用。尝试强制 PB1 为真,观察流向 LAMP 线圈的路径。然后将 PB1 强制为假,并验证 LAMP 是否仍然由于锁存电路而激活。
除了在图表上以图形方式查看电子流之外,您还可以在屏幕右侧的调试器面板上跟踪程序中每个变量的数据。点击左侧面板中每个变量前面的眼镜图标,即可在调试器面板中添加变量。此外,双击调试器面板上的变量,还可以看到显示变量当前值的实时图表。这在程序计步或操作数据时非常有用。
最后,在创建并测试完程序后,最后一步就是以 OpenPLC Runtime 可以理解的格式生成程序。为此,只需点击工具栏上的为 OpenPLC Runtime 生成程序,然后将 .st 文件保存到计算机上。该文件是以 OpenPLC Runtime 可以理解的语言编写的梯形图逻辑程序。随后,您可以按照 2.2 将程序上传到 OpenPLC Runtime 的说明,将此文件上传到 OpenPLC Runtime。
3.3 在OpenPLC的Library中新增Block
在此省略,详见原文。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律