工厂自动化#
本文档将提供使用凯睿德制造软件的Connect IoT模块提供的功能配置工厂自动化工作流的快速指南。
概述#
在本示例中,我们将定义一个存储在数据库中的数据的使用者(我们可以认为它是由物联网数据平台的使用者放在那里的,或是通过与计算机的连接)以及将处理数据接收、解析和使用方式的控制器。使用凯睿德制造软件的Connect IoT模块(自动化协议、自动化驱动程序定义和自动化控制器)提供的对象,我们将创建结构,允许用户了解和配置工厂自动化的环境。在本示例中,将配置一个使用OPC-UA包的协议。为了创建适当的结构来接收和处理凯睿德制造软件中的事件,必须执行以下几个步骤:
- 创建自动化协议以指定要使用的协议类型。
- 创建Connect IoT自动化控制器,从生成器中充当事件的检索者,另一个充当作业创建者。
- 创建将使用自动化协议的自动化驱动程序定义。
- 创建一个物联网事件定义,该定义将允许从接收到的数据生成作业有效负载。
- 创建一个工厂自动化自动化控制器,该控制器将充当作业消费者。
上述步骤将在系统中创建对象,用于处理事件和其中包含的有效负载。
预设置#
假设Connect IoT 模块已获得许可,并已在主安装后按照《安装指南》中Connect IoT安装部分下列出的正确步骤进行了正确安装。需要另外两种设置:
-
具体的配置涉及在任何一个将被自动化控制器访问和处理的对象(例如资源)中设置一个属性。为此,特定实体的实体类型页面中的已启用Connect IoT属性必须处于活动状态。
-
需要的另一项设置是使用集成用户帐户,由控制器用作工作流作业的执行者。这可以在管理部分的用户页面中设置。
执行这些配置后,我们先从Connect IoT配置开始:
创建第一个自动化协议#
在主菜单的“业务数据”部分,导航至自动化协议磁贴并创建新条目。提供自动化协议的名称,请记住,该名称将标识协议并将用于其他实体的配置,因此请确保该名称有意义,以便于参考。由于我们将使用基于OPC-UA包的协议,请选择@criticalmanufacturing/connect-iot-driver-opcua包以及可用的版本,并与当前安装的MES版本匹配以获得最大的兼容性,然后按下一步。以下是这些值的示例:
转到参数部分,显示的值是包中的默认值,除非特别要求,否则不需要更改。 (例如,IT部门决定所有端口都必须在特定范围内。这些值可以在此处配置,并由基于此自动化协议的所有自动化驱动程序定义继承)
Info
详细信息见《用户指南》的OPC UA页面。
在最后一节中,将显示数据类型和扩展数据(每个对象的属性)的列表,以便用户了解可用于配置的内容。按创建将完成自动化协议的创建。
创建第二个自动化协议#
第二个自动化协议将根据第一个协议检索到的信息执行操作,从而有效地将这两个操作脱钩。再次为自动化协议提供一个名称,确保该名称有意义,供以后参考。这次我们将使用工厂自动化包,因此请选择@criticalmanufacturing/connect-iot-driver-factoryautomation包以及相应的版本,然后按下一步。以下是这些值的示例:
参数和协议数据类型部分将与OPC-UA 配置略有不同,因为驱动程序在这两种情况下提供不同的值。和前面一样,按创建完成第二个自动化协议的创建。
Info
有关《用户指南》工厂自动化页面的详细信息。
此时,自动化协议已经对用户可用了。下一步涉及到创建一个自动化驱动程序定义,以便定义机器将如何呈现我们希望用于每种情况的数据。
为了模拟来自OPC-UA服务器的数据生成,我们将使用OPC-UA驱动程序作为客户端,并连接到在开发机器上运行的OPC-UA服务器。
创建自动化驱动程序定义#
对于这一特定示例,让我们想象一下通过OPC-UA连接到MES系统的传送带,条码阅读器可在货品通过位于传送机末端的传感器时检测货品是否存在,并通过OPC-UA将扫描的值写入属性字段。首先,我们应该以自动化驱动程序定义的形式创建一个代表同一连接的对象。转到“业务数据”菜单,选择自动化驱动程序定义磁贴,然后创建一个新条目。使用有意义的名称,并使用上面创建的OPC-UA协议作为自动化协议的值。
在属性面板中,创建将包含应从条码阅读器接收的值的属性。对字段使用以下值:
- 名称 -
Barcode - NodeId -
ns=2;s=Demo.Static.Scalar.String(可从OPC-UA服务器检索的值,用于引用条码阅读器写入的节点) - 类型 -
String(应与要写入的值类型匹配) - 协议数据类型 -
String(也应与要写入的值类型匹配)
可写和可读的值应取决于每台机器,因此,我们不做改动。
转到事件面板,我们将创建一个事件,当条码属性的值更改时将触发该事件。使用这些值:
- 名称 -
OnBarcodeRead - 事件类型 - 订阅(以便每次值更改时都会通知MES)
- 已启用 -
True
现在,我们将在事件属性面板中定义我们要订阅的实际项目。
对于OnBarcodeRead事件,添加一个新条目并选择条码属性。由于在本教程的范围内不会创建任何命令,我们可以跳过命令和命令参数面板,并完成创建自动化驱动程序定义。
创建自动化控制器#
现在,我们准备设计一个自动化控制器,它可以为我们提供实际的逻辑工作流来处理从条码读取事件中接收到的值,并相应地对其进行操作。让我们为每个范围类型(ConnectIoT和工厂自动化)创建一个控制器。再次导航到“业务数据”菜单,创建新的自动化控制器并使用以下值:
- 名称 -
Conveyor - 范围 - 物联网模块
- 版本 - 随系统一起安装的版本
Info
Connect IoT控制器将始终处于活动状态,并在触发工作流后立即执行其逻辑,而工厂自动化控制器将等待,直到通过使用自动化作业(这些作业是那些相同的工厂自动化工作流的实例)调用它,执行其逻辑,完成后不再使用。
在下一个面板中,选择上面创建的自动化驱动程序定义。我们还可以选择其他驱动程序定义以启用与其他计算机类型的连接,但在本例中,我们使用上面创建的Conveyor驱动程序定义,将其称为“OPC UA服务器”。我们还将为任务选择不同的颜色,以便在工作流设计器中轻松区分它们。
转到任务面板,我们可以选择ConnectIoT元数据中指定的任何类型的任务包,并根据安装情况选择系统中可用的任务包。在这种情况下,我们只需要核心包,因为我们需要的所有任务都位于其中。我们现在可以创建控制器并开始设计工作流。
Warning
用户可以在以后添加更多包,但任务包一旦添加,就无法从控制器中移除,以避免工作流不一致。
创建传送机工作流#
创建控制器后,工作流设计器会打开,其中包含能够连接到机器所需的最小任务块。用高级逻辑术语来说,如下所示:
- 当工作流开始在设备设置时块中设置并运行启动例程(oninitialize)时,它将执行连接函数以打开与机器的连接。
- 当驱动程序进入onSetup模式时,它将在设备设置结果块中被标记为成功。
Info
详细信息见《用户指南》的创建设置工作流页面。
现在让我们告诉工作流,我们想要连接到OPC-UA服务器。通过按块右上角的三个点打开设备设置时块设置并导航至通信参数选项卡,我们将指定OPC -UA服务器的地址。
Info
为了本教程的目的,我们正在使用本地OPC-UA服务器模拟由第三方应用程序提供的实际传送机。可以使用任何兼容的OPC-UA服务器。
然后让我们确认,我们可以收到传送机发送的事件。首先,让我们在工作流中创建一个新页面,以保持内容整洁。按下按钮并新页面,将其称为“条码处理程序”。
在此新页面中,我们将把设备事件时任务磁贴从右侧的任务面板拖到工作流画布上。您可以使用搜索框搜索任何磁贴名称。编辑任务的设置,我们将添加我们在自动化驱动程序定义中配置的自动化事件。由于它是我们唯一配置的,它将用我们以前配置的条码输出值自动填充输出选项卡。请注意,自动激活属性处于活动状态,因此每当更改属性的值时,控制器任务将会激活。
关闭向导,注意条码字段已添加到任务中。
现在,我们来通过添加日志消息任务并将值写入文件来实际处理我们收到的数据。我们将选择该任务,将其添加到画布中并编辑设置:
- 模式 - MultipleInputs(启用传递接收到的值)
- 自定义格式 - True
- 消息格式 -
Received message ${bcr}
保存设置将允许通过条码属性链接两个任务,条码属性将自动在日志消息任务中生成输入。
创建第一个自动化管理器#
此时,我们需要创建一个自动化管理器,该管理器将成为系统中可用的自动化实例的逻辑聚合器。再次访问“业务数据”菜单页面并创建过滤器,我们使用以下设置:
- 名称 -
ConveyorManager01 - 监控器和管理器 - 可以使用不同的版本,但为了实现最大的兼容性,我们将选择匹配的版本
- 自动化管理器 ID -
ConveyorManager01(唯一标识符)
默认情况下,配置设置为允许管理器开箱即用,使用从MES的配置设置以及实际Connect IoT元数据中检索到的值进行填充。
通过按下载按钮,我们可以获得一个压缩文件,该文件包含从默认管理器克隆的整个配置,但使用我们自己的配置值进行了更新,这些值是在创建ConveyorManager01自动化管理器时设置的。
Info
通过这样做,将在提取新令牌的用户配置文件中创建一个新令牌,并使其能够运行管理器和相关的工作流。详细信息见《安装指南》中的自动化管理器配置文件。
该文件将被下载,我们可以将该文件解压到单独的文件夹中,且我们可以通过进入scripts文件夹并运行StartConsole.bat文件来开始通过我们之前创建的自动化管理器运行Connect IoT实例。
Warning
如果没有证书可用于正确验证管理器,请访问《安装指南》中Connect IoT安装页面的“故障排除”部分,以解决该问题。
连接到管理器#
下一步是告诉新创建的自动化管理器实际要做什么。然后,让我们返回到自动化控制器页面并按下连接按钮,指定我们指定的特定资源,并使用我们在上面创建的自动化管理器。按下一步将允许用户选择将为每台单独的机器运行的实例。保持一对一关系,让我们选择与上一节中相同的值,然后按连接。
自动化管理器现在将下载这些实体的所有信息,解压缩这些信息,然后开始运行所需的一切来运行自动化。建立连接后,我们可以看到状态更改为Communicating,表示连接处于活动状态。
我们还可以通过导航到自动化菜单项的ConnectIoT部分来确认连接是否正在运行。
为了测试连通性,我们将模拟条码阅读器在OUT OPC-UA测试客户端中读取的值,并将属性值更改为NewBarcodeValue。自动化管理器应该收到该值,因为它已订阅该特定属性中的任何更改,并且您可以看到LogMessage任务中的logMessage条目正在以我们指定的详细程度执行,在本例中为错误。然后,OPC-UA数据源与Connect IoT之间的连接成功建立。
此时,我们准备通过创建将消费数据的驱动程序来为工厂自动化准备系统。现在,我们可以创建一个物联网事件定义,它将模拟从机器发送事件的过程,稍后将存储在数据库中供将来使用。
创建物联网事件定义#
让我们通过访问业务数据并选择物联网事件定义磁贴来创建新实体。让我们从以下值开始:
- 名称 -
OnConveyorBarcode - 类型 -
Factory Automation
我们还将添加一个名为Barcode,类型为字符串的属性。
Info
详细信息见通过物联网数据平台进行事件摄取教程。
现在,为了迫使我们的控制器实际发送事件,让我们在每次扫描条码时发布事件。进入自动化控制器页面,我们将添加一个名为API Post Event的新任务,该任务将仅执行此操作。将其拖到“条码处理程序”页面的画布后,我们将编辑设置,以选择我们刚刚创建的OnConveyorBarcode事件定义作为事件属性。
现在,我们可以链接OnEquipmentEvent的条码属性,该属性将保存扫描的条码,并将其链接到新的API发布事件任务,同时还有另一个链接来激活该任务。
现在,回到我们的OPC-UA客户端,如果我们更改条码的值,事件应该会被触发并存储在数据库中。
Info
默认情况下,事件将在名为T_IoTEventQueue的数据库表中创建。
创建新的自动化驱动程序定义#
我们现在将创建一个新的自动化驱动程序定义,它将在协议之间形成逻辑桥梁。使用有意义的名称并使用上面创建的Factory Automation自动化协议创建一个。
创建第二个自动化控制器#
然后,创建自动化控制器以实际消费和使用数据。创建一个新的,并使用以下设置:
- 名称 -
Worker - 范围 - 物联网模块
- 版本 - 随系统一起安装的版本
在驱动程序定义页面中,选择上面创建的Worker,并将其命名为Database。在任务页面中,选择核心和工厂自动化任务,因为我们将需要仅在工厂自动化包中可用的工作者管理器任务。创建自动化控制器。
在此工作流中,我们必须在设备设置时任务中配置与数据库的连接:
- 服务器 - SQL Server地址
- 端口 - 53419(SQL Server引擎的TCP/IP端口)。
- 用户 - 将连接到数据库的用户
- 密码 - 将连接到数据库的用户的密码
- DatabaseName - 使用的数据库的名称
- DefaultJobType - 作业类型(从
AutomationJobType通用表中检索到的可能值) - WildcardTopic - 要在数据库条目中标识的主题的名称,在本例中:
%_factoryautomation_%
Info
如果SQL Server没有启用TCP/IP,请访问http://www.manifold.net/doc/mfd9/enable_tcp_ip_for_sql_server.htm ⧉以详细了解如何启用此设置。
保存这些设置后,我们现在必须在画布中添加新的工作者管理器任务。此任务没有任何可配置的设置,但必须将实例放置在工作流中,以便能够正确检索和操作控制器。
Warning
不应从工作流中移除工作者管理器,否则它将无法正常工作。
创建第二个自动化管理器#
现在,我们可以创建一个新的自动化管理器来运行这个新的自动化控制器。我们称之为WorkerManager01,并使用相同的值作为自动化管理器ID。现在,我们将下载该管理器,并使用ConveyorManager01自动化管理器运行它,就像前面一样。通过自动化控制器连接到运行中的管理器,我们可以轻松地扩展运行中的实例数。
Note
需要第二个自动化管理器(以及第二个自动化控制器)是为了在我们需要在网络位置方面进行脱钩的情况下,以及在出现瓶颈情况,且作业没有得到充分处理的情况下,需要增加当前运行的实例数时,能够轻松扩展一定数量的控制器。
创建最终的自动化控制器#
最后,我们可以创建将用来处理事件的工厂自动化工作流。再次转至自动化控制器部分,我们现在创建了一个具有以下值的新控制器:
- 名称 -
HandleConveyorTransport - 范围 - 工厂自动化
- 超时 - 30(秒,直至作业被视为无响应)
由于我们将范围更改为FactoryAutomation,我们现在将定义物联网事件定义,而不是定义事件。选择我们之前创建的OnConveyorBarcode。
在任务页面中,由于自动化控制器的范围,“核心”和“工厂自动化”已被预选,无法取消选定。按创建完成该过程。
由于我们已经选择了OnConveyorBarcode事件定义,Barcode 属性将自动添加到作业开始时任务中。让我们在画布中添加一些日志记录和新的计时器任务,在执行任何操作之前配置10秒的睡眠期。将计时器的成功和错误输出链接到作业结束任务的相同输入。
此最后一个处理程序工作流将如下所示:
总结#
从大的方面来说,我们有:
- 当读取条码时,事件将从OPC-UA客户端发送并由
Conveyor控制器接收,后者会向控制台记录一条消息。该控制器发布一个事件,连接到数据库,并为工厂自动化存储一个作业信息。 - 第二个控制器收集这些数据库作业并创建一个工厂自动化作业。
- 该作业将由范围是
FactoryAutomation的第三个控制器执行,该控制器将使用接收到的条码值再次记录消息,并在计时器到期后完成。
可以在工厂自动化视图中查看作业的列表及其当前状态,该视图可以从自动化下的主菜单访问。如果作业失败,可以使用顶部功能区的按钮从同一页面重新启动该作业。
Info
More information on the Factory Automation section of the User Guide.



































