问题标签 [iec61131-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
plc - IEC61131-3 直接表示的变量:数据宽度和数据类型
IEC61131-3 语言中的直接表示变量 (DRV) 在其“地址”中包含数据宽度说明符:X
1 位、B
字节、W
字、D
双字等。
此外,当 DRV 被声明时,IEC 数据类型被指定为任何变量(BYTE、WORD、INT、REAL...)。
我不确定这些事情是如何相关的。它们是否正交?W
可以用(字节)地址定义一个 REAL 变量吗?预期的结果是什么?
一本书说:
将数据类型分配给标志或 I/O 地址使编程系统能够检查变量是否被正确访问。例如,
AT %QD3 : DINT;
不能使用UINT
or无意中访问由 声明的变量REAL
。
这并没有让我更清楚。以这个片段为例(回想一下,这W
意味着 Word,即 16 位 - 两者都DINT
对应REAL
于 32 位)
第一行将 32 位 IEC var 映射到 16 位位置。这合法吗?写/读是否相当于“演员”或什么?
其他行声明了两个指向同一地址的不同类型的 32 位 IEC 变量(我想这应该是合法的)。阅读或写作时的预期结果是什么?
mongodb - 如何创建结构化文本 (IEC 61131-3) 中的 MQTT/HTTP 客户端功能块?
我想使用从 PLC 收集数据的结构化文本编程将文档插入 MongoDB(存在服务器)。由于没有可用的驱动程序,我如何创建 HTTP 客户端功能块并连接到数据库?
另外,我可以使用 ST 连接到 MongoDB,因为有可用的 REST API 吗?
plc - 有没有办法使用结构化文本 (ST) 中的方法对 PLC 进行编程
所以我是 PLC 编程的新手,我来自传统的面向对象编程背景。我习惯于有关于如何使用这些语言的指南/参考的编程语言,但我在网上找不到任何现成的可用。
我想使用方法在结构化文本中对这个 PLC 进行编程,但我不知道如何去做。有什么办法可以在 ST 中编写方法吗?
codesys - 如何通过按相同的瞬时按钮在 Codesys CFC 中切换变量?
问题可惜说了这么多。
我有一个瞬时按钮。我单击它一次,变量start
获取HIGH
. 我点击它另一个时间变量start
去LOW
听起来像微不足道的任务,但使用 САС 我无法做到这一点。那是因为数据流。最后一个任务总是适用于变量。
c# - Antlr4 代码生成器语言
我正在制作一个 IEC-61131 到 C++ 的转换器,这是使用 C# 完成的。我有一个适用于 IEC-61131 的很好的 Antlr4 语法文件,并且我正在使用自定义侦听器来生成输出 C++ 代码。我知道 StringTemplate C# 可以用来替换我的自定义监听器。但我找不到如何使用 StringTemplate CodeGenerator 和选择 CPP 目标语言的好例子。有人可以在这里提供方向吗?或者提供一个例子?这是我到目前为止的代码。
antlr - Antlr "CASE" 错误路径
我正在使用 antlr 2.7.6。我正在为 plc 61131-3 ST 语言编写解析器,但我无法解决我的语法问题。
语法是:
问题发生在“enum_Value”为“case_Selection”时,解析器将其解释为新的“stmt”而不是它应该的新“Case_Selection”。例子:
在上面的示例中,它没有将“enum.liteal2”作为新的“case_Selection”,而是将其解释为“assign_Stmt”并给出错误,因为它没有找到 ':='。有没有办法尝试阅读最多的字符,直到我们找到':'或':='来了解我们是否真的有一个新的“stmt”?
谢谢!Edit1:更好的语法;
plc - IEC61131-3 中字符串的默认大小是多少
我继承了一个用 IEC 61131-3 结构化文本编写的 PLC 程序。我只是注意到它混合了STRING
变量和一些STRING(15)
变量。它表明 IEC61131-3 以预定义的长度声明其字符串(是吗?),并且可能有默认长度(存在吗?)这让我想知道我观察到的一些奇怪的字符串行为是否来自字符串溢出他们的缓冲区并且多余的被忽略(可能吗?)
理想情况下,请支持任何带有指向易于访问的 IEC61131-3 参考的链接的答案,以便人们可以浏览它以获取有关STRING
其他 IEC 61131-3 数据类型的更多详细信息。
c - 如何在codesys v3中创建指向函数的指针
你能给我一个例子来说明如何在我的库中声明一个指向函数的指针吗?以及如何将指向函数的指针传递给我的外部库?
embedded - 重要的 IEC 61131-3 代码示例
我目前正在开发一种用于符号执行和测试 IEC 61131-3 应用程序的方法。为了评估我的方法,我需要使用标准中定义的任何语言编写的重要程序。
我可以为此使用任何可公开访问的代码库吗?
real-time - 如何将实时控制的概念从“C”环境转移到“IEC61131 (CODESYS)”?
我们正在尝试对采样数据进行实时测量/计算。我们之前的经验是基于C
编程的。我想知道是否有人可以帮助我将实时c
编程结构转换为 PLC IEC61131 结构化文本?
对于实时控制循环(具有恒定循环周期),我们需要一个开始计时器、一个结束计时器和一个等待函数,其工作方式如下:
具体来说,我想知道我们如何在 IEC61131 中实现这些时序结构?我认为我们可以使用 TON 进行延迟。但是,非常感谢任何有关如何从处理器获取时间的建议。
(这篇文章讨论了可以编写代码并将其传输到 IEC61131。但是,出于教育目的,最好在 IEC61131 中编写代码。)
ps1:我正在开发一个 SEL-3350 设备,该设备配备了用于编写 IEC61131 程序的 CODESYS 固件。
ps2:经过几天的搜索,我明白了基于C编程的实时控制和IEC61131(使用CODESYS)的实时控制之间的区别。
基本上,当您使用 PLC 设备进行编码时,您可以在任务管理器中选择设置控制器处理周期的属性。因此,与“C”不同,不需要执行无限循环(while (1)),软件会处理它。例如,在 CODESYS 环境中,将程序类型选择为“循环”,将间隔时间选择为“循环常数”,这将类似于上面提到的 C 代码。