首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OPC发布者不按OPC模拟服务器生成的顺序发送数据

OPC发布者不按OPC模拟服务器生成的顺序发送数据
EN

Stack Overflow用户
提问于 2021-07-30 13:15:24
回答 2查看 418关注 0票数 1

我一直试图在Azure IOT Edge的自定义模块中检索OPC仿真服务器生成的传感器数据( excel文件中列出的数据,OPC仿真读取的数据)。当记录在控制台中的数据时,它会显示数据没有按顺序记录。下面是作为一个模块托管在物联网边缘的JSON。

代码语言:javascript
复制
        "OPCPublisher": {
        "version": "1.0",
        "type": "docker",
        "status": "running",
        "restartPolicy": "always",
        "settings": {
          "image": "mcr.microsoft.com/iotedge/opc-publisher:2.8",
          "createOptions": {
            "Hostname": "publisher",
            "Cmd": [
              "publisher",
              "--pf=/appdata/publishednodes.json",
              "--lf=/appdata/publisher.log",
              "--aa"
            ],
            "HostConfig": {
              "Binds": [
                "/home/sineth/iiotedge:/appdata"
              ]
            }
          }
        }
      }

以下是网关设备中已发布的节点json。

以下是我的excel工作表数据的屏幕截图

但是order不会将数据路由到模块,以便从任何地方()开始,而是按顺序()。例如,它从行开始发送值11 ( Tag11 ),然后再发送下一行(标记11的值为17 ),有时还发送一批数据。没有适当的命令。这不是OPC服务器模拟的问题,因为我已经用一个独立的OPC客户端测试了模拟服务器,并且它得到了有序的数据。Excel由仿真服务器读取。下面的图片是我的IoT边缘模块(Python)的屏幕截图,我将数据记录到控制台从OPC路由检索。

感谢你在这方面的任何帮助。非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-14 13:00:48

在这里添加来自GitHub问题讨论的摘要:

  • OPC发布者为每个OPC UA端点生成一个唯一的消息id (自动增加一个)
  • 上面的python代码将相同的消息记录超过3500次
    • 消息的接收似乎不会阻塞,因此正在一次又一次地处理相同的消息
    • 不推荐使用receive_on_message_input,请参阅API文档

如果没有复制,所有的值更改都是有序的,但操作仍然不需要这种行为。

多个消息(包含所有三个标记的值更改)被批处理。

OPC发布者试图优化成本和性能,一次发送每个消息都不是它们,但是可以通过将批处理大小设置为一个直接发送数据的方式配置OPC Publisher。

命令行参数--bs=1

不从第一个值开始

OPC建立到OPC服务器的连接,并为其配置文件中的每个OPC节点创建受监视的项。默认情况下,OPC监视项将发送带有当前值的默认通知。如果您想忽略它,可以先使用skip。

命令行参数--sk=true

但在上述情况下,第一个值也是相关的。如果第一条消息(message = 1)不包含第一个值,那么OPC服务器模拟之前会更改它们。

请注意,OPC发布服务器只能在完全建立OPC UA客户机/服务器连接(包括信任证书)、订阅和监视项创建之后才能发布。这一次也取决于OPC UA服务器和网络的性能。

提案:

  • 将OPC模拟更改为只在客户端连接完全建立后启动模拟序列

多次检索相同的消息

如果多次接收消息,则从一个IoT边缘模块到另一个边缘模块的消息路由可能会出现错误。请确保显式地命名发送模块(在本例中是OPC发布服务器)

代码语言:javascript
复制
"$edgeHub": {
      "properties.desired": {
        "schemaVersion": "1.2",
        "routes": {
          "opcPublisherToPyDataConsumer": "FROM /messages/modules/opc-publisher INTO BrokeredEndpoint(\"/modules/PyDataConsumer/inputs/fromOPC\")"
        }
      }
    }
票数 2
EN

Stack Overflow用户

发布于 2021-08-02 23:35:19

所以有些问题:

  1. 你用的是什么版本的碘片?
  2. 只是日志不整齐,还是消息接收不正常?
  3. 您使用的是MQTT还是AMQP?
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68591571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档