问题标签 [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.

0 投票
2 回答
109 浏览

arrays - 已排序的非顺序元素的查找表

我有一个元素数组。该数组按元素的 ID 排序,但 ID 是非连续的,例如 ID 编号之间存在间隙。

我今天使用二进制搜索来查找特定的 ID。

ID 为 3 个字节,提供了大约 1600 万种可能性。给定数组中的 ID 数量要少得多,可能是 10 000。

这是一个嵌入式/plc 平台,这意味着我不能有一个 16MB 的查找表,这会占用太多内存。我看过这样的位集,但我不确定这是否是正确的方法,或者如何计算数组偏移量。

我意识到这可能是一个艰难的问题,因为我想做旧的“内存速度”权衡,但我的内存非常少,可能只有 2MB 或更少的内存可用。但是硬件是固定的。

编辑:数组的元素对于给定的应用程序是固定的,没有插入或删除数组元素。

如何构建/预计算查找表或类似的表以加快查找 ID?

谢谢

0 投票
1 回答
2879 浏览

plc - 比较 2 个字符数组并在 S7 1500 (PLC) 上找到匹配项

我目前正在使用 ST(SCL) 在 S7 1500 上进行小型编码练习,其中将 2 个数组 A(长度较大)和 B 相互比较并检查匹配元素。

然而,数组 B 由字母数字字符和特殊字符(分号)组成,例如:“12345;12346B;12347A”等,这与没有分号的数组 A 不同。我想实现分隔符或 EndSeparator 为 ';' 的拆分功能 将一堆数字分开并将拆分后的数字与数组 A 元素进行比较,以检查数组 A 中是否也存在 12345。

我使用 LOWER_BOUND 和 UPPER_BOUND 来限制数组,因为数组 A 的范围是未定义的。

我该怎么做?任何指针将不胜感激。:)

参考:

0 投票
0 回答
302 浏览

plc - DB_ANY 作为 Plc 数据类型

如何将 DB_ANY 转换为 plc 数据类型以获得对 DB 成员的符号访问?这是标准访问数据库。换句话说,我想间接访问特定类型的数据库并获得对数据库成员的符号访问。

0 投票
4 回答
312 浏览

enums - 如何在 Yaskawa MotionWorks IEC 3 中声明数据类型 ENUM?

我正在尝试在 MotionWorks 中添加我自己的枚举。创建新数据类型后,唯一可用的类型是 ARRAY、STRING、STRUCT。

编写以下代码:

不编译。Yaskawa 似乎遵守 ENUM (根据此列表),但我不知道如何声明它。

编辑:我可以执行以下操作:

但它似乎没有创建一个枚举,因为我无法访问它的价值。我可以像访问结构一样访问它。

编辑2:

如果我声明:

并设置变量

然后在我尝试使用的代码中:

它编译,但不会运行。

尝试使用此代码将无法编译:

0 投票
2 回答
1138 浏览

twincat - 如果 VAR_INPUT 是 INTERFACE 类型,值是按引用传递还是按值传递?

在 TwinCAT 和 CodeSys IEC-61131 编程环境中,可以VAR_INPUT使用 anINTERFACE作为类型规范来声明 POU。我相信 TwinCAT 和 CoDeSys 中对接口的支持是对标准 IEC-61131 语言定义的扩展。

问题1:调用POU时,interfaceVAR_INPUT是否有pass-by-value(即输入FB的状态在每次执行被调用的FB时复制)或pass-by-reference语义?

问题 2:此行为在哪里指定或记录在案?

0 投票
1 回答
96 浏览

plc - 如何为电机中的控制器状态创建时序?

定时可用于在触发或关闭同一电机时产生延迟,或在不同电机之间产生打开或关闭延迟。这是一项用于保护电机的功能,可避免以非常短的间隔驱动。在警报情况下,电机会自动禁用(随着时间的推移优先)以避免进一步损坏。

通过创建一个子例程来读取机器的状态来启动我的代码,这将告诉我它是打开还是关闭。然后创建一个读取处于警报状态的机器的子程序,然后我检查了机器是否处于警报状态。在这段代码下面,我创建了一个驱动电机的例程,然后创建一个例程来触发必须连接电机上的输出,我用一个 else 完成了我的代码,它关闭了电机。

我还没有测试代码。但是我一般用CFC来测试。

0 投票
1 回答
537 浏览

python - 是否有使用 OPA UA 传输数据的 IEC 61131 / IEC 61499 PLC 功能块?

我有一个 Python (TensorFlow + Gekko) 中的机器学习和高级控制应用程序,我需要将它与提供数据采集和最终元素控制的可编程逻辑控制器 (PLC) 集成。我可以使用机架式 Linux(首选)或 Windows Server 作为计算引擎,通过 OPC-UA(用于过程控制的 OLE - 通用架构)进行数据传输吗?

有一个Python OPC-UA / IEC 62541 客户端(和服务器)和一个Python MODBUS 包,我在连接到艾默生 DeltaV、霍尼韦尔 Experion/TDC3000 和横河 DCS 等分布式控制系统 (DCS) 时在其他项目中使用过. 我可以对诸如 Siemens Simatic S7-300 等 PLC 功能块做同样的事情吗?西门子拥有支持 TensorFlow 的较新 PLC,例如 SIMATIC S7-1500 NPU(神经处理单元)模块,但出于多种原因需要外部服务器。S7-300 支持 IEC 61131 标准和 PROFINET CBA 标准(西门子的 IEC 61499 标准)。

下面是我想用来与功能块通信的最小功能块。

0 投票
1 回答
99 浏览

iec61131-3 - IEC 61131-3 编程中的 SFC 步骤

所以我有一个问题,在我的 SFC 中它跳转到一个初始步骤,但在该步骤中写入的命令不会注册。

在 SFC 结束时,步将 5 输入到 A_Status(INT)。下一个转换检查 A_Status 的值是否为 5。到目前为止没有问题,但是在转换后跳转到 SFC 的开头,其中第一步应该将 0 输入到 A_Status 中,A_Status 保持在 5。

我的程序的循环时间是 100 毫秒。我曾尝试减慢周期,但没有奏效。这里似乎有什么问题?也许在这样的序列中使用的相同变量不起作用?

将不胜感激。

0 投票
3 回答
886 浏览

plc - 是否可以在结构化文本中间接索引数组(IEC 61131-3 标准)

我有一个结构数组: myStructure[0..100]

我想按名称索引该结构。

它通过给每个索引一个名称来工作:

所以在结构中索引一个成员:(myStructure[P103_AI].value 即索引myStructure[11].value)

但是,是否可以间接索引?

即如果不关心TempString : STRING[30];

在运行时更改 TempString 以索引数组。

这是一些伪代码来描述我想做的事情:

0 投票
2 回答
1401 浏览

plc - 在结构化文本中清除整个结构的最佳方法是什么

这就是我现在的样子

是否有另一种方法可以使结构无效,而无需清除和使用struct_NULL