问题标签 [codesys]
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.
codesys - 确定剩余字节
我正在做一个项目,我需要使用 CoDeSys 在两个硬件之间发送一个值。正在使用的通信系统CAN
只能以字节为单位进行传输,最大值为 255。
我需要发送一个高于 255 的值,我能够将其拆分为一个以上的字节并在接收机器上重建它以获得原始值。
我想我可以将该REAL
值除以 255,如果结果超过 1,则将该值解构为一个字节,其中包含余数,一个字节包含整数中 255 的数量。
例如,355 相当于一个字节 100 和另一个字节 1。
虽然我可以描述这一点,但我很难弄清楚如何用逻辑实际编写它。
有人可以在这里帮忙吗?
codesys - 在 codesys 中编写文本列表
我应该如何在运行时动态地在 CODESYS 中编写文本列表?
我使用文本列表作为源以显示在组合框中(下拉列表框)
提前致谢
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 变量(我想这应该是合法的)。阅读或写作时的预期结果是什么?
plc - Codesys Wago CAN 通信
我已经在两个通过 CAN 总线通信的组件之间连接了 Wago PFC200 750-8204,以便接收消息并进行进一步处理。我的方法是使用 WagoCanLayer2_02.lib 库在 codesys 2.3 中实现它,但我在读取 canbus 时失败了。编码。
你知道我该如何解决这个问题并有你的代码示例吗?
automation - 移位操作返回奇怪的错误
我正在 codesys 环境中通过 ABB 编写 plc,但我无法弄清楚为什么会出现此错误:
返回此错误的代码类似于:
基本上是两个赋值和一个无符号整数的左移操作。转变是产生错误的原因,而注释该行会消除它。
我已经检查了很多次语法,并且在相互矛盾的文档之后也多次反转了参数。
谁能告诉我我错过了什么?
timer - 结构化文本中的暂停计时器
ET
当不再要求计时器运行时,我需要能够暂停计时器并保留它的值。当接近开关的输入不存在时,计时器会计时,但我只希望它在推进材料的泵运行时计时。泵可能只运行 30 秒,但 prox 开关可能需要 120 秒的泵送时间,因此需要运行 4 次泵才能检测到任何材料。
如果有帮助,我正在使用 Codesys v2.3
到目前为止,我有:
但上述情况也会导致ET
电机关闭时值重置,而不仅仅是Proxy.P1
变为TRUE
。ET
应仅在设置Proxy.P1
为时重置TRUE
对此有何建议?令我惊讶的是,FB 上不仅有保留选项。
design-patterns - CodeSys 2.3 状态机
在 IEC61131-3 / CodeSyS v2.3 中制作高效灵活的状态机 (SM) 的最佳方法是什么?CodeSys V2.3 上有没有很好的 SM 实现示例?
据我了解,有 3 种不同类型的 SM:
1.Case logic SM——简单,只是根据if逻辑改变状态,一点都不灵活,难维护。
2.Table 驱动 SM - 更好,但没有函数指针,需要额外的条件指令来根据当前状态运行一些操作。
3.State Design Pattern SM - 最佳选择,灵活,没有大量的 CASE 语句,没有重复。
我正在尝试采用 Adam Tornhill 的 C State Design Pattern:http: //www.adamtornhill.com/Patterns%20in%20C%202,%20STATE.pdf 但从纯 C 语言转换为结构文本非常困难。CodeSys 支持功能块指针,但我不知道如何在 ST 中声明不完整的指针类型(甚至可能吗?):
arrays - 在 Codesys 中定义数组
我正在使用 Codesys 创建一个数组。
下面的示例是我用来为 5 个值创建数组的示例
这对于 5 个数组来说很好,但是如果我需要一个包含 100 个值的数组呢?
有没有一种更快的方法来为 100 个值创建一个数组,而不是像下面的示例中所示分别输入每个值。
communication - 支持通用 PLC 和 CoDeSys PLC 的 OPC 服务器
我刚开始一个 HMI 项目,目标是开发一个在 Windows PC 上运行的 C# .NET HMI 应用程序。HMI 必须能够读写 PLC 变量
在项目的第一个体育场中,HMI 必须能够与
• Lenze CodeSys v3 PLC
• Allen Bradley 紧凑型和控制 PLC
在以后的体育场中,我希望它也可以与:
• 施耐德 Codesys v3 PLC
• 西门子PLC
我认为具有不同 PLC 驱动程序的 OPC UA 服务器是解决方案。但我只能找到支持或通用 PLC 的 OPC 服务器,如 Allen Bradley 或基于 CodeSys 的 PLC。
这里有人有这方面的经验吗?