问题标签 [st]
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 - 如何检查模拟值以查看它们在过去 5 分钟内的变化是否超过 1V?
我有一个 AB PLC,我试图读取模拟值以查看值是否在 5 分钟内变化超过 1V?我需要阅读 10 组值。实现这一点的最简单方法是什么?我可以考虑创建数组以在每次读取它们时保存值,但我遇到的问题是,如何保持值的运行平均值并在每次读取它们时进行比较。
对此的任何帮助将不胜感激!
timer - 结构化文本中的暂停计时器
ET
当不再要求计时器运行时,我需要能够暂停计时器并保留它的值。当接近开关的输入不存在时,计时器会计时,但我只希望它在推进材料的泵运行时计时。泵可能只运行 30 秒,但 prox 开关可能需要 120 秒的泵送时间,因此需要运行 4 次泵才能检测到任何材料。
如果有帮助,我正在使用 Codesys v2.3
到目前为止,我有:
但上述情况也会导致ET
电机关闭时值重置,而不仅仅是Proxy.P1
变为TRUE
。ET
应仅在设置Proxy.P1
为时重置TRUE
对此有何建议?令我惊讶的是,FB 上不仅有保留选项。
mongodb - 如何创建结构化文本 (IEC 61131-3) 中的 MQTT/HTTP 客户端功能块?
我想使用从 PLC 收集数据的结构化文本编程将文档插入 MongoDB(存在服务器)。由于没有可用的驱动程序,我如何创建 HTTP 客户端功能块并连接到数据库?
另外,我可以使用 ST 连接到 MongoDB,因为有可用的 REST API 吗?
x11 - tmux 不能以普通用户身份在终端中启动,而是以 root 身份启动?
我在旧的联想 X60 Thinkpad 上使用 Archlinux 32 位。它工作得很好,但我对 tmux 有一个问题:每当我尝试在 st-terminal 或 xfce4-terminal 中以普通用户身份启动 tmux(或者我猜也在其他终端模拟器中)我收到以下错误:
setterm:终端屏幕不支持--blength
/usr/lib/xorg-server/Xorg.wrap:只允许控制台用户运行X服务器
在该消息之后,无法输入任何命令,几秒钟后 tmux 停止。我在终端模拟器中使用 tmux,该终端模拟器在 xserver 中的 i3wm 中启动。
奇怪的是,如果我以 root 用户 (sudo tmux) 启动 tmux,我只会收到 setterm-error,但之后我可以正常使用 tmux。所以我猜我的 xorg 配置中的某些东西已损坏,但我不知道是什么。那么有人有想法吗?
plc - 是否可以在结构化文本中指定某个“n”扫描周期上的 PLC 执行?
我目前正在编写一个 PLC 代码来执行我希望在特定扫描周期执行的某些命令。
有没有一种方法可以将结构化文本中的程序编码到可以将语句标记为仅在“n”扫描周期执行的地方?
提前致谢。
memory - 保存具有变化结构的不同变量值集
我有几组变量结构的值(出厂设置、用户设置......),这些值保存在二进制文件中。因此,当我想应用某些设置时,我只需加载包含所需值的特定文件,这些值将根据结构应用于变量。当变量的结构没有改变时,这可以正常工作。
当我添加一个变量但需要保留其余变量的值时,我不知道该怎么做(当程序中的结构发生变化时,我需要更改文件,以便它们包含相应的新值新结构,同时保留旧结构)。
我正在使用用 ST 语言编写的 PLC 系统。但我正在寻找解决这个问题的一些整体方法。
谢谢你。
c++ - 用 std::chrono 计算持续时间在需要很长时间时给出 0 纳秒
我试图使用 std::chrono 计算 for 循环所花费的持续时间,但即使我通过增加边界值使循环花费更长的时间,它也会给出 0 纳秒,这是代码:
输出 :
但是当我将循环计数器的边界增加到非常非常大的值时,它突然需要永远!,如果我输入 c<100000000 需要 0 纳秒,但如果我在右侧添加一个“0”,则需要永远!
答案:正如 WhiZTiM 所说,编译器正在删除循环,因为它没有任何用处(感谢 gcc <3),但是当我们测试算法以查看不同编译器上哪个更快时,我们真的不希望发生这种情况(而不是这个特别的),为此我们可以在循环中插入一条 asm 行。asm("")
,一个空的汇编,在循环中的任何地方。这将告诉编译器有一些他无法优化的低级操作!,或者我们可以对循环中使用的任何变量使用 volitile 关键字,以防止编译器执行与该变量相关的任何优化。谢谢大家,我希望这会有所帮助
java - Scala - 运行时字符串模板
我想做java的字符串模板所做的事情,但是在scala中。但是,此库不适用于案例类:
ST 试图通过反射找到属性“str”,但它不适用于 scala。
没有ST如何实现?
automation - 使用数组或字节在结构化文本中设置多个输出
我在 TwinCAT3 中鬼混,试图熟悉 ST。我现在有一个简单的问题。
假设我有 8 个 LED。每个分配给一个输出 1-8。现在我希望能够发送一个看起来像这样的字节:10101010。让我们调用该变量来保存该字节 setOUTPUTS。我会按如下方式初始化 setOUTPUTS 以保持它吗?
初始化该变量后,我如何循环遍历它以将每个 LED 设置为相应的位?
例如:setOUTPUTS = 10001000,我将如何循环通过 setOUTPUTS 变量将 LED 8 和 LED 4 设置为 ON,同时让其他 LED 处于 OFF 状态。
如果这是不可能的,那么使用数组的替代方法是什么?
谢谢!!
plc - SyncStart 与 Codisys 没有 PLCOPEN 第 4 部分
我需要使用 PLCOPEN 在 Codesys 中逼近一个 SyncStart/SyncStop 函数。我无权访问包含同步运动内容的第 4 部分。任何关于如何在 ST 中走上正确道路的想法都很棒。