问题标签 [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.
cpu-registers - 使用结构化文本读取 WAGO PLC 状态寄存器
我有一个运行结构化文本应用程序的 WAGO PFC100 PLC。现在我想将 PLC 的状态读入一个变量。从手册中我发现状态寄存器0xFA0D
可以是1
(STOP)或2
(RUN)......但我无法找到如何阅读它的示例。
谁能告诉我如何将状态寄存器读入变量?
谢谢
编辑{好吧,我刚刚意识到它从PLC程序中读取运行/停止状态是多么愚蠢,因为它不是在停止状态下运行的。:D
我的意思是通过 OPC UA 传播这些信息,所以现在我检查了 OPC UA 服务器是否自己提供了该信息,但到目前为止找不到它。}
男朋友
mqtt - 如何使用 Tc3_IoTBase 在 TwinCAT 中处理大量 MQTT 订阅主题
我可以使用此代码阅读多个订阅主题。但是,我订阅了许多不同的主题,而且长长的 if 语句正在减慢我的代码速度。我已经不得不在 PlcTask 中将循环滴答的数量增加到 20(这可能是矫枉过正,但 10 还不够)。我正在寻找一种更智能的解决方案,它可以在更少的周期滴答声中发挥作用。在下面显示的代码中,可以清楚地看到这个 IF 语句有多长,这甚至不是整个 if 语句(仅针对主题 machine 和 motion1)。
我的主题是像“motion1/position”、“motion1/acceleration”、“motion2/acceleration”等(我希望你明白)。所以我已经能够通过订阅“motion1/#”来订阅所有的motion1主题。因此,我尝试使用 fb.Message.CompareTopic(sTopic:='motion1/#') 来查找属于 motion1 的主题,而不是识别主题“motion1/somethingsomething”的 if 语句。但是 fb.Message.CompareTopic(sTopic:='motion1/#') 无法识别 motion1 主题。
所以我展示的第一个代码确实从 MQTT 读取了我需要的所有消息,这真的很好。但是,应该有一种更有效的方法来做到这一点。我尝试了第二个代码中显示的方法,但是没有用。
st - 我正在寻找一种更简洁的方法来将变量与结构文本 (ST) 中的一系列数字进行比较
我试图找到一种更简洁的方法来将变量与一系列数字进行比较。
目前我这样做: IF int_variable=67 or int_variable=68 or int_variable=69 then...
有没有办法写类似: IF int_variable=67 到 69 then
提前致谢。
plc - 如何修复我在 PLC 中的设备队列上的错误
我正在尝试在 .st 中创建一个简单的队列,其中包含 6 个设备,这些设备应该按队列顺序打开和关闭,只有可用的设备应该连接。例如,我用 6 个可用设备进行了测试,然后我一个接一个不可用,但最后一个始终不会在输出处关闭,并使程序停止。我使用 infoteam 的 OpenPCS IDE。
mqtt - 使用 TC3_IoT_Communication 的 MQTT;没有与 MQTT 代理连接,但没有错误
我的计算机上运行了一个 mqtt 代理,我可以使用 twincat 连接到它。我将 mqtt 代理移动到同一网络上的服务器。
我可以使用 Node-RED 连接它(因此主机名、主机端口、用户名和密码必须正确),但 TwinCAT 无法连接到它。这是我用来连接到我的 MQTT 代理的代码。
我的变量:
我的代码:
我希望在我的代理和 TwinCAT 之间建立联系。相反,我没有连接,我从 fbMqttClient 获取这些数据:
我希望有人可以帮助我找出问题所在以及如何解决此问题。
plc - 如何为电机中的控制器状态创建时序?
定时可用于在触发或关闭同一电机时产生延迟,或在不同电机之间产生打开或关闭延迟。这是一项用于保护电机的功能,可避免以非常短的间隔驱动。在警报情况下,电机会自动禁用(随着时间的推移优先)以避免进一步损坏。
通过创建一个子例程来读取机器的状态来启动我的代码,这将告诉我它是打开还是关闭。然后创建一个读取处于警报状态的机器的子程序,然后我检查了机器是否处于警报状态。在这段代码下面,我创建了一个驱动电机的例程,然后创建一个例程来触发必须连接电机上的输出,我用一个 else 完成了我的代码,它关闭了电机。
我还没有测试代码。但是我一般用CFC来测试。
plc - 如何在 ST(Twincat2)中使用 TRUE 初始化布尔数组?
如何使用 TRUE 在结构化文本 (Twincat 2) 中初始化布尔数组?
例如像这样:
terminal - 在 Raspberry pi 3 中运行结构化文本文件
我有我的树莓派 pi3,我在结构化文本语言的文本编辑器中做了一个小的基本代码。我不知道如何在终端中运行代码。我在树莓派中运行 OPEN PLC。所以应该有一些方法可以在终端中运行结构化文本语言代码。
任何的意见都将会有帮助。
我已将文件保存在 .st 扩展名中,这似乎是结构化文本文件的扩展名。当我在终端中键入 filename.st 时,它说命令无法执行。
当我尝试运行代码时出现错误消息,它说命令无法执行。我想知道如何在终端中编译和运行文件(在 .st 扩展中)。
plc - 结构化文本中的延迟计时器
我刚刚开始使用结构化文本在PLC上工作,我必须在每次延迟 1 分钟后将值存储在温度变量数组中,但我无法做到这一点。
这是一种伪代码。我只需要在循环中引入延迟,每隔 1 分钟它就可以读取该值并将其存储在数组位置中。
即使有任何其他方式,我也会非常感激。
lib - 使用我自己的库项目中的功能块时出现未知类型错误
所以我有一个库项目,我在其中定义了几个功能块和接口。现在我想在 plc 项目中使用这个库(在同一个 twincat 解决方案中)。因此,我将整个保存、重建、保存和安装为库 spiel。如果我尝试在我的 MAIN 中声明一个 VAR,它将导致未知类型错误。我摆弄了一下,当我声明一个没有任何属性或方法的接口(在库中)时,它确实会显示出来并且可以在 MAIN 中使用。但是,一旦我添加了一个属性或方法,类/FB/POU 就会在我的 MAIN 眼中消失……
我觉得我忽略了一些选项/属性来帮助 PLC 项目正确使用 lib ......我在这里错过了什么?编辑:正如您在图像中看到的那样,找到了空块,添加任何东西神奇地使它消失 错误 可用类
编辑2:我通过将lib复制到新解决方案来解决我的问题。原始项目中的某些东西使它被破坏了。为什么会这样仍然是个谜……