DPM 入门 > 设置数据自动化
设置数据自动化
DPM 可通过 DPM 自动化集成,准实时接收来自所连接定拍单元的数据。定拍单元是为工作中心设置生产节拍的工作单元。DPM 自动化集成支持 DPM 内的作业单更改 (开始生产、停止生产或更改作业单)、产品计数和次品计数,以及因机器代码映射到原因代码而得到的可用性事件。从连接的定拍单元接收数据会导致 ThingWorx 中的属性发生更改。具有良好质量数据的所有属性更改均存储在值流中。系统会按时间顺序每 5 分钟检索一次这些事务处理,并将其写入到 DPM 内的相应事件表格中。
例如,配置完所有数据自动化属性后,DPM 即可接收有关开始作业单生产的数据。当作业单处于生产中时,可通过接收数据的方式,为作业单添加产品计数和次品计数、记录机器的停运事件 (如工间休息或停电等),以及记录机器何时返回到运行状态。然后,DPM 可接收有关完成第一个作业单并开始下一个作业单生产的数据。
如果系统与定拍单元断开连接的时间不到 15 分钟,则系统会捕获在这段时间内发生的事件。如果系统断开连接的时间超过 15 分钟,则系统会忽略超过 15 分钟的事件。这样做是为了避免数据重复,因为操作员可能已经手动录入了这段时间内产生的数据。有关详细信息,请参阅手动数据条目和自动化数据条目
* 
请确保 Kepware 服务器与 ThingWorx 服务器上的系统时钟 (Windows OS 上的“日期和时间设置”) 在 5 秒内同步,并一直保持这种同步。
* 
在极少数情况下,DPM 数据库或 ThingWorx 数据库不可用可能会导致数据丢失或数据重复。有关详细信息,请参阅数据库可用性损失及其含义
设置数据自动化
要为 DPM 设置数据自动化,请完成以下步骤:
1. 安装数据源并将其连接到 ThingWorx
有关 Kepware 的详细信息,请参阅 KEPServerEX 版本 6 安装指南
有关 Azure IoT Hub 的详细信息,请参阅 Azure IoT Hub Connector Help Center
2. ThingWorx Composer 中,创建或使用工业连接。要创建新的工业连接,请创建一个新事物,并将 IndustrialGateway 事物模板作为其“基本事物模板”
3. 可对各个工作中心的定拍单元配置数据自动化。其他设备类型 (企业、地区、站点、生产区域或工作中心) 无法实现自动化。
对于定拍单元的工作单元事物,请完成以下步骤:
a. 将以下事物形态添加到“实现的事物形态”字段中:
PTC.OperationKPI.AutomationEventsModelLogic_TS
IndustrialThingShape
b. “值流”字段设置为 PTC.OperationKPI.Automation_VS
c. “属性和警报”下,将 IndustrialThing 属性设置为步骤 2 中提及的工业连接。
d. 设置要使用的数据自动化活动的属性。有关这些属性的信息,请参考下面的链接部分:
e. 单击“保存”以保存对工作单元事物所做的更改。
4. 对于希望自动执行的每个定拍单元,重复步骤 3。
* 
部署 DPM 时,将默认启用 PTC.OperationKPI.AutomatedEventProcessor_TI 计时器这意味着当配置数据自动化属性时,如果计时器触发批处理,会将自动化属性包括在内。您可以选择禁用计时器以在设置数据自动化时停止批处理,但请注意,这会停止对所有定拍单元的批处理,直到重新启用计时器为止。
要开始现有作业单
要使用数据自动化开始现有作业单,请在 ThingWorx Composer 中完成以下步骤:
1. 在定拍单元的工作单元事物的“属性和警报”下,将 PTCJobOrderID 属性绑定到相应标记。此属性接受 STRING 值。
2. 单击“保存”以保存对事物所做的更改。
每当 PTCJobOrderID 属性的值更改时,指定的作业单即会开始。如果某个作业单当前正在运行,与此同时,此属性的值更改,则此作业单即会完成,且新作业单随即开始。如果不存在具有该 ID 的作业单,则向操作员显示错误。作业单在“管理”“作业单”页面上创建。有关详细信息,请参阅创建作业单
如果 PTCJobOrderID 属性接收值 0 (即 PTCJobOrderIDNullValue 属性的默认值),则会完成当前正在运行的作业单,但不会开始任何新作业单。
如果操作员通过在 PTCJobOrderID 属性更改时间戳后的某个时间点开始生产停止生产来手动更改“生产仪表板”中作业单的状况,则会忽略属性更改,并向操作员显示错误。在自动化事件发生后,对这些自动化事件进行处理,并假定操作员实时了解设备上发生的情况。
要基于指定的物料创建作业单
要使用数据自动化基于指定物料创建作业单 (也称为物料运行),请在 ThingWorx Composer 中完成以下步骤:
1. 在定拍单元的工作单元事物的“属性和警报”下,将 PTCMaterialMasterID 属性绑定到相应标记。此属性接受 STRING 值。
2. 单击“保存”以保存对事物所做的更改。
每当 PTCMaterialMasterID 属性的值更改时,都会为指定的物料创建作业单,其默认目标数量为 1。如果某个作业单当前正在运行,与此同时,此属性的值更改,则此作业单即会完成,且新作业单随即开始。如果不存在与物料主数据 ID 相匹配的物料,则会引发错误。
如果操作员通过在 PTCMaterialMasterID 属性更改时间戳后的某个时间点开始生产或停止生产来手动更改“生产仪表板”中作业单的状况,则会忽略属性更改,并向操作员显示错误。在自动化事件发生后,对这些自动化事件进行处理,并假定操作员实时了解设备上发生的情况。
如果 PTCMaterialMasterID 属性接收值 0 (即 PTCMaterialMasterIDNullValue 属性的默认值),则会完成当前正在运行的作业单,但不会开始任何新作业单。
要更新作业单的目标数量
PTCTargetQuantity 属性用于为使用 PTCMaterialMasterID 属性创建的作业单设置目标数量。此属性应始终在设置 PTCMaterialMasterID 属性后设置。当此属性的值更改时,会更新当前正在运行的作业单的目标数量。
* 
如果有两种连续物料以相同的目标数量运行,则在发送第二个目标数量值之前,需先通过发送值 -1 (即 PTCTargetQuantityResetValue 属性的默认值) 来重置 PTCTargetQuantity 属性。系统不会将再次接收同一值视为数据更改。必须重置第二个作业单的目标数量的属性值,以将其更新为针对第一个作业单设置的值。
要使用数据自动化更新作业单的目标数量,请在 ThingWorx Composer 中完成以下步骤:
1. 在定拍单元的工作单元事物的“属性和警报”下,将 PTCTargetQuantity 属性绑定到相应标记。
2. 单击“保存”以保存对工作单元事物所做的更改。
要记录产品计数
产品计数器用于记录定拍单元的良品计数。总计产品计数是由良品计数加上次品计数计算得到的。
要使用数据自动化记录产品计数,请在 ThingWorx Composer 中完成以下步骤:
1. 在定拍单元的工作单元事物的“属性和警报”下,将 PTCProductionCount 属性绑定到相应标记。此属性接受数值。
2. 支持绝对产品计数器和滚动产品计数器。默认情况下,产品计数器是绝对计数器。要使产品计数器成为滚动计数器,需将事物的 PTCIsProductionCountRollover 属性设置为 TRUE,而将 PTCProductionRolloverCounter 属性设置为计数器的滚动值。
* 
绝对计数器用于记录接收到的新计数。例如,如果接收到的计数为 3、5 和 2,则总计数记录为 10。
滚动计数器用于记录前一个计数与新计数之间的差值,直到达到指定的滚动数值且计数器重置为止。滚动计数器重置后,可记录由前一个计数与滚动数值之间的差值加上新计数所得的数值。例如:
由滚动计数器接收计数 0、2 和 5。接收到 2 时,记录 2 (即 2 与 0 之间的差值)。接收到 5 时,记录 3 (即 2 与 5 之间的差值)。
由滚动计数器接收计数 990、998 和 3,且滚动数值为 999。接收到 998 时,记录 8 (即 998 与 990 之间的差值)。接收到 3 时,记录 4 (即 999 与 998 之间的差值,再加上新计数 3)。
滚动计数器不会随着工作单元事物作业单的更改而发生重置。
3. 默认情况下,产品计数器从 0 开始计数。如果希望产品计数器以不同的数值开始计数,请向具有以下值的 PTCLastAutomationProcessedValues 信息表属性中添加行:
propertyName - PTCProductionCount
value - 希望产品计数器开始计数的值。
jobOrderUid - DPM 会忽略此字段。
4. 单击“保存”以保存对工作单元事物所做的更改。
* 
对于绝对计数器,如果存在两个具有相同数值的连续产品计数,则在发送第二个产品计数值之前,需先通过发送值 -1 (即 PTC.ProductionCountResetValue 属性的默认值) 来重置 PTCProductionCount 属性。系统不会将再次接收同一值视为数据更改。必须重置具有相同值的第二个产品计数的属性值,才能将其识别为一个新的产品计数。
要记录次品计数
次品计数器用于记录定拍单元的次品计数。一个定拍单元可以有多个次品计数器。定拍单元的次品计数是根据其所有次品计数器的值计算而来。
DPM 中的每个次品计数器都会映射到由定拍单元生成的单个次品机器代码。因此,如果定拍单元具有的单个次品计数器可以为不同计数生成不同机器代码,则需要在数据源中为要保持计数的每个机器代码创建唯一的次品计数器标记。
每个次品机器代码都将映射到 DPM 中的次品原因代码。
要使用数据自动化记录次品计数,请完成以下步骤:
1. 验证每个定拍单元中均存在次品机器代码,且已将这些机器代码分配给相应的次品原因代码。在“管理”中,可通过“设备列表”中工作单元的“机器代码设置”选项卡查看机器代码及其分配的原因代码。
* 
如果定拍单元中不存在机器代码,或机器代码未映射到原因代码,则会将通过该机器代码的数据自动化接收到的所有事件都记录为事件类别 (eventCategory) 和损失类别 (reasonCategory) 值为 Invalid 的事件。这些无效事件不会出现在生产仪表板事件日志中,不会添加到次品计数中,也不会在任何数据计算中予以考虑。
2. ThingWorx Composer 中定拍单元工作单元事物的“属性和警报”下,为要保持计数的每个次品机器代码创建属性。每个次品属性都被视为 DPM 中的次品计数器。
3. 支持绝对次品计数器和滚动次品计数器。默认情况下,次品计数器是绝对计数器。要使定拍单元中的次品计数器成为滚动计数器,需将事物的 PTCIsScrapCounterRollover 属性设置为 TRUE
* 
绝对计数器用于记录接收到的新计数。例如,如果接收到的计数为 3、5 和 2,则总计数记录为 10。
滚动计数器用于记录前一个计数与新计数之间的差值,直到达到指定的滚动数值且计数器重置为止。滚动计数器重置后,可记录由前一个计数与滚动数值之间的差值加上新计数所得的数值。例如:
由滚动计数器接收计数 0、2 和 5。接收到 2 时,记录 2 (即 2 与 0 之间的差值)。接收到 5 时,记录 3 (即 2 与 5 之间的差值)。
由滚动计数器接收计数 990、998 和 3,且滚动数值为 999。接收到 998 时,记录 8 (即 998 与 990 之间的差值)。接收到 3 时,记录 4 (即 999 与 998 之间的差值,再加上新计数 3)。
滚动计数器不会随着工作单元事物作业单的更改而发生重置。
4. 更新 PTCScrapEventProperties 属性,使其包含在步骤 2 中创建的每个次品属性。PTCScrapEventProperties 属性的值为信息表。对于每个次品属性,向包含以下信息的信息表中添加行:
propertyName - 次品属性的名称。
machineCode - 与次品属性关联的机器代码。
rolloverCounter - 滚动值。如果工作单元事物的 PTCIsScrapCountRollover 属性为 FALSE,则会忽略滚动值。
reallocateFromGoodCount - 如果需要从已记录的良品计数中重新分配为此属性接收的次品计数,请选中该复选框 (TRUE)。如果无需从此良品计数中重新分配为此属性接收的次品计数,请不要选中该复选框 (FALSE)。
在确定是否需要从良品计数中重新分配次品计数器所报告的次品计数时,请考虑次品计数器的位置。在记录良品计数之前和之后,均可记录次品计数,具体取决于次品计数器相对于产品计数器的物理位置。下图显示了一个简单示例,其中定拍单元有两个次品计数器:次品计数器 1 位于产品计数器之前,而次品计数器 2 位于产品计数器之后。
图示为具有两个次品计数器和一个产品计数器的定拍单元。次品计数器 1 位于产品计数器之前,而次品计数器 2 位于产品计数器之后。
从次品计数器 1 记录次品计数时,由于产品计数器尚未记录良品计数,因此,不需要从良品计数中重新分配次品计数。这里假定由次品计数器 1 得到的次品计数将不计入产品计数器所记录的良品计数。针对此次品计数器,将 reallocateFromGoodCount 设置为 FALSE
从次品计数器 2 记录次品计数时,产品计数器已记录良品计数。当前的任何次品都需要从良品计数中重新分配,因为这些次品包含在产品计数器所记录的良品计数中。针对此次品计数器,将 reallocateFromGoodCount 设置为 TRUE
* 
如果未在 PTCScrapEventProperties 信息表中正确映射次品属性和机器代码,则会将针对该次品属性接收的任何数据都记录为事件类别 (eventCategory) 和损失类别 (reasonCategory) 值为 Invalid 的事件。这些无效事件不会出现在生产仪表板事件日志中,不会添加到次品计数中,也不会在任何数据计算中予以考虑。
5. 默认情况下,每个次品计数器均从 0 开始计数。如果希望次品计数器以不同的数值开始计数,请向具有以下值的 PTCLastAutomationProcessedValues 信息表属性中添加行:
propertyName - 次品属性的名称。
value - 希望次品计数器开始计数的值。
jobOrderUid - DPM 会忽略此字段。
6. 针对在步骤 2 中创建的每个次品属性,添加对数据更改事件的订阅。在“订阅”下面,单击“添加”。指定下列信息:
“订阅信息”下,输入订阅的名称,然后选中“已启用”复选框。
“输入”下,选择 DataChange 事件,然后选择要为其创建订阅的次品属性的名称。
在脚本编辑器中,粘贴以下代码:
me.AddPTCValueStreamEntry({
propertyName: sourceProperty,
newEventData: eventData.newValue
});
单击“完成”
7. 单击“保存”以保存对工作单元事物所做的更改。
* 
对于绝对计数器,如果给定次品属性存在两个具有相同数值的连续次品计数,则在发送第二个次品计数值之前,需先通过发送值 -1 (即 PTC.ScrapCountResetValue 属性的默认值) 来重置次品属性。系统不会将再次接收同一值视为数据更改。对于同一次品属性,必须重置同一值的第二个产品计数的属性值,才能将其识别为一个新的次品计数。
* 
如果从定拍单元的工作单元事物中删除次品计数属性,则还必须将其从 PTCScrapEventProperties 属性中删除。PTCScrapEventProperties 属性中列出了不存在的次品计数属性,这样可防止针对该事物处理值流中的所有事件。
要记录可用性事件
可用性事件通过接受机器中映射到原因代码的机器代码来记录机器当前所处的状态。
要使用数据自动化记录可用性事件,请完成以下步骤:
1. 验证每个定拍单元中均存在故障机器代码,且已分配给相应的原因。其中包括“正在运行”机器代码,该机器代码分配有“正在运行”原因树中的原因代码。在“管理”中,可通过“设备列表”中工作单元的“机器代码设置”选项卡查看机器代码及其分配的原因代码。
* 
如果定拍单元中不存在机器代码,或机器代码未映射到已分配给定拍单元的原因树中的原因代码,则会将事件记录为原因代码为“未知”的事件。
2. ThingWorx Composer 中每个定拍单元的工作单元事物的“属性和警报”下,将 PTCAvailabilityEventFaultCode 属性绑定到相应标记。
3. 单击“保存”以保存对工作单元事物所做的更改。
这对您有帮助吗?