问题标签 [wago]
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 - Codesys 2.3 - wago 750-842 - I/O
我需要你的帮助来解决我面临的一个“奇怪”问题。
Mywago 750-842
不写入数字输出,也不读取数字输入。
您可以在下面找到我非常简单的程序以及硬件配置。
总而言之,我有一个 8 通道 DO 模块、一个 8 通道 DI 模块和一个 2 通道 AI 模块。
我正在使用 Codesys 2.3.9.62。据我所知,750-842 与 Codesys v3 不兼容。
我正确收到了 2 AI,但我在程序中的 DI 总是错误的,无论真实的 DI 状态如何。
DO 也总是错误的,即使我激活了程序的输出。
我觉得我错过了一些非常简单的配置步骤或类似的东西。
我还想指出:
- 硬件正常工作,因为所有 I/O 都按预期响应 modbus 请求
- 程序是正确的,因为在模拟模式下一切都按预期工作
您能否就如何正确读取输入和写入输出以使硬件表现得像预期的那样给我建议?
azure - Azure IOT HUB,更改 MQTT 版本?
我有一个关于 IoT 中心的问题。
我使用 Wage 将 Azure IoT Hub 中的新通量安装到了设备上。使用的通信协议是 MQTT。默认版本是:1.0 我的问题是没有发送的 id-device(空值)。我想在 IoT Hub 上将 MQTT 升级到更高版本,但我失败了:(谁能帮我找到最简单的配置方法?它只是设备双胞胎中的配置吗?如果是,是哪一个?
提前感谢您的帮助 最好的问候, Abdelrahman ELGAMAL +33612946655
ansible - ansible playbook 执行并且没有显示错误,但没有在主机上执行预期的操作
尝试将 ansible 与 wago 控制器主机文件结合使用已正确设置。在进入客户编码之前,我想检查一切是否按预期工作。因此,我确实创建了一个简单的小测试手册,它只创建了一个文本文件......
在控制器上安装python 3 /tmp 文件夹具有以下访问权限
执行脚本
带来以下输出
如果我登录控制器并检查文件...不存在文件...在此之前不起作用..深入研究配置没有意义
建议...确实也检查了shell命令...导致相同的效果..
plc - 指针表
我正在使用 Wago PLC - PFC200 - 用于家庭自动化。我已经做了大部分的事情,比如灯光或百叶窗自动化。最近我决定做一些重构,我开始认为这样的 PLC 不是带有垃圾收集器的 PC,它可能是有益的,而不是在表中将 POU 传递给那些 POU 的指针。
我从这样的事情开始:
宣言:
Relay
我的 POU(程序组织单元 - 就像一个班级)在哪里。
初始化:
POU方法中的用法:
但我可能有益于为变量节省一些内存并采用这种方法:
宣言:
初始化:
POU方法中的用法:
这有意义吗?我家里有 15 个房间,大多数房间都有不止一盏灯(所以有更多的Relay
物体)。不多,但是,PLC不是PC,有一些内存限制。
plc - VAR RETAIN PERSISTENT 的使用
我在我的家庭自动化项目中使用 WAGO PLC PFC200。我有很多 POU,每个房间都有。每个房间都实现了 IRoom 接口,并使用基本 POU 进行通用逻辑,例如关闭所有灯。对于灯光管理,我正在使用
FbEvaluateShortLongPress
fromWagoAppBuilding
处理墙上按钮的短按和长按(它也可以是 OSCAT 库中的功能块)FbLatchingRelay
从WagoAppBuilding
作为 PLC 数字输出的切换开关
我想保存状态FbLatchingRelay
以防例如:断电。我希望在电源恢复时打开所有在掉电之前关闭的灯。
我已经通过在我的 POU 中声明一个区域FbLatchingRelay
来解决它。VAR RETAIN PERSISTENT
但是在读到这里之后:
如果将功能块中的局部变量声明为 RETAIN,CODESYS 会将该功能块的完整实例存储在 Retain 范围内(功能块的所有数据);但是,只有声明的 RETAIN 变量会被这样处理。
我决定更改它,以免浪费 RETAIN 内存用于 POU 中但不需要存储为 RETAIN 的一堆变量。
所以现在我有这样的东西:
- VAR RETAIN PERSISTENT 区域仅在我的主程序中声明
- 它只为每个房间(每个 POU)存储所需数据的结构 - FbLatchingRelay POU 和一些其他变量
- 在初始化房间(POU)时,我使用 VAR_IN_OUT 将这些结构传递到我的房间
- 每个房间(POU)都使用这个数据
PLC_PRG:
浴室POU:
这是一个好方法吗?你怎么看?它使项目有点复杂,但我不会为不应该存在的东西(整个 POU)浪费 RETAIN 内存。
plc - 整个功能块真的存储在 RETAIN 内存中吗?
在 CodeSys手册中,我们可以读到:
"如果将功能块中的局部变量声明为 RETAIN,CODESYS 会将这个功能块的完整实例存储在 Retain 范围内(功能块的所有数据);但是,只有声明的 RETAIN 变量会被这样处理。 "
但是真的有人测试过吗?我创建了一个只有以下变量的功能块:
我的程序只实现了这个功能块的一个实例。在运行时使用SIZEOF
显示功能块大小为 312 字节
现在,如果我右键单击设备,然后转到“设备内存信息”,我的保留数据的大小只有 203 字节。
如果功能块的完整实例存储在保留范围中,我希望保留数据大小与功能块大小(312 字节)相同,但事实并非如此,它只有 203 字节(大小保留数据)。说明书有误吗?
plc - OSCAT 百叶窗和自动校准
我正在使用 OSCAT 库来控制百叶窗。我的 PLC 是 Wago 的 PFC200,我使用的是 e!Cockpit。一切正常,但我想摆脱BLIND_CONTROL_S
功能块中内置的电源故障后的自动校准。
正如在最后一句中所写的那样,“但是,如果输入 UP 和 DN 均为 FALSE,则可以防止自动校准”。它实际上会停止校准百叶窗(基本上是上下移动),但之后我无法再控制百叶窗 - UP 和 DOWN 按钮不起作用。
我几乎尝试了所有事情,但没有运气。使用这种方法按钮可以正常工作:
但在这种情况下,有一个我不喜欢的自动校准。所有的百叶窗都在上升然后下降。我将在一周内搬进新房子,一开始我会大量修改我的程序,我不希望每次下载都会移动百叶窗。
女巫这种方法校准被关闭(如文档的最后一句中所建议的):
但是按钮不再起作用。
更新:整个问题可能是由于 BLIND_INPUT 引起的,因为 PLC 启动时 QU 和 QA 自动设置为 TRUE:
而且我没有找到使它们为 FALSE 的方法。即使我将强制为假,但在下一个 PLC 周期中它们再次变为真。直到百叶窗在配置的时间内上升/下降。
plc - 铸造功能块
我正在使用 Wago PFC200 进行家庭自动化。我得到了基本功能块:
FUNCTION_BLOCK ABSTRACT Room
和两个接口:
和
我房间的实例如下所示:
FUNCTION_BLOCK Garage EXTENDS Room IMPLEMENTS ILights, IBlinds
在我的 PLC_PRG 中,我有我房间的所有实例:
在 PLC_PRG 下,我有一些方法,例如:自动化 blids:
但是我在 _rooms 数组中遇到了以下编译错误:C0032: Cannot convert type 'POINTER TO Garage' to type 'POINTER TO IBlinds'
我的功能块实际上实现了 IBlinds。有没有办法投射功能块?
python - OPCua 订阅数组的特定项/索引
我有一个 OPCua 服务器,它由一个对象数组[1000](4 x reals,2 x int,2 x Enumerators)组成。
我正在尝试订阅 Object[104].real2
我目前可以订阅对象并在每次有更新时接收所有 1000 个对象。但这是获取大量信息的方式。
如果我能找到一种简单的方法将数据直接接收到我自己的类中,我会很乐意订阅 object[104]。目前所有数据都以一系列字节的形式返回。