问题标签 [structured-text]
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.
arrays - 在 Codesys 中定义数组
我正在使用 Codesys 创建一个数组。
下面的示例是我用来为 5 个值创建数组的示例
这对于 5 个数组来说很好,但是如果我需要一个包含 100 个值的数组呢?
有没有一种更快的方法来为 100 个值创建一个数组,而不是像下面的示例中所示分别输入每个值。
types - What's the differences between a UINT and a WORD with Profinet
I'm developing a project on a Siemens PLC and i'm wondering if I should use a Word or a UINT to store a 16-bit value. Is there any differences between the two?
arrays - 在结构化文本中使用数组
我在模拟 PLC 上使用 B&R Automation Studio。我只是在玩一些程序并且遇到了一个问题。
我有我的系统的警报列表。如果这些警报中的任何一个响起,我希望有一个警报标志。这很简单,可以通过一个简单的 OR 语句来完成,因为我只有 5 个警报。
但是,如果我有 100 个警报,手动输入这些都需要很长时间。我的第一个想法是将所有警报放入一个数组中,这样我就可以轻松访问任何元素,但是为了做到这一点,我是否不需要将所有这些变量都输入到系统中?所以我不会节省大量时间?有没有我可以利用的方法或功能块,以便我可以跳过将 100 多个变量输入数组的手动过程?
oop - PLC 面向对象编程 - 使用方法
我正在使用结构化文本为 Schneider PLC 编写程序,并且我正在尝试使用面向对象的编程来完成它。
作为 PLC 编程的新手,我编写了一个简单的测试程序,如下所示:
aMethod
必须执行一些操作,等待结果(有一个“超时”检查以避免死锁)并返回 TRUE 或 FALSE
这是我在程序执行期间所期望的
1)okFlag:=myObject.aMethod();
到达时,执行里面的代码,aMethod
直到返回结果。当我说“已执行”时,我的意思是在下一个扫描周期中,执行aMethod
从之前到达的点继续执行。
2) 检查方法调用的结果,执行程序的主流程
这就是发生的事情:
1)aMethod
被执行,但程序流程继续。也就是说,当它到达aMethod
一个值的末尾时,它会被返回,即使aMethod
应该等待的事件仍在执行。
2) 在下一个循环中,aMethod
再次调用并从头开始
这是我找到的第一个解决方案:
和主程序:
这似乎有效,但我不知道这是否是正确的方法。
Schneider 有一些库使用返回布尔值的方法,并且似乎在我的程序中按我预期的那样工作。也就是说:当循环第一次到达对方法的调用时,程序流程以某种方式“偏离”,以便在下一个循环中再次进入该方法,直到它完成。有没有办法有这种行为?
plc - 有没有办法使用结构化文本 (ST) 中的方法对 PLC 进行编程
所以我是 PLC 编程的新手,我来自传统的面向对象编程背景。我习惯于有关于如何使用这些语言的指南/参考的编程语言,但我在网上找不到任何现成的可用。
我想使用方法在结构化文本中对这个 PLC 进行编程,但我不知道如何去做。有什么办法可以在 ST 中编写方法吗?
plc - 是否可以在结构化文本中指定某个“n”扫描周期上的 PLC 执行?
我目前正在编写一个 PLC 代码来执行我希望在特定扫描周期执行的某些命令。
有没有一种方法可以将结构化文本中的程序编码到可以将语句标记为仅在“n”扫描周期执行的地方?
提前致谢。
arrays - Cx程序员-结构化文本,数组赋值
我正在学习结构化文本,使用 Omron 软件 Cx-programmer 进行编程。
我环顾四周,但找不到将多个元素分配给数组的方法,我尝试过这个解决方案,但它不起作用,
这是数组声明(内部变量):
INT数组:
布尔数组:
错误是一样的:
我成功地单独分配了元素,但我需要在一行中分配它们。
任何帮助表示赞赏:)
PS:我用的是cx程序员教育版。
timer - 在 Codesys 中定义下降沿检测
对于我的一个程序,我需要梯形图中的常闭、定时关闭 (NCTC) 继电器。
我不知道实现这种方法的标准方法,所以我正在尝试自己构建一个。我目前的方法需要一个下降沿检测。我在一本书的后面找到了这种检测器的代码:“IEC 61131-3:工业系统编程”(第 2 版,第 327 页)。看起来像这样:
这给了我 5 个错误(忽略构建失败):
错误 4250:F_TRIG (1):另一个“ST”语句或 POU 结束
错误 4250:F_TRIG (4):另一个“ST”语句或 POU 结束
错误 4250:F_TRIG (7):另一个“ST”语句或预期 POU 结束
错误 4250:F_TRIG (10):预期另一个“ST”语句或预期 POU 结束
错误 4250:F_TRIG (13):预期另一个“ST”语句或 POU 结束
我正确地将 POU 的类型配置为功能块,并将 POU 的语言配置为 ST。我怀疑我的语法生疏了,但我愿意接受建议。特别是如果我用一种完全错误的方法来解决这个问题。
在我看来没问题。怎么了?
运行 Codesys 2.3。
plc - 是否可以通过结构化文本改变 PLC 数字输出引脚的开启时间?
我正在尝试模拟从纯数字 PLC 输出的 PWM 信号。那么是否可以在每个周期中定义数字输出引脚的 ON 和 OFF 时间?
提前致谢。