Connect IoT - OIB驱动程序#
ASM OIB是一个集成平台,用于集成执行所需流程步骤所需的应用程序。
ASM OIB是这些应用程序的单一配置点。
ASM OIB的目的是将不同的部署和配置场景映射到一个可以从更高级别的软件应用程序以透明方式访问的配置中
因此,ASM OIB提供了一些功能来描述逻辑工厂结构。在此工厂结构中,可以动态注册应用程序服务。这样,即使在动态环境中,更高级别的软件也可以访问功能和信息。
另一个目的则是通过功能集群绑定的接口来提供服务。对于多个版本的应用程序,这些接口版本应该保持稳定。这样,即使更换了单个应用程序,也能使整个系统保持稳定。
数据类型#
这些是受支持的特定数据类型:
| 名称 | 描述 |
|---|---|
| 字符串 | 字符串值 |
| Bool | 布尔值 |
| Int | 整数值 |
| 双精度 | 双精度值 |
| 日期时间 | 日期和时间值 |
| 对象 | 结构化值 |
异常流程参数#
异常流程支持以下参数:
| 名称 | 类型 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|
| sdkVersion | 枚举 | OIB_53OIB_60 | OIB_60 | 要使用的SDK的基本版本。某些功能在早期版本上不起作用 |
| logUnhandledEvents | 布尔值 | false | 记录接收到的所有事件,即使控制器尚未处理这些事件也是如此 | |
| enableOibTraceData | 布尔值 | false | 驱动程序是否应将所有OIB跟踪数据记录为调试日志 | |
| dumpMessagesReceived | 布尔值 | false | 驱动程序是否应转储接收到的消息的调试日志 | |
| dumpMessagesReceivedPath | 字符串 | "${tmp}" | 转储接收到的消息的调试日志的路径(对于用户临时目录,请使用${tmp}令牌) | |
| localInterface | 字符串 | "" | OIB回调将查找的主机名(或IP)。留空则可使用 LocalNetworkName | |
| localNetworkName | 字符串 | "" | 用于获取IP信息的网络名称(部分名称,区分大小写)。留空则可使用注册的主机名。 | |
| lineNameResolver | 字符串 | ".*\\(.*)" | 用于从生产线完整路径中提取生产线名称的正则表达式 | |
| stationNameResolver | 字符串 | ".*\\(.*)" | 用于从工作站完整路径中提取工作站名称的正则表达式 | |
| linesToHandle | 字符串 | "" | 要使用此驱动程序处理的生产线列表(用逗号分隔)。将影响enable<OIBServiceName>的行为。留空则表示全部。 | |
| linesToIgnore | 字符串 | "" | 使用此驱动程序时要忽略的生产线列表(用逗号分隔)。将影响enable<OIBServiceName>的行为。留空则表示无。 | |
| defaultCommandTimeout | 整数 | 60000 | 驱动程序命令使用的默认超时(毫秒) | |
| callbackBasePort | 整数 | 4000 | 回调时使用的基本端口号。当服务回调端口配置为0时,将使用空闲端口。每个OIB服务都将在此基本端口的基础上适当进行偏移 | |
| coreHeartbeatInterval | 整数 | 60000 | 发送到OIB核心的检测信号帧之间的间隔等待时间(毫秒) | |
| configurationManagerAddress | 字符串 | "localhost" | 配置管理器侦听的主机名(或IP) | |
| configurationManagerPort | 整数 | 1406 | 配置管理器侦听的端口 | |
| configurationManagerCallbackPort | 整数 | 0 | OIB配置管理器将向其发回信息的端口。使用0可使用从以下端口号开始的空闲端口 callbackBasePort | |
| enableBoardGateKeeper | 枚举 | None | NoneOnePerEnterpriseOnePerLine | 如何激活BoardGateKeeper实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级)OnePerLine - 每条生产线一个实例 |
| boardGateKeeperCallbackPort | 整数 | 0 | 用于接收BoardGateKeeper事件的端口。使用0可使用从callbackBasePort + 100开始的空闲端口 | |
| boardGateKeeperReplyTimeout | 整数 | 60000 | 等待BoardRequest回复的毫秒数 | |
| boardGateKeeperRegisterMode | 枚举 | UnregisterFirstJustRegister | UnregisterFirst | 注册回调的模式UnregisterFirst - 在注册新服务之前取消注册服务以避免重复JustRegister - 不事先尝试注销任何内容。可以有重复项。 |
| boardGateKeeperSubscriptionNameSuffix | 字符串 | 将添加到订阅名称。可能的替换令牌包括${id}和 ${guid} | ||
| enableEventing | 枚举 | None | NoneOnePerEnterprise | 如何激活事件触发实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级) |
| eventingCallbackPort | 整数 | 0 | 用于接收事件触发/监控事件的端口。使用0可使用从callbackBasePort + 200开始的空闲端口 | |
| eventingEventsExpiration | 整数 | 60 | 触发和接收事件之间的到期时间(秒)。用于避免处理驱动程序未与OIB通信时发生的旧事件触发/监控事件 | |
| eventingSubscriptionNameSuffix | 字符串 | 将添加到订阅名称。可能的替换令牌包括${id}和 ${guid} | ||
| eventingSubscriptionExpiration | 整数 | 4 | 订阅事件触发/监控事件的小时数。将按照定义的相同时间量每30分钟更新 | |
| eventingSubscriptionMode | 枚举 | Permanent | PermanentNonPermanent | 定义订阅的注册方式。Permanent 用于PushWithAck,NonPermanent用于 PushReliable |
| enableMaintenance | 枚举 | None | NoneOnePerEnterpriseOnePerLine | 如何激活维保实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级)OnePerLine - 每条生产线一个实例 |
| maintenanceCallbackPort | 整数 | 0 | 用于接收维保事件的端口。使用0可使用从callbackBasePort + 300开始的空闲端口 | |
| maintenanceSubscriptionNameSuffix | 字符串 | 将添加到订阅名称。可能的替换令牌包括${id}和 ${guid} | ||
| maintenanceSubscriptionExpiration | 整数 | 4 | 订阅维保事件的小时数。将按照定义的相同时间量每30分钟续订。 | |
| maintenanceEventsExpiration | 整数 | 60 | 触发和接收事件之间的到期时间(秒)。用于避免处理驱动程序未与OIB通信时发生的旧维保事件 | |
| maintenanceSubscriptionMode | 枚举 | Permanent | PermanentNonPermanent | 定义订阅的注册方式。Permanent 用于PushWithAck,NonPermanent用于 PushReliable |
| maintenanceBulkEventCountSize | 整数 | 1000 | 批量事件计数大小:达到此值时将触发批量事件 | |
| enableSetupCenter | 枚举 | None | NoneOnePerEnterpriseOnePerLine | 如何激活SetupCenter实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级)OnePerLine - 每条生产线一个实例 |
| setupCenterCallbackPort | 整数 | 0 | 用于接收SetupCenter事件的端口。使用0可使用从callbackBasePort + 500开始的空闲端口 | |
| setupCenterEventsExpiration | 整数 | 60 | 触发和接收事件之间的到期时间(秒)。用于避免处理驱动程序未与OIB通信时发生的旧SetupCenter事件 | |
| setupCenterSubscriptionNameSuffix | 字符串 | 将添加到订阅名称。可能的替换令牌包括${id}和 ${guid} | ||
| setupCenterSubscriptionExpiration | 整数 | 4 | 订阅SetupCenter事件的小时数。将按照定义的相同时间量每30分钟续订。 | |
| enableFeederInterlocking | 枚举 | None | NoneOnePerEnterpriseOnePerLine | 如何激活进料器联锁实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级)OnePerLine - 每条生产线一个实例 |
| feederInterlockingCallbackPort | 整数 | 0 | 用于接收进料器联锁事件的端口。使用0可使用从callbackBasePort + 400开始的空闲端口 | |
| feederInterlockingStatusReplyTimeout | 整数 | 60000 | 等待FeederInterlockingStatus回复的毫秒数 | |
| enableTraceability | 枚举 | None | NoneOnePerEnterpriseOnePerLine | 如何激活可追溯性实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级)OnePerLine - 每条生产线一个实例 |
| traceabilityOperationMode | 枚举 | Subscription | SubscriptionInterlocking | 将使用可追溯性的模式 订阅 - 创建可追溯性数据订阅 联锁 - 注册可追溯性联锁服务 |
| traceabilityCallbackPort | 整数 | 0 | 用于接收可追溯性事件的端口。使用0可使用从callbackBasePort + 600开始的空闲端口 | |
| traceabilityReplyTimeout | 整数 | 60000 | 等待可追溯性回复的毫秒数 | |
| traceabilitySubscriptionNameSuffix | 字符串 | 将添加到订阅名称。可能的替换令牌包括${id}和 ${guid} | ||
| traceabilityRegisterMode | 枚举 | UnregisterFirstJustRegister | UnregisterFirst | 注册回调的模式UnregisterFirst - 在注册新服务之前取消注册服务以避免重复JustRegister - 不事先尝试注销任何内容。可以有重复项 |
| traceabilitySubscriptionExpiration | 整数 | 4 | 订阅可追溯性事件的小时数。将按照定义的相同时间量每30分钟更新 | |
| enableLineControl | 枚举 | None | NoneOnePerLine | 如何启用生产线控制模块以连接到已定义的所有生产线。None - 不会使用实例OnePerLine - 每条生产线一个实例 |
| 访问令牌 | 字符串 | 用于访问OIB功能的可选访问令牌 | ||
| useDockingStations | 布尔值 | false | 启用对坞站功能的支持 | |
| dockingStationsToHandle | 字符串 | "" | 要使用此驱动程序处理的坞站列表(用逗号分隔) | |
| dockingStationsToIgnore | 字符串 | "" | 使用此驱动程序时要忽略的坞站列表(用逗号分隔) | |
| enablePackagingUnit | 枚举 | None | NoneOnePerEnterpriseOnePerLine | 如何激活包装设备实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级)OnePerLine - 每条生产线一个实例 |
| packagingUnitCallbackPort | 整数 | 0 | 用于接收包装设备事件的端口。使用0可使用从callbackBasePort + 700开始的空闲端口 | |
| packagingUnitReplyTimeout | 整数 | 60000 | 等待包装设备请求回复的毫秒数 | |
| enablePrinterControl | 枚举 | None | NoneOnePerEnterpriseOnePerLine | 如何激活打印机控制实例:None - 不会使用实例OnePerEnterprise - 所有生产线一个实例(企业级)OnePerLine - 每条生产线一个实例 |
| printerControlCallbackPort | 整数 | 0 | 用于接收打印机控制事件的端口。使用0可使用从callbackBasePort + 800开始的空闲端口 | |
| printerControlReplyTimeout | 整数 | 60000 | 等待打印机控制请求回复的毫秒数 |
内部接口#
为了实现与Connect IoT的清晰集成,该系统实现了OIB接口与Connect IoT实体之间的内部映射。 此部分包含已完成的完整映射。
工厂布局#
工厂布局描述了工厂资源管理器和SIPLACE Desk Pro中与Lines、Stations、Head Types、Station Locations和DockingStations相关的配置。 请注意,Stations的stationType可以是PickAndPlace、Printer和GenericDevice。
属性#
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| OIB.Property.FactoryLayout | 对象 | 包含完整工厂布局的JSON格式的对象。 |
工厂布局JSON对象示例:
{
"lines": [
{
"site": "Virtual Site",
"area": "Virtual Area",
"friendlyName": "Virtual Production Line",
"name": "Virtual Line 01",
"fullPath": "Virtual Lines\\Virtual Line 01",
"siplaceProOID": 327843842,
"stations": [
{
"friendlyName": "Virtual SX4 01",
"name": "Virtual SX4 01",
"fullPath": "Virtual Stations\\Virtual SX4 01",
"model": "SIPLACE SX4",
"serialNumber": "10000000",
"stationType": "PickAndPlace",
"ipAddress": "10.0.0.6",
"locations": [
{
"location": "1",
"locationType": "FrontRight",
"headType": "C&P 20 10xx"
},
{
"location": "4",
"locationType": "FrontLeft",
"headType": "C&P 20 10xx"
},
{
"location": "2",
"locationType": "BackRight",
"headType": "C&P 20 10xx"
},
{
"location": "3",
"locationType": "BackLeft",
"headType": "C&P 20 10xx"
}
]
},
{
"friendlyName": "Virtual DEK Horizon Printer 01",
"name": "Virtual DEK Horizon Printer 01",
"fullPath": "Virtual DEK Horizon Printer 01",
"model": "DEK Horizon iX",
"serialNumber": "1116596",
"stationType": "Printer",
"ipAddress": "10.0.1.99",
"locations": []
},
{
"friendlyName": "Virtual DEK Horizon Printer 02",
"name": "Virtual DEK Horizon Printer 02",
"fullPath": "Virtual DEK Horizon Printer 02",
"model": "DEK Horizon iX",
"serialNumber": "1116604",
"stationType": "Printer",
"ipAddress": "10.0.1.96",
"locations": []
},
{
"friendlyName": "Virtual Reflow Oven 01",
"name": "Virtual Reflow Oven 01",
"fullPath": "Virtual Reflow Oven 01",
"model": "Oven_Heller Industries",
"serialNumber": "RO0001",
"stationType": "GenericDevice",
"ipAddress": "10.0.1.98",
"locations": []
},
{
"friendlyName": "Virtual Solder Paste Inspection 01",
"name": "Virtual Solder Paste Inspection 01",
"fullPath": "Virtual Solder Paste Inspection 01",
"model": "AOI_Koh Young Technology",
"serialNumber": "AOI0001",
"stationType": "GenericDevice",
"ipAddress": "10.0.1.97",
"locations": []
}
]
}
],
"heads": [
"C&P 12 3xxx",
"C&P 14 P 4xxx",
"C&P 20 10xx",
"C&P 20 M 1xxx",
"C&P 20 M2 4xxx",
"C&P 20 M3 6xxx",
"C&P 20 P 4xxx",
"C&P 20 P2 6xxx",
"C&P 6 3xxx",
"CPP 12 2xxx",
"CPP 12 M 2xxx",
"P&P Module",
"PP1",
"RV 12 7xx",
"RV 12 9xx",
"RV 6 8xx",
"RV 6 8xx9xx",
"RVC 6 9xx",
"Twin Head 5xx",
"Twin Head High Force 5xx",
"Twin VHF 5xx",
"Very High Force Head 5xx"
],
"dockingStations": []
}
事件#
OIB.Event.FactoryLayout#
该事件将包含属性OIB.Property.FactoryLayoutByEvent,该属性带有包含完整工厂布局的JSON格式的对象。
SiplacePro.Event.JobList#
该事件将包含属性SiplacePro.Property.JobList,该属性带有JSON格式的JobList对象。
SiplacePro.Event.JobDetails#
该事件将包含属性SiplacePro.Property.JobDetails,该属性带有JSON格式的JobDetails对象。
SiplacePro.Event.RecipeDetails#
该事件将包含属性SiplacePro.Property.RecipeDetails,该属性带有JSON格式的RecipeDetails对象。
命令#
Maintenance.Command.TriggerFactoryLayout#
此命令将触发请求来获取工厂布局。 实际数据响应会由通过OIB.Property.FactoryLayoutByEvent属性触发的OIB.Event.FactoryLayout事件公开。
此命令没有参数。
示例:
SendRequest connect.iot.driver.oib.executeCommand
Siplace Pro SPI#
Siplace Pro是一个用于管理SIPLACE生产线的生产数据的编程系统。我们将使用SPI(SIPLACE Pro接口),即编程接口(API),来访问SIPLACE Pro数据。
属性#
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| OIB.Property.FeederTypes | 对象 | 包含系统中可用的所有TapeFeederType的JSON格式的对象。 |
FeederType JSON对象的示例:
{
"feeders": [
{
"oid_long": 172,
"code": 60,
"name": "12mm S",
"fullPath": "TapeFeederType:12mm S"
},
{
"oid_long": 173,
"code": 61,
"name": "16mm S",
"fullPath": "TapeFeederType:16mm S"
},
{
"oid_long": 757,
"code": 554,
"name": "Label Presenter E",
"fullPath": "TapeFeederType:Label Presenter E"
},
{
"oid_long": 812,
"code": 782,
"name": "SEMO CRF80 X",
"fullPath": "TapeFeederType:SEMO CRF80 X"
},
{
"oid_long": 836,
"code": 284,
"name": "8mm X AR",
"fullPath": "TapeFeederType:8mm X AR"
},
{
"oid_long": 864,
"code": 794,
"name": "Generic Tape Feeder FFI X",
"fullPath": "TapeFeederType:Generic Tape Feeder FFI X"
}
]
}
命令#
SiplacePro.Command.GetSetupList#
此命令将触发请求来从特定生产线(LineFullPath)获取SetupFullPath的列表。 回复将包含该生产线上设置完整路径的字符串数组。 此命令的典型使用场合是针对controller-engine-oib-task任务包中的GetSetupList任务。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineFullPath | 字符串 | 是 | 从中获取设置列表的生产线完整路径(例如:“VVirtual Lines\Virtual Line 01”) |
GetSetupList任务中的典型输出示例:
["Demo Setups\\Virtual Line ASM ProcessExpert Testboard V10","Demo Setups\\Virtual Line ASM Simple Product Board","Demo Setups\\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]"]
SiplacePro.Command.GetSetupDetails#
此命令将触发请求来从特定SetupFullPath(及LineFullPath)获取设置详细信息。 回复将包含带有设置详细信息的对象。 此命令的典型使用场合是针对controller-engine-oib-task任务包中的GetSetupDetails任务。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineFullPath | 字符串 | 是 | 从中获取设置列表的生产线完整路径(例如:“VVirtual Lines\Virtual Line 01”) | ||
| SetupFullPath | 字符串 | 是 | 要从其获取SetupList的设置完整路径(例如:“Demo Setups\Virtual Line ASM ProcessExpert Testboard V10”) |
GetSetupDetails任务中的典型输出示例:
{
"FullPath": "Demo Setups\\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]",
"Stations": [
{
"FullPath": "Virtual Stations\\Virtual SX4 01",
"StationTopologyConfiguration": "HighSpeed",
"PCBCameraFullPath": "PCB Cam X (34)",
"BarcodeSystemTypeName": "External Forced System With CLI",
"EndOfCluster": "True",
"WhisperDownTheMachine": "False",
"PCBTransport": "Standard",
"SlowConveyorMode": "False",
"HeavyBoardConveyorMode": "False",
"PlacementMode": "Alternating",
"StationLocations": [
{
"Number": 1,
"LocationType": "FrontRight",
"StaticAttachableHeadTypeID": "Rev20Vhs",
"TableInsertType": "CotXInner",
"Tables": [
{
"TableFullPath": "System\\Table5[13562]",
"TableTypeID": "Changeover_40X",
"TableTypeFullPath": "Change Over Table 40 X",
"Feeders": [
{
"StartTrack": 0,
"Species": "Tape",
"TrackArea": 40,
"TypeName": "8mm X",
"TypeOIDLong": 292,
"TypeFullPath": "8mm X",
"Reserves": [
{
"Division": 1,
"ComponentFullPath": "Demo Components\\0201R",
"ComponentName": "0201R"
}
]
}
]
}
]
},
{
"Number": 4,
"LocationType": "FrontLeft",
"StaticAttachableHeadTypeID": "Rev20Vhs",
"TableInsertType": "CotXInner",
"Tables": [
{
"TableFullPath": "System\\Table6[13563]",
"TableTypeID": "Changeover_34X",
"TableTypeFullPath": "Change Over Table 34 X",
"Feeders": [
{
"StartTrack": 0,
"Species": "Tape",
"TrackArea": 7,
"TypeName": "8mm X",
"TypeOIDLong": 292,
"TypeFullPath": "8mm X",
"Reserves": [
{
"Division": 1,
"ComponentFullPath": "Demo Components\\0201R",
"ComponentName": "0201R"
}
]
}
]
}
]
},
{
"Number": 2,
"LocationType": "BackRight",
"StaticAttachableHeadTypeID": "Rev20Vhs",
"TableInsertType": "CotXInner",
"Tables": [
{
"TableFullPath": "System\\Table7[13564]",
"TableTypeID": "Changeover_34X",
"TableTypeFullPath": "Change Over Table 34 X",
"Feeders": [
{
"StartTrack": 0,
"Species": "Tape",
"TrackArea": 40,
"TypeName": "8mm X",
"TypeOIDLong": 292,
"TypeFullPath": "8mm X",
"Reserves": [
{
"Division": 1,
"ComponentFullPath": "Demo Components\\0201R",
"ComponentName": "0201R"
}
]
}
]
}
]
},
{
"Number": 3,
"LocationType": "BackLeft",
"StaticAttachableHeadTypeID": "Rev20Vhs",
"TableInsertType": "CotXInner",
"Tables": [
{
"TableFullPath": "System\\Table8[13565]",
"TableTypeID": "Changeover_40X",
"TableTypeFullPath": "Change Over Table 40 X",
"Feeders": [
{
"StartTrack": 0,
"Species": "Tape",
"TrackArea": 2,
"TypeName": "2 x 8mm X",
"TypeOIDLong": 461,
"TypeFullPath": "2 x 8mm X",
"Reserves": [
{
"Division": 2,
"ComponentFullPath": "Demo Components\\0201R",
"ComponentName": "0201R"
},
{
"Division": 1,
"ComponentFullPath": "Demo Components\\SOT23",
"ComponentName": "SOT23"
}
]
},
{
"StartTrack": 0,
"Species": "Tape",
"TrackArea": 1,
"TypeName": "8mm X",
"TypeOIDLong": 292,
"TypeFullPath": "8mm X",
"Reserves": [
{
"Division": 1,
"ComponentFullPath": "Demo Components\\0201R",
"ComponentName": "0201R"
}
]
}
]
}
]
}
]
}
]
}
如果您想根据RecipeDetailsOutput计算Feeder Reserve的提货数量,您可以使用code任务,通过该任务您可以将RecipeDetails和GetSetupDetails输出链接为code任务的输入,这样code任务的输出便会包含Pickup Quantity数据。 code任务具有以下输入/输出: | 名称 | 任务输入/输出 | 类型 | 描述 | | --- | --- | --- | | recipe | 任务输入 | 对象 | GetRecipeDetails任务输出 | | setup | 任务输入 | 对象 | GetSetupDetails任务输出 | | setupWithPickupQuantity | 任务输出 | 对象 | 包含PickupQuantity的SetupDetail |
此类计算的示例code任务如下所示: 示例代码:
import { Framework } from 'framework';
export default class {
/** Allows accessing external functions */
private framework: Framework;
constructor(framework: Framework) {
this.framework = framework;
}
/*
* Entry point of the class (IMPORTANT: don't change the signature of this method)
* Should return an object containing the values for each output to emit
* If necessary, use the parameter "outputs" to emit data while running the code.
*/
public async main(inputs: any, outputs: any): Promise<any> {
// Add code here
const recipeDetails: RecipeDetails = JSON.parse(inputs.recipe);
const setupDetails: SetupDetails = JSON.parse(inputs.setup);
if (setupDetails.FullPath !== recipeDetails.SetupFullPath) {
throw new Error(`Recipe '${recipeDetails.RecipeFullPath}' has a different SetupFullPath '${recipeDetails.SetupFullPath}' than the expected '${setupDetails.FullPath}'.`);
}
if (recipeDetails.NeedsReoptimization) {
throw new Error(`Recipe '${recipeDetails.RecipeFullPath}' needs ReOptimization.`);
}
if (!!! warning
ecipeDetails.OptimizationDetails) {
throw new Error(`Recipe '${recipeDetails.RecipeFullPath}' has invalid OptimizationDetails: '${recipeDetails.OptimizationDetails}'`);
}
// Setup PickupQuantity at 0 for each feeder reserve (cleanup possible values at input)
for (const station of setupDetails.Stations) {
for (const location of station.StationLocations) {
for (const table of location.Tables) {
for (const feeder of table.Feeders) {
for (const reserve of feeder.Reserves) {
reserve.PickupQuantity = 0;
}
}
}
}
}
// Ok, Cycle for each Placement
for (const placement of recipeDetails.OptimizationDetails.Placements) {
if (placement.PickupLinkIndex >= 0 && recipeDetails.OptimizationDetails.Pickups.length > placement.PickupLinkIndex && recipeDetails.OptimizationDetails.Pickups[placement.PickupLinkIndex]) {
const pickup: OptimizationPickupDetails = placement.PickupLinkIndex && recipeDetails.OptimizationDetails.Pickups[placement.PickupLinkIndex];
// Try to find the station,
let stationFound: boolean = false; // Just for log purposes
for (const station of setupDetails.Stations) {
if (station.FullPath === pickup.StationFullPath) {
// Ok, it's "this" station.
// Try to find the Location
let locationFound: boolean = false; // Just for log purposes
for (const location of station.StationLocations) {
if (pickup.Location === location.LocationType) {
// Ok. Found Location.
// Only found one table on each location so far, and can't figure out any link, so assuming it's always like this
for (const table of location.Tables) {
// Let's find the feeder.
let feederFound: boolean = false; // Just for log purposes
for (const feeder of table.Feeders) {
// We need to check each Division
// (We have double track feeders, each with it's own division)
// (On Single Track Feeders, division is 1)
for (const reserve of feeder.Reserves) {
// Note: Feeder Division is missing here, because it was already translated / normalized into(Station)Tracks.So this means for example:
// Station A-Location 1-Track 5-Feeder X- Division #1 > (is equal) Station A-Location 1-(Station)Track 5
// Station A-Location 1-Track 5-Feeder X- Division #2 > (is equal) Station A-Location 1-(Station)Track 6
if ((feeder.TrackArea + (reserve.Division - 1)) === (pickup.Track + pickup.Reserve)) {
// Ok, Here we have the feeder!
// Is it the same Component !?
if (reserve.ComponentFullPath === pickup.ComponentFullPath) {
// Gotcha!
// Let's increase the Pickup Quantity
reserve.PickupQuantity++;
// this.framework.logger.debug(`Quantity increased to ${reserve.PickupQuantity} on Station '${pickup.StationFullPath}, Location '${pickup.Location}', Feeder '${pickup.Track}', Component '${pickup.ComponentFullPath}'`);
}
else {
this.framework.logger.warning(`Component '${pickup.ComponentFullPath}' (Station '${pickup.StationFullPath}, Location '${pickup.Location}', Feeder '${pickup.Track}') not found on SetupDetails`);
}
feederFound = true;
break;
}
}
}
if (!!! info
eederFound) {
this.framework.logger.warning(`Feeder '${pickup.Track}' (Station '${pickup.StationFullPath}, Location '${pickup.Location}') not found on SetupDetails`);
}
}
locationFound = true;
break;
}
}
if (!locationFound) {
this.framework.logger.warning(`Location '${pickup.StationFullPath}' not found on SetupDetails`);
}
stationFound = true;
break;
}
}
if (:lock:tationFound) {
this.framework.logger.warning(`Station '${pickup.StationFullPath}' not found on SetupDetails`);
}
} else {
this.framework.logger.warning(`Could not resolve Pickup '${placement.PickupLinkIndex}' on Placement '${placement.Index}'`);
}
}
return { setupWithPickupQuantity: setupDetails };
}
}
export interface SetupDetails {
FullPath: string,
Stations: StationDetails[];
}
export interface StationDetails {
FullPath: string,
StationLocations: StationLocationDetails[],
}
export interface StationLocationDetails {
LocationType: string,
Tables: TableDetail[],
}
export interface TableDetail {
TableFullPath: string,
Feeders: FeederDetail[],
}
export interface FeederDetail {
StartTrack: number,
TrackArea: number,
Reserves: ReserveDetail[],
}
export interface ReserveDetail {
Division: number,
ComponentFullPath: string,
ComponentName: string,
PickupQuantity: number
}
export interface RecipeDetails {
RecipeFullPath: string,
SetupFullPath: string,
NeedsReoptimization: boolean
OptimizationDetails: OptimizationDetails
}
export interface OptimizationDetails {
ComponentPlacement: Map<string, ComponentPlacementDetails>,
Placements: OptimizationPlacementDetails[],
Panels: OptimizationPanelDetails[],
Pickups: OptimizationPickupDetails[],
}
export interface OptimizationPlacementDetails {
Index: number,
PanelIndex: number,
PickupLinkIndex: number,
ComponentPlacementRefDesignator: string,
ComponentPlacementComponentFullPath: string
}
export interface OptimizationPanelDetails {
Index: number,
Name: string,
BoardSideName: string,
}
export interface ComponentPlacementDetails {
ReferenceDesignator: string,
ComponentFullPath: string,
ComponentShapeFullPath: string,
OffsetX: number,
OffsetY: number,
Angle: number,
Level: number,
Omit: boolean,
Exclusive: boolean,
Glue: boolean
}
export interface OptimizationPickupDetails {
Index: number,
ComponentFullPath: string,
StationFullPath: string,
Location: string,
Tower: number,
Track: number,
Reserve: number,
LinkType: string
}
SiplacePro.Command.GetJobList#
此命令将触发请求来从特定生产线(LineFullPath)获取JobFullPath的列表。 回复将包含该生产线上作业完整路径的字符串数组。 此命令还将触发具有以下所述对象的SiplacePro.Event.JobList事件。 此命令的典型使用场合是针对controller-engine-oib-task任务包中的GetJobList任务。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineFullPath | 字符串 | 是 | 要从其获取JobList的生产线完整路径(例如:“Virtual Lines\Virtual Line 01”) |
GetJobList任务中的典型输出示例:
SiplacePro.Command.GetJobDetails#
此命令将从特定生产线(LineFullPath)和作业(JobFullPath)请求作业/设置/配方对象结构。 此命令还将触发具有以下所述对象的SiplacePro.Event.JobDetails事件。 如果未指定JobFullPath,则系统将提取来自LineFullPath的所有作业。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineFullPath | 字符串 | 是 | 要从其获取JobDetails的生产线完整路径(例如:“Virtual Lines\Virtual Line 01”) | ||
| JobFullPath | 字符串 | 否 | 要从其获取JobDetails的作业完整路径(例如:“Demo Jobs\Job ASM ProcessExpert Testboard V10”) |
GetJobDetails任务中的典型输出示例:
[
{
"JobFullPath": "Demo Jobs\\Job ASM ProcessExpert Testboard V10",
"JobSetupFullPath": "Demo Setups\\Virtual Line ASM ProcessExpert Testboard V10",
"Recipes": [
{
"RecipeFullPath": "Demo Recipes\\Recipe ASM ProcessExpert Testboard V10",
"BoardFullPaths": [
"Demo Boards\\ASM ProcessExpert Testboard V10"
],
"PrinterSetupFullPath": ""
}
]
},
{
"JobFullPath": "Demo Jobs\\Job ASM Simple Product Board",
"JobSetupFullPath": "Demo Setups\\Virtual Line ASM Simple Product Board",
"Recipes": [
{
"RecipeFullPath": "Demo Recipes\\Recipe ASM Simple Product Board",
"BoardFullPaths": [
"Demo Boards\\ASM Simple Product Board"
],
"PrinterSetupFullPath": ""
}
]
}
]
SiplacePro.Command.GetRecipeDetails#
此命令将从特定生产线(LineFullPath)、作业(JobFullPath)和配方(RecipeFullPath)请求配方/面板/子面板/组件放置对象结构。 此命令还将触发具有以下所述对象的SiplacePro.Event.RecipeDetails事件。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineFullPath | 字符串 | 是 | 要从其获取RecipeDetails的生产线完整路径(例如:“Virtual Lines\Virtual Line 01”) | ||
| JobFullPath | 字符串 | 否 | 要从其获取RecipeDetails的作业完整路径(例如:“Demo Jobs\Job ASM ProcessExpert Testboard V10”) | ||
| RecipeFullPath | 字符串 | 是 | 要从其获取RecipeDetails的配方完整路径(例如:“Demo Recipes\Recipe ASM ProcessExpert Testboard V10”) |
注意:如果JobFullPath为空,则此命令将通过RecipeFullPath来搜索配方,而不会检查父作业。
GetRecipeDetails任务中的典型输出示例:
{
"RecipeFullPath": "LINE-3\\MK\\C99910759T00",
"SetupFullPath": "LINE-3\\MK\\C9996299T00VS9988T00 @ 20-12-07 13:33:07 [1338920]",
"NeedsReoptimization": false,
"Boards": [
{
"FullPath": "C999-NEW\\C99910759T00",
"BoardSide": "Top",
"PlacementLists": [
{
"PlacementListFullPath": "C999-NEW\\C99910759T00",
"ClusterName": "444316",
"ComponentPlacements": [
{
"ReferenceDesignator": "R9",
"ComponentFullPath": "XXXXXXXX\\0002010076",
"ComponentShapeFullPath": "XXXXXXXX\\0002010076",
"OffsetX": 29.7252,
"OffsetY": 61.4722,
"Angle": 3.141592653589793,
"Level": 0,
"Omit": false,
"Exclusive": false,
"Glue": false
},
{
"ReferenceDesignator": "C61",
"ComponentFullPath": "XXXXXXXX\\0003010141",
"ComponentShapeFullPath": "XXXXXXXX\\0003010141",
"OffsetX": 13.8938,
"OffsetY": 69.6764,
"Angle": -1.570796326794897,
"Level": 0,
"Omit": false,
"Exclusive": false,
"Glue": false
}
]
},
{
"PlacementListFullPath": "C999-NEW\\C99910759T00",
"ClusterName": "444314",
"ComponentPlacements": [
{
"ReferenceDesignator": "R9",
"ComponentFullPath": "XXXXXXXX\\0002010076",
"ComponentShapeFullPath": "XXXXXXXX\\0002010076",
"OffsetX": 29.7252,
"OffsetY": 61.4722,
"Angle": 3.141592653589793,
"Level": 0,
"Omit": false,
"Exclusive": false,
"Glue": false
},
{
"ReferenceDesignator": "C61",
"ComponentFullPath": "XXXXXXXX\\0003010141",
"ComponentShapeFullPath": "XXXXXXXX\\0003010141",
"OffsetX": 13.8938,
"OffsetY": 69.6764,
"Angle": -1.570796326794897,
"Level": 0,
"Omit": false,
"Exclusive": false,
"Glue": false
}
]
}
]
}
],
"PanelLinksDetails": [
{
"PanelName": "/C99910759T00/Top_444315_1_1",
"ClusterName": " 444314",
"Omit": false,
"BoardElementIndex": 0,
"Rows": 1,
"Columns": 5,
"Index": 1
},
{
"PanelName": "/C99910759T00/Top_444315_1_2",
"ClusterName": " 444314",
"Omit": false,
"BoardElementIndex": 0,
"Rows": 1,
"Columns": 5,
"Index": 2
},
{
"PanelName": "/C99910759T00/Top_444315_1_3",
"ClusterName": " 444314",
"Omit": false,
"BoardElementIndex": 0,
"Rows": 1,
"Columns": 5,
"Index": 3
}
],
"OptimizationDetails": {
"ComponentPlacement": {
"XXXXXXXX\\0004090034": {
"ReferenceDesignator": "VP4",
"ComponentFullPath": "XXXXXXXX\\0004090034",
"ComponentShapeFullPath": "XXXXXXXX\\0004090034",
"OffsetX": 38.1,
"OffsetY": 41.838,
"Angle": 1.570796326794897,
"Level": 0,
"Omit": false,
"Exclusive": false,
"Glue": false
},
"XXXXXXXX\\0004110003": {
"ReferenceDesignator": "VP1",
"ComponentFullPath": "XXXXXXXX\\0004110003",
"ComponentShapeFullPath": "XXXXXXXX\\WP61300AA",
"OffsetX": 49.8616,
"OffsetY": 16.7554,
"Angle": 1.570796326794897,
"Level": 0,
"Omit": false,
"Exclusive": false,
"Glue": false
}
},
"Placements": [
{
"Index": 0,
"PanelIndex": 1,
"PickupLinkIndex": 159,
"ComponentPlacementRefDesignator": "VP4",
"ComponentPlacementComponentFullPath": "XXXXXXXX\\0004090034"
},
{
"Index": 1,
"PanelIndex": 1,
"PickupLinkIndex": 188,
"ComponentPlacementRefDesignator": "VP1",
"ComponentPlacementComponentFullPath": "XXXXXXXX\\0004110003"
}
],
"Panels": [
{
"Index": 0,
"Name": "/C99910759T00",
"BoardSideName": null
},
{
"Index": 1,
"Name": "/C99910759T00/Top_444315_1_1",
"BoardSideName": ""
}
],
"Pickups": [
{
"Index": 0,
"ComponentFullPath": "XXXXXXXX\\0002010346",
"StationFullPath": "LINE3NEW\\X4S",
"Location": "FrontRight",
"Tower": 0,
"Track": 1,
"Reserve": 0,
"LinkType": "ComponentPickup"
},
{
"Index": 1,
"ComponentFullPath": "XXXXXXXX\\0004010045",
"StationFullPath": "LINE3NEW\\X4S",
"Location": "FrontRight",
"Tower": 0,
"Track": 2,
"Reserve": 0,
"LinkType": "ComponentPickup"
},
{
"Index": 2,
"ComponentFullPath": "XXXXXXXX\\0003010142",
"StationFullPath": "LINE3NEW\\X4S",
"Location": "FrontRight",
"Tower": 0,
"Track": 3,
"Reserve": 0,
"LinkType": "ComponentPickup"
}
]
}
}
板网关守卫#
板网关守卫事件#
BoardGateKeeper.Event.BoardRequest#
BoardGateKeeper会请求MES系统验证已在传送带装置中检测到并停止运行的板。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| BoardGateKeeper.Property.Line.Name | 字符串 | 来自SIPLACE Pro的完整路径,包括文件夹(例如“MyLines\Line01”) | |
| BoardGateKeeper.Property.Station.Name | 字符串 | 不含生产线名称的工作站(例如“Station01”) | |
| BoardGateKeeper.Property.Board.Barcode | 字符串 | 板的序列号。如果未扫描到条码,则返回空字符串。 | |
| BoardGateKeeper.Property.Board.BoardTime | 日期时间 | 扫描此板以获取MES请求或通过条码扫描仪释放此板的时间(以纪元毫秒数表示)。 | |
| BoardGateKeeper.Property.Position.BcrSide | 字符串 | UnknownTopBottom | 如果扫描到条码,此属性将描述条码是从板底部还是底部扫描的。请注意,BCRSide不描述“Siplace Pro”中定义的“板侧”,但描述扫描仪的物理位置(顶部/底部)。 |
| BoardGateKeeper.Property.Position.Lane | 字符串 | LeftRight | 传送带 |
| BoardGateKeeper.Property.Position.Origin | 字符串 | FrontRear | 扫描仪在生产线中的位置。可以在扫描仪配置GUI上轻松选择一些标准值。对于单个部署,例如,如果每个传送带有两台以上的扫描仪,客户可以定义自己的原点值,例如工作站名称、“printer”、“AOI”等字符串 |
| BoardGateKeeper.Property.Position.SubConveyor | 字符串 | NoneRightLeft | 子传送带(将来可支持四通道) |
| Internal.RequestId | 字符串 | 请求的ID。这是回复所必需的。 |
如果为通道启用了联锁,则需要回复才能允许/拒绝面板进入机器。必须使用BoardGateKeeper.Command.BoardRequestReply命令发送回复。
BoardGateKeeper.Event.BoardReleased#
如果板已成功运输到下一个生产步骤,BoardGateKeeper会通知MES。 如果联锁被禁用(在这种情况下,将不会执行任何BoardRequest), 或者如果MES之前已确认过请求的板,则系统可能会自动发送此事件。
| PropertyId | 类型 | 可能的值 | 描述 |
|---|---|---|---|
| BoardGateKeeper.Property.Line.Name | 字符串 | 来自SIPLACE Pro的完整路径,包括文件夹(例如“MyLines\Line01”) | |
| BoardGateKeeper.Property.Station.Name | 字符串 | 不含生产线名称的工作站(例如“Station01”) | |
| BoardGateKeeper.Property.Board.Barcode | 字符串 | 板的序列号。如果未扫描到条码,则返回空字符串。 | |
| BoardGateKeeper.Property.Board.BoardTime | 日期时间 | 针对MES请求扫描此板或者条码扫描仪释放此板的时间(Epoch格式,以毫秒为单位)。 | |
| BoardGateKeeper.Property.Position.BcrSide | 字符串 | UnknownTopBottom | 如果扫描到条码,此属性将描述条码是从板底部还是底部扫描的。请注意,BCRSide不描述“Siplace Pro”中定义的“板侧”,但描述扫描仪的物理位置(顶部/底部)。 |
| BoardGateKeeper.Property.Position.Lane | 字符串 | LeftRight | 传送带 |
| BoardGateKeeper.Property.Position.Origin | 字符串 | FrontRear | 扫描仪在生产线中的位置。可以在扫描仪配置GUI上轻松选择一些标准值。对于单个部署,例如,如果每个传送带有两台以上的扫描仪,客户可以定义自己的原点值,例如工作站名称、“printer”、“AOI”等字符串 |
| BoardGateKeeper.Property.Position.SubConveyor | 字符串 | NoneRightLeft | 子传送带(将来可支持四通道) |
BoardGateKeeper.Event.BoardFailed#
如果先前释放的板无法运输到下一个处理步骤,则此错误将被发送到MES。BoardFailed 并非所有扫描仪硬件设备都支持该消息。 以下示例工作流可能会导致该错误:如果成功运输了某板(通过条码标识),CogiScan流程控制器会向BoardGateKeeper发送一条消息。然而,“CogiBox”并不支持任何错误处理。因此,如果操作员手动将当前处于MES验证中的板从传送带中卸下,并且如果MES确认了该板,则CogiBox将永远不会确认该板的释放状态(因为它已被卸下)。因此,BoardGateKeeper将等待一段时间(超时可以在管理器GUI上配置),并将一个BoardFailed发送给MES,因为CogiBox没有进行运输确认。
| PropertyId | 类型 | 可能的值 | 描述 |
|---|---|---|---|
| BoardGateKeeper.Property.Line.Name | 字符串 | 来自SIPLACE Pro的完整路径,包括文件夹(例如“MyLines\Line01”) | |
| BoardGateKeeper.Property.Station.Name | 字符串 | 不含生产线名称的工作站(例如“Station01”) | |
| BoardGateKeeper.Property.Board.Barcode | 字符串 | 板的序列号。如果未扫描到条码,则返回空字符串。 | |
| BoardGateKeeper.Property.Board.BoardTime | 日期时间 | 针对MES请求扫描此板或者条码扫描仪释放此板的时间(Epoch格式,以毫秒为单位)。 | |
| BoardGateKeeper.Property.Position.BcrSide | 字符串 | UnknownTopBottom | 如果扫描到条码,此属性将描述条码是从板底部还是底部扫描的。请注意,BCRSide不描述“Siplace Pro”中定义的“板侧”,但描述扫描仪的物理位置(顶部/底部)。 |
| BoardGateKeeper.Property.Position.Lane | 字符串 | LeftRight | 传送带 |
| BoardGateKeeper.Property.Position.Origin | 字符串 | FrontRear | 扫描仪在生产线中的位置。可以在扫描仪配置GUI上轻松选择一些标准值。对于单个部署,例如,如果每个传送带有两台以上的扫描仪,客户可以定义自己的原点值,例如工作站名称、“printer”、“AOI”等字符串 |
| BoardGateKeeper.Property.Position.SubConveyor | 字符串 | NoneRightLeft | 子传送带(将来可支持四通道) |
| BoardGateKeeper.Property.ErrorId | 字符串 | NO_ERROR INTERNAL_ERROR TIMEOUT_RELEASE TIMEOUT_REQUEST UNKNOWN_SCANNER DISABLED_LINE SCANNER_ERROR | 错误标识符。值在枚举ErrorLabel中定义。 |
| BoardGateKeeper.Property.ErrorMessage | 字符串 | 与ErrorId对应的描述性消息或错误文本。 |
BoardGateKeeper.Event.ScannerConnectionStateChanged#
如果扫描仪硬件的连接状态发生更改,则BoardGateKeeper会发送一则消息。
| PropertyId | 类型 | 可能的值 | 描述 |
|---|---|---|---|
| BoardGateKeeper.Property.Line.Name | 字符串 | 来自SIPLACE Pro的完整路径,包括文件夹(例如“MyLines\Line01”) | |
| BoardGateKeeper.Property.Station.Name | 字符串 | 不含生产线名称的工作站(例如“Station01”) | |
| BoardGateKeeper.Property.ScannerId | 字符串 | 扫描仪的内部/唯一ID | |
| BoardGateKeeper.Property.Reason | 字符串 | 有关状态更改的原因文本 | |
| BoardGateKeeper.Property.State | 字符串 | UnknownConnectedDisconnectedConfiguration_Error | 扫描仪的当前状态。 |
BoardGateKeeper.Event.LineConfigurationChanged#
如果BGK中配置的生产线的配置发生更改,则BoardGateKeeper会发送一则消息。当更改被激活时(例如,用户单击BGK GUI上的“应用”),就会发送该消息。
| PropertyId | 类型 | 可能的值 | 描述 |
|---|---|---|---|
| BoardGateKeeper.Property.Line.Name | 字符串 | 来自SIPLACE Pro的完整路径,包括文件夹(例如“MyLines\Line01”) | |
| BoardGateKeeper.Property.Line.Active | 布尔值 | 指示生产线在BGK中是否处于活动状态。如果处于活动状态,则会为此生产线生成板事件。 | |
| BoardGateKeeper.Property.Line.TimeOfChange | 日期时间 | 仅为LineConfigurationChaned事件填充,而不是在调用BgkLineConfigurationsRequest()时填充!激活此新配置的时间(以纪元毫秒数表示)。 | |
| BoardGateKeeper.Property.Line.ChangeTypeCode | 整数 | 仅为LineConfigurationChaned事件填充,而不是在调用BgkLineConfigurationsRequest()时填充!导致该LineConfiguationChanged事件的更改类型 | |
| BoardGateKeeper.Property.Line.ChangeType | 字符串 | NoneLineRemovedLineAddedActiveStateOperationMode | ChangeTypeCode的文本表示 |
| BoardGateKeeper.Property.Line.OperationModeCode | 整数 | 生产线的操作模式。 | |
| BoardGateKeeper.Property.Line.OperationMode | 字符串 | NotificationInterlocking | OperationModeCode的文本表示 |
板网关守卫命令#
BoardGateKeeper.Command.BoardRequestReply#
此命令用于发送对BoardGateKeeper.Event.BoardRequest事件的回复,需要以下参数:
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Internal.ReplyId | 字符串 | 是 | 此命令应回复的请求的ID | ||
| RequestResult | 字符串 | 是 | ConfirmedRejectedInternal_ErrorPassThrough | MES返回的板验证结果 | |
| 原因 | 字符串 | 否 | 返回RequestResult值的原因(例如,如果设置了Internal_Error,则显示错误消息) | ||
| BoardPath | 字符串 | 否 | 返回结果的板路径。工作站软件需要区分板 | ||
| BoardSide | 字符串 | 否 | TopBottomUndefined | MES系统将返回板侧。它会被记录下来,以便之后用于检查 | |
| OverridingBarcode | 字符串 | 否 | MES能够覆盖条码。如果该属性为空,则不会更改条码。否则,新条码将被静默记录到生产线中(需要在SiplacePro中激活静默记录选项) |
监控#
监控事件#
监控模块用于向自动化逻辑通知生产线中发生的事件。
Monitoring.Event.StationEvent#
只要生产线、工作站、通道或处理模块的部件状态发生更改,就会触发此事件。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | 日期时间 | 发生时间戳(采用Epoch格式,以毫秒为单位) | |
| Monitoring.Property.Line.Name | 字符串 | 来自SIPLACE Pro的完整路径,包括文件夹(例如“MyLines\Line01”) | |
| Monitoring.Property.Station.Name | 字符串 | 不含生产线名称的工作站(例如“Station01”) | |
| Monitoring.Property.Position.Lane | 字符串 | 状态发生更改的通道 | |
| Monitoring.Property.Position.ProcessingArea | 整数 | 处理车间的ID | |
| Monitoring.Property.Position.SubConveyor | 字符串 | 状态发生更改的子传送带 | |
| Monitoring.Property.State | 字符串 | InvalidPCBBeginPCBEndEmergencyStop等 | 新状态(请参阅OIB文档以了解完整列表、含义和条件) |
Monitoring.Event.BoardProcessedEvent#
每当处理板时都会触发此事件。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| Monitoring.Property.TimeOfChange | 日期时间 | 发生时间戳(采用Epoch格式,以毫秒为单位) | |
| Monitoring.Property.Line.Name | 字符串 | 来自SIPLACE Pro的完整路径,包括文件夹(例如“MyLines\Line01”) | |
| Monitoring.Property.Station.Name | 字符串 | 不含生产线名称的工作站(例如“Station01”) | |
| Monitoring.Property.Conveyor | 字符串 | 生产该板的传送带 | |
| Monitoring.Property.Recipe.Name | 字符串 | 用于生产该板的配方名称 | |
| Monitoring.Property.Setup.Name | 字符串 | 最初来自SIPLACE Pro的设置名称 | |
| Monitoring.Property.Board.Barcode | 字符串 | 如果工作站有PCB条码扫描仪且该扫描仪处于活动状态,则为PCB上的条码 | |
| Monitoring.Property.Board.Side | 字符串 | 在SIPLACE Pro配方中选择的板侧。仅在工作站版本为703或更高版本时受支持 | |
| Monitoring.Property.Board.BuildTime | 字符串 | 循环时间(以秒为单位)。对于低于7xx的工作站,此值来自工作站,对于7xx及更高版本,则将填充BuildTimePa1和BuildTimePa2的最大值 | |
| Monitoring.Property.Board.PanelCount | 字符串 | 面板数量。这些是生产的面板。如果面板有墨点,则不会生产面板。仅受工作站软件703和更高版本支持。较低版本将此值设置为0 | |
| Monitoring.Property.Board.Status | 字符串 | PCB状态 | |
| Monitoring.Property.Board.ProcessedDataDetails | 字符串 | 包含组件、进料器、进料器跟踪、位置、已用组件和装配的组件信息 |
维保#
维保属性#
Maintenance.Property.DoPeriodicUpdate#
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| Maintenance.Property.DoPeriodicUpdate | 布尔值 | 启用后(默认为禁用),将能够解析NewMaintenanceData。如果禁用(默认值),则不会发送新的MaintenanceDataResponse,因此OIB事件触发模块将存储该消息并在稍后重试。 | |
| 这对于在准备就绪(例如:工厂布局已准备就绪)之前不需要使用维保事件触发消息的情况非常有用 |
维保事件#
维保模块用于获取和接收与维保相关的事件。 这些事件是在ASM:OIB:MaintenanceData:Notify eventing主题发生更改时触发的。
Maintenance.Event.TapeFeeders#
每当接收到包含更新的SetupConfiguration(包含带式进料器)的NewMaintenanceData时都会触发此事件。 此事件必须至少包含设备配置和设置配置对象中的一个feeders对象
此事件包含以下属性: | 属性ID | 数据类型 | 可能的值 | 描述 | | ---------------------------------------------- | --------- | --------------------- | ------------------------------------------------------------ | | Maintenance.Property.TapeFeeders | 对象 | | 设备配置和设置配置对象的结构 |
设备配置和设置配置对象的结构
| 对象键名称 | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| lines | 对象 | 生产线结构 | |
| stations | 对象 | 工作站结构 | |
| heads | 对象 | PlaceHeads结构(请参阅Maintenance.Event.PlaceHeads)(Maintenance.Event.TapeFeeders事件的可选项) | |
| tapeFeeders | 对象 | 带式进料器结构 |
tapeFeeders对象结构为: | 对象键名称 | 数据类型 | 可能的值 | 描述 | | ---------------------------------------------- | --------- | --------------------- | ------------------------------------------------------------ | | feederId | 字符串 | | 带式进料器的唯一ID | | feederType | 字符串 | | 进料器类型名称 | | feederTypeId | 双精度 | | 进料器类型(应与OIB.Property.FeederTypes属性上显示的TapeFeederType相关) | | location | 字符串 | | 进料器的位置 | | name | 字符串 | | 进料器名称 |
Maintenance.Event.PlaceHeads#
每当接收到包含更新的EquipmentConfiguration(包含PlaceHeads)的NewMaintenanceData时都会触发此事件。 此事件包含Maintenance.Event.TapeFeeders事件中描述的结构并至少包含设备配置和设置配置对象中的一个heads对象。
heads结构如下:
| 对象键名称 | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| ID | 字符串 | 位置头的唯一ID | |
| name | 字符串 | 放置板头名称 | |
| 类型 | 字符串 | 放置板头类型(应与OIB.Property.FactoryLayout属性上显示的HeadType相关) | |
| typeId | 整数 | 放置板头类型ID(用于与特定维保工单活动相关联) | |
| location | 字符串 | 板头的位置 |
Maintenance.Event.TapeFeeders或Maintenance.Event.PlaceHeads事件结构示例:
{
"lines": [
{
"fullPath": "TC-ROOM\\TX2_00012805_Line",
"name": "TX2_00012805_Line",
"stations": [
{
"fullPath": "TC-ROOM\\TX2_00012805_Station",
"name": "TX2_00012805_Station",
"serialNumber": "00012805",
"heads": [
{
"id": "03053528-05 KL -E3-0004",
"name": "CPP_2",
"type": "CPP",
"typeId": 8,
"location": "1.2.1",
},
{
"id": "00000000-00 KL -H4-006300000000-00 KL -H4-0043",
"name": "TWIN_1",
"type": "TWIN",
"typeId": 10,
"location": "1.1.1",
}
],
"tapeFeeders": [
{
"feederId": "08FAUT901252",
"feederType": "8mm-X Tape",
"feederTypeId": 264,
"location": "2.4",
"name": "8mm-X Tape_2.4",
},
{
"feederId": "24KL-H300019",
"feederType": "24mm-X Tape",
"feederTypeId": 280,
"location": "2.6",
"name": "24mm-X Tape_2.6"
}
]
}
]
},
{
"fullPath": "TC-ROOM\\SXV3-Eric-L",
"name": "SXV3-Eric-L",
"stations": [
{
"fullPath": "TC-ROOM\\SXV3-Eric",
"name": "SXV3-Eric",
"serialNumber": "20006270",
"heads": [
{
"id": "03126608-05 KL -M1-0034",
"name": "C&P20-P2_1",
"type": "C&P20-P2",
"location": "1.1.1"
},
{
"id": "03126608-05 KL -M1-0031",
"name": "C&P20-P2_2",
"type": "C&P20-P2",
"location": "1.2.1"
}
],
"tapeFeeders": [
{
"feederId": "08ATML701618",
"feederType": "8mm-X Tape",
"feederTypeId": 264,
"location": "2.31",
"name": "8mm-X Tape_2.31"
}
]
}
]
},
{
"fullPath": "TCM\\X4S_DT",
"name": "X4S_DT",
"stations": [
{
"fullPath": "TCM\\X4S",
"name": "X4S",
"serialNumber": "00010401",
"heads": [
{
"id": "00000000-00 KL -E2-003200000000-00 KL -E2-0031",
"name": "TWIN_3",
"type": "TWIN",
"location": "2.3.1"
}
],
"tapeFeeders": [
{
"feederId": "08FAUT200033",
"feederType": "8mm-X Tape",
"feederTypeId": 264,
"location": "2.33",
"name": "8mm-X Tape_2.33",
}
]
}
]
}
]
}
Maintenance.Event.DPAxis#
每当接收到包含更新的EquipmentConfiguration(包含DPAxis)的NewMaintenanceData时都会触发此事件。 此事件包含以下结构:
DPAxis结构如下:
| 对象键名称 | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| ID | 字符串 | 位置头的唯一ID | |
| headId | 字符串 | 放置板头唯一ID(应与OIB.Property.PlaceHeads属性上显示的id相关) | |
| name | 字符串 | DPAxis名称 | |
| location | 字符串 | DPAxis的位置 | |
| headSegmentActivation | Int32 | 板头段的状态(可能值:SegmentEnabled=0、SegmentNotMounted=1、SegmentNotUsed=2、DisabledByUser=3、DisabledByHardwareAxisWarmup=4、DisabledByHardwareAxisMovementError=5、DisabledByHardwareValveClosed=6和Unknown=7) | |
| lineFullPath | 字符串 | 生产线完整路径 | |
| stationMachineId | 字符串 | 工作站机器ID |
Maintenance.Event.DPAxis事件结构示例:
[
{
"id": "10000000-00 000-H1-DP1_",
"headId": "00000000-00 000-H1-_____",
"name": "C&P20_1_DpAxis1",
"location": "1.1.1.1",
"headSegmentActivation": "0",
"lineFullPath": "Virtual Lines\\Virtual Line 01",
"stationMachineId": "10000000",
}
]
Maintenance.Event.ServiceAndMaintenanceData#
此事件将在ASM:OIB:MaintenanceData:Notify eventing主题发生更改时触发并包含接收到的汇总数据。
此事件包含以下属性: | 属性ID | 数据类型 | 可能的值 | 描述 | | ---------------------------------------------- | --------- | --------------------- | ------------------------------------------------------------ | | Maintenance.Property.ServiceAndMaintenanceData | 对象 | | 服务和维保数据对象的结构 |
此事件使用OibEventOccurrence部分中详述的结构,且包含Maintenance.Property.ServiceAndMaintenanceData作为维保数据实例数组(详见下文)。示例:
{
"messageId": "e11382dea7494868b183c4d22411083e",
"eventId": "Maintenance.Event.ServiceAndMaintenanceData",
"timestamp": "2020-04-28T09:01:13.820Z",
"values": {
"Maintenance.Property.ServiceAndMaintenanceData": [
{
"EventType": "CalibrationData",
"UniqueId": "10000000_Gantry_X_2_L_1",
"EventName": "SystemIdentification",
"...": "..."
}
{
"EventType": "VerificationData",
"UniqueId": "10000000-00 000-H4-DP15",
"EventName": "TotalDisabledDPs",
"...": "..."
}
]
维保数据可以是:
- 校准详细信息:有关此设备项目的所有最新校准信息。
- 错误详细信息: 此设备项目发出的所有错误。
- 维保详细信息:有关此设备项目的所有最新维保结果。
- 传感器详细信息:来自此设备项目的所有最新传感器样本。
- 验证详细信息:有关此设备项目的所有最新验证结果。
这些实例的结构详见下一部分。
维保事件实例详细信息#
| 对象键名称 | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| EventType | 字符串 | VerificationDataCalibrationDataMaintenanceDataSensorDataErrorData | 接收到的事件的事件类型 |
| UniqueId | 字符串 | 此数据涉及的设备项目。您可以将该属性与EquipmentConfigurationData和SetupConfigurationData的“唯一ID”属性进行匹配以查看详情,并可将其与FactoryLayout属性中显示的StationServiceAndMaintenanceData的“机器ID”属性以及PlaceHeads和TapeFeeders事件配合使用。 | |
| 生产线 | 对象 | 发生事件的生产线 | |
| 工作站 | 对象 | 发生事件的工作站 | |
| 事件名称 | 字符串 | 事件名称 - 对MES逻辑已知的事件标识符,将在相应的部分中详细说明 | |
| EventValue | 根据EventType,事件值有不同的类型。将在相应的部分中对此进行详细说明 | ||
| TimeStamp | 日期时间 | 日期和时间 eventValue | |
| ExtraData | 对象 | 从OIB接口接收的对象,主要用作额外的信息数据源 |
VerificationDetails#
包含有关此设备项目的所有最新验证结果。 显示以下事件名称以及事件值: | 事件名称 | 事件值类型| | --------- | --------- | | DisabledDPsDueToNozzleMaintenance | 双精度 | | DisabledDPsDueToErrors | 双精度 | | TotalDisabledDPs | 双精度 | | ACTCmkResultX | 双精度 | | ACTCmkResultY | 双精度 | | CameraLightingFCCS | 字符串(OK或NOK) | | VacuumPressureOpen | 字符串(OK或NOK) | | VacuumPressureClosed | 字符串(OK或NOK) | | VacuumPressureNozzleClosed | 字符串(OK或NOK) | | NozzleLengthSensor | 字符串(OK或NOK) | | NozzleLengthZAxis | 字符串(OK或NOK) | | NozzleScanX | 字符串(OK或NOK) | | NozzleScanY | 字符串(OK或NOK) | | NozzleScanPhi | 字符串(OK或NOK) | | ComponentSensor | 字符串(OK或NOK) |
验证数据实例的示例:
{
"EventType": "VerificationData",
"UniqueId": "10000000-00 000-H1-DP6_",
"Line": {
"name": "Virtual Line 01",
"fullPath": "Virtual Lines\\Virtual Line 01",
},
"Station": {
"name": "Virtual SX4 01",
"fullPath": "Virtual Stations\\Virtual SX4 01",
"model": "",
"serialNumber": "10000000",
"stationType": "PickAndPlace",
"ipAddress": null,
},
"EventName": "DisabledDPsDueToErrors",
"EventValue": 0,
"Timestamp": "1753-01-01T00:36:45.000Z",
"ExtraData": {},
},
CalibrationDetails#
包含有关此设备项目的所有最新校准信息。
显示以下事件名称以及事件值: | 事件名称 | 事件值类型| | --------- | --------- | | TravelRange | 字符串(OK或NOK) | | X-AxisParametrization | 字符串(OK或NOK) | | SystemIdentification | 字符串(OK或NOK) | | ZeroPointOffset | 字符串(OK或NOK) | | BoardCamera | 字符串(OK或NOK) | | FeedUnits | 字符串(OK或NOK) | | NozzleChanger | 字符串(OK或NOK) | | BoardReferenceCorner | 字符串(OK或NOK) | | ComponentCamera | 字符串(OK或NOK) | | SegmentOffset | 字符串(OK或NOK) | | ComponentSensor | 字符串(OK或NOK) | | ZeroPressure | 字符串(OK或NOK) | | BoardMapping | 字符串(OK或NOK) | | HeadMapping | 字符串(OK或NOK) | | HeadAndCameras | 字符串(OK或NOK) | | VacuumTooling | 字符串(OK或NOK) |
校准数据实例的示例:
{
"EventType": "CalibrationData",
"UniqueId": "10000000_Gantry_X_2_L_1",
"Line": {
"name": "Virtual Line 01",
"fullPath": "Virtual Lines\\Virtual Line 01"
},
"Station": {
"name": "Virtual SX4 01",
"fullPath": "Virtual Stations\\Virtual SX4 01",
"model": "",
"serialNumber": "10000000",
"stationType": "PickAndPlace",
"ipAddress": null
},
"EventName": "SystemIdentification",
"EventValue": "NOK",
"Timestamp": "1753-01-01T00:36:45.000Z",
"ExtraData": {}
},
MaintenanceDetails#
显示以下事件名称以及事件值: | 事件名称 | 事件值类型| | --------- | --------- | | FeederCycleCount | 字符串 |
维保数据实例的示例:
{
"EventType": "MaintenanceData",
"UniqueId": "08FAUB900458",
"Line": {
"name": "Virtual Line 01",
"fullPath": "Virtual Lines\\Virtual Line 01",
},
"Station": {
"name": "Virtual SX4 01",
"fullPath": "Virtual Stations\\Virtual SX4 01",
"model": "",
"serialNumber": "10000000",
"stationType": "PickAndPlace",
"ipAddress": null,
},
"EventName": "FeederCycleCount",
"EventValue": "1700466",
"Timestamp": "2020-04-22T16:19:56",
"ExtraData": {},
},
SensorDetails#
显示以下事件名称以及事件值: | 事件名称 | 事件值类型| | --------- | --------- | | SMPSInput | 双精度 | | SMPSOutput160V | 双精度 | | SMPSOutput300V | 双精度 | | SMPSTemperature | 双精度 | | CP20xDPTemperature1 | 双精度 | | TemperatureHeadInterfaceAdapter | 双精度 | | TemperatureGantry | 双精度 | | FCUInputVoltageLocation | 双精度 |
传感器数据实例的示例:
{
"EventType": "SensorData",
"UniqueId": "00000000-00 000-H1-_____",
"Line": {
"name": "Virtual Line 01",
"fullPath": "Virtual Lines\\Virtual Line 01"
},
"Station": {
"name": "Virtual SX4 01",
"fullPath": "Virtual Stations\\Virtual SX4 01",
"model": "",
"serialNumber": "10000000",
"stationType": "PickAndPlace",
"ipAddress": null
},
"EventName": "TemperatureHeadInterfaceAdapter",
"EventValue": 16,
"Timestamp": "2020-04-28T09:00:55.000Z",
"ExtraData": {}
},
ErrorDetails#
显示以下事件名称以及事件值: | 事件名称 | 事件值类型| | --------- | --------- | | CountingErrorsYAxis | 双精度 | | TransportErrorsMachineHasStopped-CannotSetConveyorLaneWidth | 双精度 | | TransportErrorsMachineHasStopped-CannotSetStandardWidth | 双精度 | | TransportErrorsMachineHasStopped-AConveyorErrorHasOccurred | 双精度 | | TransportErrorsMachineHasStopped-CannotMeasureFiducialOnConveyorRail | 双精度 | | TransportErrorsMachineHasStopped-BoardHasNotArrivedTargetSection | 双精度 | | TransportErrorsMachineHasStopped-BoardHasNotArrived | 双精度 | | TransportErrorsMachineHasStopped-CannotMoveBoardTargetSectionTargetStopper | 双精度 | | TransportErrorsMachineHasStopped-CannotMoveBoardOutOfMachine | 双精度 | | TransportErrorsMachineHasStopped-CannotMoveAllBoardsOutOfTheMachine | 双精度 | | TransportErrorsMachineHasStopped-CannotLockInputSection | 双精度 | | TransportErrorsMachineHasStopped-ConveyorLaneAlreadyOccupiedPleaseRemoveBoard | 双精度 | | TransportErrorsMachineHasStopped-CannotFindBoardInConveyorLanePleaseLoadBoard | 双精度 | | TransportErrorsMachineHasStopped-CannotReferenceConveyor | 双精度 | | TransportErrorsMachineHasStopped-LiftingTableError | 双精度 | | XFeederFoilTorn | 双精度 | | XFeederFoilJam | 双精度 |
维保命令#
Maintenance.Command.TriggerServiceAndMaintenanceData#
此命令将从SIPLACE.Monitoring使用服务MaintenanceDataService来执行GetServiceAndMaintenanceData请求。 实际数据响应会由将被触发的Maintenance.Event.EquipmentCenterEvent事件公开。
此命令可以具有以下参数: | 命令名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 | | ----------------- | ------ | --------- | -------------------------------------------------------------- | ------------- | ------------------------------------------------------------ | | LineName | 字符串 | 否 | | | 包含查询维保数据的SiPlacePro生产线名称(逗号分隔)。如果为空,则将查询所有生产线。 | |
示例:
SendRequest connect.iot.driver.oib.executeCommand
{
"commandId": "Maintenance.Command.TriggerServiceAndMaintenanceData",
"parameters": {
"LineName": "Virtual Line 01"
}
}
Maintenance.Command.TriggerServiceAndMaintenanceData#
此命令将从SIPLACE.Monitoring使用服务MaintenanceDataService来执行GetServiceAndMaintenanceData请求。 实际数据响应会由将被触发的Maintenance.Event.ServiceAndMaintenanceData事件公开。
此命令可以具有以下参数: | 命令名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 | | ----------------- | ------ | --------- | -------------------------------------------------------------- | ------------- | ------------------------------------------------------------ | | LineName | 字符串 | 否 | | | 包含查询维保数据的SiPlacePro生产线名称(逗号分隔)。如果为空,则将查询所有生产线。 | |
示例:
SendRequest connect.iot.driver.oib.executeCommand
{
"commandId": "Maintenance.Command.TriggerServiceAndMaintenanceData",
"parameters": {
"LineName": "Virtual Line 01"
}
}
Maintenance.Command.TriggerEquipmentAndSetupConfiguration#
此命令将使用SIPLACE.Monitoring中的MaintenanceDataService服务来执行GetEquipmentConfiguration和GetSetupConfiguration请求。 实际数据响应会由将被触发的Maintenance.Event.PlaceHeads、Maintenance.Event.TapeFeeders和Maintenance.Event.DPAxis事件公开。
此命令可以具有以下参数: | 命令名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 | | ----------------- | ------ | --------- | -------------------------------------------------------------- | ------------- | ------------------------------------------------------------ | | LineName | 字符串 | 否 | | | 包含查询维保数据的SiPlacePro生产线名称(逗号分隔)。如果为空,则将查询所有生产线。 | |
示例:
SendRequest connect.iot.driver.oib.executeCommand
{
"commandId": "Maintenance.Command.TriggerEquipmentAndSetupConfiguration",
"parameters": {
"LineName": "Virtual Line 01"
}
}
SetupCenter#
设置中心是一个生产线软件应用程序,用于管理SIPLACE生产线中的物料和设置验证。我们将使用OIB设置中心适配器来访问设置中心。
设置中心事件#
SetupCenter.Event.FeedersPlaced#
将进料器放置在机器上时会发生此事件。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| SetupCenter.Property.Line | JSON对象 | 生产线对象 | |
| SetupCenter.Property.Station | JSON对象 | 工作站对象 | |
| SetupCenter.Property.TimeStamp | 整数 | 发生时间戳(采用unix时间戳格式) | |
| SetupCenter.Property.Feeders | JSON对象 | 进料器对象 |
作为JSON对象展示的FeedersPlaced示例:
{
"eventId": "SetupCenter.Event.FeedersPlaced",
"timestamp": "2020-04-23T11:01:44.295Z",
"values": {
"SetupCenter.Property.Line": {
"name": "MERKUR",
"fullPath": "MERKUR"
},
"SetupCenter.Property.Station": {
"name": "MERKUR2",
"fullPath": "MERKUR\\MERKUR2",
"model": "SIPLACE SX V2",
"serialNumber": "00014631",
"stationType": "PickAndPlace",
"ipAddress": null
},
"SetupCenter.Property.TimeStamp": 1587639688581,
"SetupCenter.Property.Feeders": [
{
"track": 48,
"feederId": "16FAUB900444",
"feederType": 272,
"location": 2,
"tableId": "DMY-a1a6b075-e0d3-4b47-946f-ebea6d8a500a",
"timeStamp": 1587639688581
}
]
}
}
SetupCenter.Event.FeedersRemoved#
从生产线中卸下进料器时发生。此事件将立即发送,且不包含任何验证上下文。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| SetupCenter.Property.Line | JSON对象 | 生产线对象 | |
| SetupCenter.Property.Station | JSON对象 | 工作站对象 | |
| SetupCenter.Property.TimeStamp | 整数 | 发生时间戳(采用unix时间戳格式) | |
| SetupCenter.Property.Feeders | JSON对象 | 进料器对象 |
作为JSON对象展示的FeedersRemoved示例:
{
"eventId": "SetupCenter.Event.FeedersRemoved",
"timestamp": "2020-04-28T08:06:50.025Z",
"values": {
"SetupCenter.Property.Line": {
"name": "Virtual Line 01",
"fullPath": "Virtual Lines\\Virtual Line 01"
},
"SetupCenter.Property.Station": {
"name": "Virtual SX4 01",
"fullPath": "Virtual Stations\\Virtual SX4 01",
"model": "SIPLACE SX4",
"serialNumber": "10000000",
"stationType": "PickAndPlace",
"ipAddress": null
},
"SetupCenter.Property.TimeStamp": 1588061208925,
"SetupCenter.Property.Feeders": [
{
"track": 1,
"feederId": "08ASMS510363",
"feederType": 264,
"location": 1,
"tableId": "DMY-f81bbf45-3b8b-4bf5-8913-01f0230714b8",
"timeStamp": 1588061208925
}
]
}
}
SetupCenter.Event.OfflineInstantFeedersPlaced#
SetupCenter.Event.OfflineFeedersRemoved#
在坞站上放置或卸下进料器时发生此事件。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| SetupCenter.Property.DockingStation | JSON对象 | 工作站对象 | |
| SetupCenter.Property.TimeStamp | 整数 | 发生时间戳(采用unix时间戳格式) | |
| SetupCenter.Property.Feeders | JSON对象 | 进料器对象 |
作为JSON对象展示的OfflineFeedersPlaced示例:
{
"eventId": "SetupCenter.Event.OfflineInstantFeedersPlaced",
"timestamp": "2020-05-05T16:27:54.063Z",
"values": {
"SetupCenter.Property.DockingStation": {
"dockingStationId": "ABC12345678",
},
"SetupCenter.Property.TimeStamp": 1588696069808,
"SetupCenter.Property.Feeders": [
{
"track": 1,
"feederId": "08ASMS500140",
"feederType": 264,
"timeStamp": 1588696069808,
},
{
"track": 2,
"feederId": "08ASMS500301",
"feederType": 264,
"timeStamp": 1588696069808,
},
{ "...": "..." },
{
"track": 7,
"feederId": "08ASMS510032",
"feederType": 264,
"timeStamp": 1588696069808,
}
],
},
}
SetupCenter.Event.MaterialMoved#
移动包装设备链时会发生此事件。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| SetupCenter.Property.FactoryLocation | 字符串 | 工厂内部位置的名称 | |
| SetupCenter.Property.Action | 字符串 | 参见下文 | 物料移动的类型 |
| SetupCenter.Property.Source | 字符串 | 参见下文 | 在设置中心检测到的操作来源,例如PackagingUnitQuantityChanged事件。 |
| SetupCenter.Property.Line | 字符串 | 所移动包装设备所属的生产线。 | |
| SetupCenter.Property.Setup | 字符串 | 移动的包装设备所属的设置 | |
| SetupCenter.Property.TimeStamp | 整数 | 发生物料移动时的时间戳(采用UNIX时间戳格式) | |
| SetupCenter.Property.PackagingUnitLocation | JSON对象 | 移动的包装设备和相关的组件位置 |
可能的Action值包括: - SetPU:设置包装设备 - RefillPU:重填包装设备 - TearDownPU:拆卸包装设备 - HardwareInsertedInTheStation:将硬件插入工作站(机床、进料器) - HardwareRemovedInTheStation:从工作站卸下硬件(机床、进料器)。 - SplitOnePUInTwo:将一个包装设备拆分为两个。
可能的Source值包括: - Unknown:操作来源未知。 - ManualSetupCenterGUIReleased:通过设置中心GUI中的人工交互释放了该操作。 - SetupCenterScannerReleased:通过与设置中心扫描仪的交互释放了该操作。 - StationReleased:工作站本身释放了该操作。 - SetupCenterReleased:设置中心接口释放了该操作。 - PlacingATable:通过放置机床释放了操作。 - RemovingATable:通过卸下机床释放了操作。 - PlacingAFeeder:通过放置进料器释放了操作。 - RemovingAFeeder:通过卸下进料器释放了操作。 - SetupCenterInternal:通过设置中心内部操作释放了操作。 - DockingStationReleased:坞站本身释放了该操作。 - UpgradeInstallation:在升级安装过程中,数据已被修改。 - PlacingACassette:将晶盒放置到矩阵托盘更换器或矩阵托盘进料器中时,触发了该操作。 - RemovingACassette:从矩阵托盘更换器或矩阵托盘进料器卸下晶盒时,触发了该操作。 - PlacingACartridge:将机芯放置到大容量X-Feeder上时,触发了该操作。 - RemovingACartridge:从大容量X-Feeder卸下机芯时,触发了该操作。
MaterialMoved事件示例:
15:41:09.70270 debug: << Event [918485fc25c64e18b0600deb04bb417e] 'SetupCenter.Event.MaterialMoved'
15:41:09.70270 debug: 'SetupCenter.Property.FactoryLocation'='Virtual Site.Virtual Area.Virtual Production Line'
15:41:09.70270 debug: 'SetupCenter.Property.Action'='TearDownPU'
15:41:09.70270 debug: 'SetupCenter.Property.Source'='ManualSetupCenterGUIReleased'
15:41:09.70270 debug: 'SetupCenter.Property.Line'='Virtual Lines\Virtual Line 01'
15:41:09.70270 debug: 'SetupCenter.Property.Setup'='Demo Setups\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]'
15:41:09.70270 debug: 'SetupCenter.Property.TimeStamp'='1610120468413'
15:41:09.70270 debug: 'SetupCenter.Property.PackagingUnitLocation'='{"PackagingUnit":{"UID":"0201R","ComponentName":"0201R","ComponentBarcode":"0201R","Quantity":1000,"OriginalQuantity":1500,"Manufacturer":"DoStuff Corp","ManufacturerDate":"0001-01-01T00:00:00Z","ExpiryDate":"2022-01-01T11:30:00Z","Supplier":"","BatchId":"batchId","MsdLevel":2,"Comment":"","Extra1":"","Extra2":"","Extra3":"","SplicedPackagingUnit":null,"MsdOpenDate":"2021-01-01T11:30:00Z","LockInfos":[],"LastProductionDate":"0001-01-01T00:00:00Z","ConsumptionDate":"9999-12-31T23:59:59Z","BatchPackagingUnit":null,"GreyZone":0,"AdditionalPartInformation":"","ManufacturePartNumber":"","OrderingCode":"","ManufactureLocation":"","RevisionLevel":"","PurchaseOrderNumber":"","ShippingNoteNumber":"","Batch2":"","SupplierData":"","Serial":"","RoHS":0,"BrightnessClass":"","Extra4":"","Extra5":"","DateCode":"","ComponentBarcodeFragment":"0201R","CreateDate":"1900-01-01T00:00:00","ReorderCount":0},"ComponentLocation":{"Division":1,"Level":0,"Tower":0,"StationTrack":40,"Track":40,"FeederId":"08ASMS500140","FeederType":264,"TableState":1,"Machine":{"MachineId":"10000000","MachineName":"Virtual Stations\\Virtual SX4 01","MachineType":"","LineName":"Virtual Lines\\Virtual Line 01","LinePath":"Virtual Lines\\Virtual Line 01"},"DockingStation":null,"Location":1,"TableId":"DMY-6324a8e8-d075-4db7-9840-a3cec70c5534","FeederTypeSpiOid":292,"Device":1,"Divisions":null,"TargetTrack":0,"CartridgeId":null,"CassetteId":null,"CassetteLevel":0,"TargetSetup":null,"TargetLine":null,"TargetStation":null,"TargetLocation":null,"FeederTypeSpiOidLong":292,"TrayCarrierId":null},"Operator":null,"SetupPath":"Demo Setups\\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]","LinePath":null,"StationPath":null,"MachineId":null}'
SetupCenter.Event.MaterialReordered#
每当在生产线上启动重新排序时,便会发生此事件。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| SetupCenter.Property.FactoryLocation | 字符串 | 工厂内部位置的名称 | |
| SetupCenter.Property.Line | 字符串 | 生产线名称,重新排序的范围:1-256个标志 | |
| SetupCenter.Property.Component | 字符串 | SIPLACE Pro中的组件名称。范围:1-256个标志 | |
| SetupCenter.Property.TimeStamp | 整数 | MSD打开日期。 | |
| SetupCenter.Property.Component.Location.Division | 字符串 | 进料器的分区,其中安放了组件(基于组件)。范围:1-3 | |
| SetupCenter.Property.Component.Location.Level | 字符串 | 货架内的层级,其中安放了组件(基于组件)。MTC/WPW/TrayStack需要此属性,否则为0 | |
| SetupCenter.Property.Component.Location.Tower | 字符串 | MTC/WPW的塔号,否则为0(基于组件)。 | |
| SetupCenter.Property.Component.Location.Track | 字符串 | 位置轨道(基于进料器)。范围:1-120 | |
| SetupCenter.Property.Component.Location.StationTrack | 字符串 | 这是工作站上轨道的编号,基于此组件位置的轨道标尺。 | |
| SetupCenter.Property.Component.Location.Machine.MachineId | 字符串 | 机器ID,在全球所有机器中是唯一的。 | |
| SetupCenter.Property.Component.Location.Location | 整数 | 工作站位置(基于进料器)。范围:1-4 | |
| SetupCenter.Property.Component.Location.CassetteLevel | 整数 | 这是晶盒内的层级(不要与托盘进料器中的层级混淆)。 | |
| SetupCenter.Property.Component.Location.DockingStation.DockingStationId | 字符串 | 坞站标识符 | |
| SetupCenter.Property.Component.Location.TableId | 字符串 | 转换表标识。 | |
| SetupCenter.Property.Component.Location.FeederId | 字符串 | 进料器识别。 | |
| SetupCenter.Property.Component.Location.FeederType | 整数 | 进料器类型(等同于MC编号)。 | |
| SetupCenter.Property.Component.Location.CartridgeId | 字符串 | 机芯标识符。机芯ID仅适用于BulkFeeder X。 | |
| SetupCenter.Property.Component.Location.CassetteId | 字符串 | 晶盒标识符。晶盒ID仅适用于矩阵托盘进料器类型,并且仅当客户在设置中心中激活了晶盒选项时才可用 |
设置中心命令#
SetupCenter.Command.GetActualSetups#
此命令将使用设置中心接口来执行GetActualSetups请求。 此命令的回复将包含MachineSetup的GetActualSetups列表。
此命令可以具有以下参数: | 命令名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 | | ----------------- | ------ | --------- | -------------------------------------------------------------- | ------------- | ------------------------------------------------------------ | | LineFullPath | 字符串 | 是 | | | 包含要为其查询设置中心实例的SiPlacePro生产线完整路径 | | | MachineId | 字符串 | 否 | | | 包含要查询的SiPlacePro机器ID | 提示:FactoryLayout 可使用任务获取机器ID(通过SerialNumber属性)。如果为空,将查询该生产线中可用的所有机器ID。 |
示例:
SendRequest connect.iot.driver.oib.executeCommand
{
"commandId": "SetupCenter.Command.GetActualSetups",
"parameters": {
"LineFullPath": "System\\Linie2",
"MachineId": "00012300"
}
}
示例输出(为了简单起见,删除了一些数组项目):
{
"00012300": {
"MachineLocator": {
"MachineId": "00012300",
"MachineName": "System\\X4iS_2",
"MachineType": "SIPLACE X4i S",
"LineName": "System\\Linie2",
"LinePath": "System\\Linie2"
},
"Tables": [
{
"TableID": "DZS00007959",
"ComponentLocationStates": [
{
"MachineControllerState": 1,
"ValidationStatus": 4,
"PackagingUnit": {
"UID": "ASM5012202",
"ComponentName": "03159452-01",
"ComponentBarcode": "03159452-01",
"Quantity": 478,
"OriginalQuantity": 500,
"Manufacturer": "LINEAR",
"ManufacturerDate": "2021-02-03T05:24:13Z",
"ExpiryDate": "9999-12-31T23:59:59Z",
"Supplier": "",
"BatchId": "",
"MsdLevel": 1,
"Comment": "",
"Extra1": "",
"Extra2": "",
"Extra3": "",
"SplicedPackagingUnit": null,
"MsdOpenDate": "0001-01-01T00:00:00Z",
"LockInfos": [],
"LastProductionDate": "2021-02-04T18:16:34Z",
"ConsumptionDate": "9999-12-31T23:59:59Z",
"BatchPackagingUnit": null,
"GreyZone": 0,
"AdditionalPartInformation": "",
"ManufacturePartNumber": "LT1719IS6#TRMPBF",
"OrderingCode": "",
"ManufactureLocation": "",
"RevisionLevel": "",
"PurchaseOrderNumber": "",
"ShippingNoteNumber": "",
"Batch2": "",
"SupplierData": "",
"Serial": "",
"RoHS": 1,
"BrightnessClass": "",
"Extra4": "",
"Extra5": "",
"DateCode": "1917/2004",
"ComponentBarcodeFragment": "03159452-01",
"CreateDate": "2021-02-03T05:24:21",
"ReorderCount": 0
},
"ComponentLocation": {
"Division": 1,
"Level": 0,
"Tower": 0,
"StationTrack": 23,
"Track": 23,
"FeederId": "08FAUU801443",
"FeederType": 264,
"TableState": 1,
"Machine": {
"MachineId": "00012300",
"MachineName": "System\\X4iS_2",
"MachineType": "SIPLACE X4i S",
"LineName": "System\\Linie2",
"LinePath": "System\\Linie2"
},
"DockingStation": null,
"Location": 4,
"TableId": "DZS00007959",
"FeederTypeSpiOid": 292,
"Device": 1,
"Divisions": null,
"TargetTrack": 0,
"CartridgeId": null,
"CassetteId": null,
"CassetteLevel": 0,
"TargetSetup": null,
"TargetLine": null,
"TargetStation": null,
"TargetLocation": null,
"FeederTypeSpiOidLong": 292,
"TrayCarrierId": null
},
"FillingLevelState": 2,
"IsCliThresholdActive": true,
"RescanIsRequired": false,
"RescanRemainingTime": "00:00:00",
"Operator": null,
"SetupPath": "System\\MSA Basic setup Linie 2\\03133558-03_03128168-01_03128170-01_03134757-01-02 @ 21-02-12 15:04:00 [4891704]",
"LinePath": null,
"StationPath": null,
"MachineId": null
}
],
"TableType": 291
}
]
}
}
如果MachineId为空,则可能的输出将为:
驱动程序日志:
info: Command 'SetupCenter.Command.GetActualSetups' received with empty MachineId. Will search for existing MachineIds on the line 'Virtual Lines\Virtual Line 01'...
Found Station 'Virtual Stations\Virtual SX4 01' with MachineId '10000000' on Line 'Virtual Lines\Virtual Line 01'.
info: Found Station 'Virtual DEK Horizon Printer 01' with MachineId '1116596' on Line 'Virtual Lines\Virtual Line 01'.
info: Found Station 'Virtual DEK Horizon Printer 02' with MachineId '1116604' on Line 'Virtual Lines\Virtual Line 01'.
info: Found Station 'Virtual Reflow Oven 01' with MachineId 'RO0001' on Line 'Virtual Lines\Virtual Line 01'.
info: Found Station 'Virtual Solder Paste Inspection 01' with MachineId 'AOI0001' on Line 'Virtual Lines\Virtual Line 01'.
debug: Command Validated -> Executing Command 'SetupCenter.Command.GetActualSetups'
{
"1116596": null,
"1116604": null,
"10000000": {
"MachineLocator": {
"MachineId": "10000000",
"MachineName": "Virtual Stations\\Virtual SX4 01",
"MachineType": "SIPLACE SX4",
"LineName": "Virtual Lines\\Virtual Line 01",
"LinePath": "Virtual Lines\\Virtual Line 01"
},
"Tables": []
},
"RO0001": null,
"AOI0001": null
}
SetupCenter.Command.IsMachineReadyForMoveInChangeoverTables#
注意:需要SDK 6.2或更高版本!
获取设置转换的机器状态。在设置中心发生处于活动状态的设置更改和新设置事件后,可以调用此方法来确定是否可以安全地从机器中拆下旧的转换机床。
此命令可以具有以下参数:
| 参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| 生产线 | 字符串 | 是 | 生产线完整路径或生产线名称 | ||
| 工作站 | 字符串 | 是 | 生产线内的工作站完整路径或工作站名称 | ||
| 位置 | 整数 | 是 | 要使用的位置 |
此命令将在内部检查工作站在生产线中的位置是否已准备好接收转换机床。此外,还会在内部储存与其他调用相关的设备编号。
如果调用和条件正常,则返回true,否则将引发异常并出现错误。
SetupCenter.Command.IsMachineReadyForMoveOutChangeoverTables#
注意:需要SDK 6.2或更高版本!
获取设置转换后COT拆卸所需的机器状态。在设置中心发生处于活动状态的设置更改和新设置事件后,可以调用此方法来确定是否可以安全地从机器中拆下旧的转换机床
此命令可以具有以下参数:
| 参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| 生产线 | 字符串 | 是 | 生产线完整路径或生产线名称 | ||
| 工作站 | 字符串 | 是 | 生产线内的工作站完整路径或工作站名称 | ||
| 位置 | 整数 | 是 | 要使用的位置 |
此命令将在内部检查工作站在生产线中的位置是否已准备好释放转换机床。此外,还会在内部储存与其他调用相关的设备编号。
如果调用和条件正常,则返回true,否则将引发异常并出现错误。
SetupCenter.Command.MoveChangeoverTableIntoStationLocation#
注意:需要SDK 6.2或更高版本!
将指定的转换机床(COT)移动到指定的工作站位置。 在调用此功能之前,COT必须被放置到合适的位置,以便机器可以自动将其拉入。
此命令可以具有以下参数:
| 参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| 生产线 | 字符串 | 是 | 生产线完整路径或生产线名称 | ||
| 工作站 | 字符串 | 是 | 生产线内的工作站完整路径或工作站名称 | ||
| 位置 | 整数 | 是 | 要使用的位置 |
此命令将在内部请求将COT与工作站对接。
如果调用和条件正常,则返回true,否则将引发异常并出现错误。
SetupCenter.Command.MoveChangeoverTableOutOfStationLocation#
注意:需要SDK 6.2或更高版本!
将指定的转换机床(COT)移出指定的工作站位置。成功完成此功能所需的操作后,便可以将COT从该位置删除
此命令可以具有以下参数:
| 参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| 生产线 | 字符串 | 是 | 生产线完整路径或生产线名称 | ||
| 工作站 | 字符串 | 是 | 生产线内的工作站完整路径或工作站名称 | ||
| 位置 | 整数 | 是 | 要使用的位置 |
此命令将在内部请求取消COT与工作站的对接。
如果调用和条件正常,则返回true,否则将引发异常并出现错误。
进料器联锁#
进料器联锁通过设置中心进料器外部控制API来完成,以防止使用某些进料器。 在以下情况下,设置中心会调用进料器外部控制服务:
- 联机车间:如果将进料器放置到转换机床上的机器中 如果机床管理处于活动状态,则仅当已为放置该进料器的位置注册了转换机床时,才会检查该进料器。 已将带有进料器的转换机床注册到机器中的某个位置(如果转换机床管理处于活动状态)。
- 脱机车间(预设置车间):如果将进料器放置到坞站或进料器托架上。 -脱机设置验证将开始扫描设置报告、坞站ID和转换机床ID。 设置中心包含一个进料器ID列表。 该列表将被发送给外部进料器控制服务以供审批。 该服务将检查进料器ID,并报告状态“进料器正常”或“进料器异常”,以及不应使用某个进料器的原因。 如果放置在联机车间中的进料器被拒绝,将在机器上锁定这些进料器(即无法选取组件)。 错误消息会显示在工作站GUI上。 只有在配方中使用了进料器时,进料器LED才会被设置为红色。否则进料器LED将关闭。 如果放置在预设置车间中的进料器被拒绝,则会在其显示屏(如有)中显示“已锁定”,并且其LED指示灯变为红色。 在设置中心GUI中,进料器状态也会更新为“错误”(红色)。 后续的设置中心操作,用于通过扫描仪验证包装设备(设置及重填包装设备,并激活轨道) 检查外部控制服务设置的进料器状态,并在进料器已被锁定时拒绝进行验证。 扫描仪显示屏上会显示相应的消息。
进料器联锁事件#
FeederInterlocking.Event.InterlockingRequest#
设置中心会请求MES系统验证进料器维保。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| FeederInterlocking.Property.Feeder.IdList | 字符串 | 要验证的单个或多个进料器ID(用逗号分隔) |
进料器联锁命令#
FeederInterlocking.Command.StatusRequestReply#
此命令用于发送对FeederInterlocking.Event.InterlockingRequest事件的回复,需要以下参数:
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Internal.ReplyId | 字符串 | 是 | 此命令应回复的请求的ID | ||
| FeedersId | 字符串 | 是 | 单个或多个进料器ID(用逗号分隔) | ||
| RequestResults | 字符串 | 是 | 0,1 | MES返回的板验证结果。必须:0:OK:进料器联锁状态正常。可以使用进料器。 1:NotOk:进料器联锁状态已过期。这是所有FeedersId的逗号分隔值字符串 | |
| 原因 | 字符串 | 是 | requestResults返回值的原因(逗号分隔值) |
可追溯性#
可追溯性接口系统可以联锁。这意味着MES系统可以告知工作站是否允许板继续进行下一个处理步骤,或者是否需要将其留在传送带中,还是仅通知MES而不执行操作。
可追溯性事件#
Traceability.Event.TraceabilityData#
当面板退出设备时会发生此事件。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| Traceability.Property.BaseType | 字符串 | BaseType描述了可追溯性数据的类型。这是将序列化为字符串的枚举值,定义如下:“未知”(0)未知基本类型(切勿设置);“板”(1)可追溯性数据与特定板相关(基于生产线或基于工作站模式);“工单”(2)可追溯性数据与工单相关(基于生产线模式) | |
| Traceability.Property.BoardId | 字符串 | 板ID或条码 | |
| Traceability.Property.DateBegin | 日期 | 处理开始的日期/时间戳,以UTC形式提供 | |
| Traceability.Property.DateComplete | 日期 | 处理结束的日期/时间戳,以UTC形式提供(DateTime.min = 未设置) | |
| Traceability.Property.DateCorrelationBegin | 日期 | 部分相关的工单文件的相关开始日期,以UTC形式提供(DateTime.min = 未设置) | |
| Traceability.Property.DateCorrelationEnd | 日期 | 部分相关工单文件的相关结束日期,以UTC形式提供(DateTime.min = 未设置) | |
| Traceability.Property.Lane.Name | 字符串 | 传送带。这是将序列化为字符串的枚举值,定义如下:Unknown (0) 未知传送带Right (1) 右侧子传送带Left (2) 左侧子传送带 | |
| Traceability.Property.SubLane.Name | 字符串 | 子传送带(将来可支持四通道)。这是将序列化为字符串的枚举值,定义如下:None (0) 无子传送带Right (1) 右侧子传送带Left (2) 左侧子传送带 | |
| Traceability.Property.Line.Name | 字符串 | 生产线的名称 | |
| Traceability.Property.MachineId | 字符串 | 生产工作站的ID | |
| Traceability.Property.Station.Name | 字符串 | 工作站的名称 | |
| Traceability.Property.Version | 字符串 | 可追溯性信息的版本 | |
| Traceability.Property.ComponentTypes | JSON对象 | 此对象中的包装设备正在使用的组件类型。 | |
| Traceability.Property.Consumptions | JSON对象 | 放置的每个包装的详细消耗数据列表 | |
| Traceability.Property.ErrorCodes | JSON对象 | 生成此可追溯性数据时出现的错误代码列表。 | |
| Traceability.Property.ErrorLabel | 字符串 | 可视为位字段的错误标识符。 | |
| Traceability.Property.Jobs | JSON对象 | SIPLAACEPro作业信息,如配方、设置名称、板类型和板侧。 | |
| Traceability.Property.Locations | JSON对象 | 放置的包装设备(基于工作站)在生产时间期间验证的包装设备(基于生产线) | |
| Traceability.Property.PackagingUnits | JSON对象 | 包含有关一个包装设备(也称为卷筒、包装、货架)的信息的结构。 | |
| Traceability.Property.Panels | JSON对象 | 由机器放置的PCB上的子面板。此数据仅适用于基于工作站的数据。 |
作为JSON对象展示的可追溯性数据示例:
{
"messageId": "eb3eb5a9d4f544289b1d6980dba3371d",
"eventId": "Traceability.Event.TraceabilityData",
"timestamp": "2020-05-05T19:08:27.906Z",
"values": {
"Traceability.Property.BaseType": "Board",
"Traceability.Property.BoardId": "AutoBC__22",
"Traceability.Property.DateBegin": "2020-05-05T19:08:14.171Z",
"Traceability.Property.DateComplete": "2020-05-05T19:08:27.632Z",
"Traceability.Property.DateCorrelationBegin": "0001-01-01T00:00:00.000Z",
"Traceability.Property.DateCorrelationEnd": "0001-01-01T00:00:00.000Z",
"Traceability.Property.Lane.Name": "Right",
"Traceability.Property.Line.Name": "Virtual Line 01",
"Traceability.Property.Station.Name": "Virtual SX4 01",
"Traceability.Property.MachineId": "10000000",
"Traceability.Property.SubLane.Name": "None",
"Traceability.Property.Version": "5.7",
"Traceability.Property.ComponentTypes": [
{
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "5"
},
{
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "6"
}
],
"Traceability.Property.Consumptions": [
{
"AccessTotal": 20,
"PackagingUID": "test_1_40",
"RejectIdent": 0,
"RejectVacuum": 0,
"TrackEmpty": 0,
"DmyId": null,
"$id": "7"
},
{
"AccessTotal": 20,
"PackagingUID": "test_4_7",
"RejectIdent": 0,
"RejectVacuum": 0,
"TrackEmpty": 0,
"DmyId": null,
"$id": "8"
},
{
"AccessTotal": 20,
"PackagingUID": "test_2_40",
"RejectIdent": 0,
"RejectVacuum": 0,
"TrackEmpty": 0,
"DmyId": null,
"$id": "9"
},
{
"AccessTotal": 4,
"PackagingUID": "test_3_1",
"RejectIdent": 0,
"RejectVacuum": 0,
"TrackEmpty": 0,
"DmyId": null,
"$id": "10"
},
{
"AccessTotal": 16,
"PackagingUID": "test_3_2_1",
"RejectIdent": 0,
"RejectVacuum": 0,
"TrackEmpty": 0,
"DmyId": null,
"$id": "11"
}
],
"Traceability.Property.ErrorLabel": "FINISHED",
"Traceability.Property.Jobs": [
{
"BoardName": "Demo Boards\\ASM Simple Product Board",
"BoardSide": "Top",
"OrderID": "OID0001",
"Recipe": "Demo Recipes\\Recipe ASM Simple Product Board",
"Setup": "Demo Setups\\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]",
"$id": "12"
}
],
"Traceability.Property.Locations": [
{
"Loc": 1,
"Positions": [
{
"Div": 1,
"Level": -1,
"PackagingUnits": [
{
"Id": "pu1",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "16"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99859,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T18:22:54.000Z",
"$id": "15"
}
],
"Tower": -1,
"Track": 40,
"$id": "14"
}
],
"Station": null,
"TableID": "DMY-ef19a11a-0f37-4b94-a24c-1b24c816ddf1",
"$id": "13"
},
{
"Loc": 2,
"Positions": [
{
"Div": 1,
"Level": -1,
"PackagingUnits": [
{
"Id": "pu2",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "20"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99839,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:43:40.000Z",
"$id": "19"
}
],
"Tower": -1,
"Track": 40,
"$id": "18"
}
],
"Station": null,
"TableID": "DMY-11d43e1d-26be-470a-9e7b-b3a56ccde414",
"$id": "17"
},
{
"Loc": 3,
"Positions": [
{
"Div": 1,
"Level": -1,
"PackagingUnits": [
{
"Id": "pu3",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "24"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99967,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:44:28.000Z",
"$id": "23"
}
],
"Tower": -1,
"Track": 1,
"$id": "22"
},
{
"Div": 1,
"Level": -1,
"PackagingUnits": [
{
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "27"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "26"
}
],
"Tower": -1,
"Track": 2,
"$id": "25"
}
],
"Station": null,
"TableID": "DMY-28a01aa1-0e5b-4bfe-9be0-a20bd4404432",
"$id": "21"
},
{
"Loc": 4,
"Positions": [
{
"Div": 1,
"Level": -1,
"PackagingUnits": [
{
"Id": "pu5",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "31"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99799,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:29.000Z",
"$id": "30"
}
],
"Tower": -1,
"Track": 7,
"$id": "29"
}
],
"Station": null,
"TableID": "DMY-40b30d7d-522a-4d94-b033-94e459cfdd53",
"$id": "28"
}
],
"Traceability.Property.Panels": [
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu1",
"PackagingUnit": {
"Id": "pu1",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "35"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99859,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T18:22:54.000Z",
"$id": "34"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "36"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "37"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "38"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "39"
}
],
"$id": "33"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "42"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "41"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "43"
}
],
"$id": "40"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_1_3",
"$id": "32"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu1",
"PackagingUnit": {
"Id": "pu1",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "47"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99859,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T18:22:54.000Z",
"$id": "46"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "48"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "49"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "50"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "51"
}
],
"$id": "45"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "54"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "53"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "55"
}
],
"$id": "52"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_2_1",
"$id": "44"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu2",
"PackagingUnit": {
"Id": "pu2",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "59"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99839,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:43:40.000Z",
"$id": "58"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "60"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "61"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "62"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "63"
}
],
"$id": "57"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "66"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "65"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "67"
}
],
"$id": "64"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_2_2",
"$id": "56"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu2",
"PackagingUnit": {
"Id": "pu2",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "71"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99839,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:43:40.000Z",
"$id": "70"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "72"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "73"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "74"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "75"
}
],
"$id": "69"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "78"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "77"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "79"
}
],
"$id": "76"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_2_3",
"$id": "68"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu1",
"PackagingUnit": {
"Id": "pu1",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "83"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99859,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T18:22:54.000Z",
"$id": "82"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "84"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "85"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "86"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "87"
}
],
"$id": "81"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "90"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "89"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "91"
}
],
"$id": "88"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_1_4",
"$id": "80"
},
{
"Omit": false,
"Packagings": null,
"PanelID": "",
"PanelName": "Top",
"$id": "92"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu1",
"PackagingUnit": {
"Id": "pu1",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "96"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99859,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T18:22:54.000Z",
"$id": "95"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "97"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "98"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "99"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "100"
}
],
"$id": "94"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "103"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "102"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "104"
}
],
"$id": "101"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_1_1",
"$id": "93"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu1",
"PackagingUnit": {
"Id": "pu1",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "108"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99859,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T18:22:54.000Z",
"$id": "107"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "109"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "110"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "111"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "112"
}
],
"$id": "106"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "115"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "114"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "116"
}
],
"$id": "113"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_1_2",
"$id": "105"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu2",
"PackagingUnit": {
"Id": "pu2",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "120"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99839,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:43:40.000Z",
"$id": "119"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "121"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "122"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "123"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "124"
}
],
"$id": "118"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "127"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "126"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "128"
}
],
"$id": "125"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_3_2",
"$id": "117"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu2",
"PackagingUnit": {
"Id": "pu2",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "132"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99839,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:43:40.000Z",
"$id": "131"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "133"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "134"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "135"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "136"
}
],
"$id": "130"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "139"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "138"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "140"
}
],
"$id": "137"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_2_4",
"$id": "129"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "144"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "143"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "145"
}
],
"$id": "142"
},
{
"PackagingRefID": "pu5",
"PackagingUnit": {
"Id": "pu5",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "148"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99799,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:29.000Z",
"$id": "147"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "149"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "150"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "151"
},
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "152"
}
],
"$id": "146"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_4_4",
"$id": "141"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "156"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "155"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "157"
}
],
"$id": "154"
},
{
"PackagingRefID": "pu5",
"PackagingUnit": {
"Id": "pu5",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "160"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99799,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:29.000Z",
"$id": "159"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "161"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "162"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "163"
},
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "164"
}
],
"$id": "158"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_4_2",
"$id": "153"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "168"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "167"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "169"
}
],
"$id": "166"
},
{
"PackagingRefID": "pu5",
"PackagingUnit": {
"Id": "pu5",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "172"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99799,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:29.000Z",
"$id": "171"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "173"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "174"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "175"
},
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "176"
}
],
"$id": "170"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_3_4",
"$id": "165"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "180"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "179"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "181"
}
],
"$id": "178"
},
{
"PackagingRefID": "pu5",
"PackagingUnit": {
"Id": "pu5",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "184"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99799,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:29.000Z",
"$id": "183"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "185"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "186"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "187"
},
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "188"
}
],
"$id": "182"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_4_1",
"$id": "177"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu3",
"PackagingUnit": {
"Id": "pu3",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "192"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99967,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:44:28.000Z",
"$id": "191"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "193"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "194"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "195"
},
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "196"
}
],
"$id": "190"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "199"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "198"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "200"
}
],
"$id": "197"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_3_3",
"$id": "189"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "204"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "203"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "205"
}
],
"$id": "202"
},
{
"PackagingRefID": "pu5",
"PackagingUnit": {
"Id": "pu5",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "208"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99799,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:29.000Z",
"$id": "207"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "209"
},
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "210"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "211"
},
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "212"
}
],
"$id": "206"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_4_3",
"$id": "201"
},
{
"Omit": false,
"Packagings": [
{
"PackagingRefID": "pu2",
"PackagingUnit": {
"Id": "pu2",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "0201R",
"Comment": null,
"ComponentType": {
"Id": "ct1",
"Name": "Demo Components\\0201R",
"PackForm": "Demo Component Shapes\\98",
"$id": "216"
},
"ComponentTypeId": "ct1",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99839,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:43:40.000Z",
"$id": "215"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C4",
"$id": "217"
},
{
"ComponentBarcode": null,
"Name": "C3",
"$id": "218"
},
{
"ComponentBarcode": null,
"Name": "C1",
"$id": "219"
},
{
"ComponentBarcode": null,
"Name": "C2",
"$id": "220"
}
],
"$id": "214"
},
{
"PackagingRefID": "pu4",
"PackagingUnit": {
"Id": "pu4",
"PackagingId": null,
"Active": true,
"BatchId": null,
"BrightnessClass": null,
"ComponentBarcode": "SOT23",
"Comment": null,
"ComponentType": {
"Id": "ct5",
"Name": "Demo Components\\SOT23",
"PackForm": "Demo Component Shapes\\400",
"$id": "223"
},
"ComponentTypeId": "ct5",
"CustomValue1": null,
"ExpiryDate": "9999-12-31T23:59:59.999Z",
"Extra1": null,
"Extra2": null,
"Extra3": null,
"ManufactureDate": "0001-01-01T00:00:00.000Z",
"Manufacturer": null,
"MsdLevel": "L1",
"MsdOpenDate": "0001-01-01T00:00:00.000Z",
"Operator": null,
"OriginalQuantity": 99999,
"Quantity": 99871,
"Serial": null,
"Supplier": null,
"VerifiedDate": "2020-05-05T09:45:09.000Z",
"$id": "222"
},
"ReferenceDesignators": [
{
"ComponentBarcode": null,
"Name": "C5",
"$id": "224"
}
],
"$id": "221"
}
],
"PanelID": "",
"PanelName": "Top/Panel_Top_1_3_1",
"$id": "213"
}
],
"$id": "4"
},
"$id": "3"
}
Traceability.Event.BoardProducedRequest#
当面板在启用联锁的情况下退出设备时,会发生此事件。此事件将等待BoarProducedRequestResult回复。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| Traceability.Property.BoardLockState | 整数 | 板的锁定状态:0 “未知”- TraceMaster不支持“未知”板状态或参数BoardLockState1 “锁定”- 工作站或传送带正在等待MES响应如何继续处理板(联锁开启)2 “解锁”- 联锁被禁用,如果下一台机器或传送带准备就绪,将自动运输板 | |
| Traceability.Property.BaseType | 字符串 | BaseType描述了可追溯性数据的类型。这是将序列化为字符串的枚举值,定义如下:Unknown (0)未知基本类型(切勿设置)Board (1)可追溯性数据与特定板相关(基于生产线或基于工作站模式)Order (2)可追溯性数据与工单相关(基于生产线的模式) | |
| Traceability.Property.BoardId | 字符串 | 板ID或条码 | |
| Traceability.Property.DateBegin | 日期 | 处理开始的日期/时间戳,以UTC形式提供 | |
| Traceability.Property.DateComplete | 日期 | 处理结束的日期/时间戳,以UTC形式提供(DateTime.min = 未设置) | |
| Traceability.Property.DateCorrelationBegin | 日期 | 部分相关的工单文件的相关开始日期,以UTC形式提供(DateTime.min = 未设置) | |
| Traceability.Property.DateCorrelationEnd | 日期 | 部分相关工单文件的相关结束日期,以UTC形式提供(DateTime.min = 未设置) | |
| Traceability.Property.Lane.Name | 字符串 | 传送带。这是将序列化为字符串的枚举值,定义如下:Unknown (0) 未知传送带Right (1) 右侧子传送带Left (2) 左侧子传送带 | |
| Traceability.Property.SubLane.Name | 字符串 | 子传送带(将来可支持四通道)。这是将序列化为字符串的枚举值,定义如下:“无”(0)无子传送带;“右侧”(1)右侧子传送带;“左侧”(2)左侧子传送带 | |
| Traceability.Property.Line.Name | 字符串 | 生产线的名称 | |
| Traceability.Property.MachineId | 字符串 | 生产工作站的ID | |
| Traceability.Property.Station.Name | 字符串 | 工作站的名称 | |
| Traceability.Property.Version | 字符串 | 可追溯性信息的版本 | |
| Traceability.Property.ComponentTypes | JSON对象 | 此对象中的包装设备正在使用的组件类型。 | |
| Traceability.Property.Consumptions | JSON对象 | 放置的每个包装的详细消耗数据列表 | |
| Traceability.Property.ErrorCodes | JSON对象 | 生成此可追溯性数据时出现的错误代码列表。 | |
| Traceability.Property.ErrorLabel | 字符串 | 可视为位字段的错误标识符。 | |
| Traceability.Property.Jobs | JSON对象 | SIPLAACEPro作业信息,如配方、设置名称、板类型和板侧。 | |
| Traceability.Property.Locations | JSON对象 | 放置的包装设备(基于工作站)在生产时间期间验证的包装设备(基于生产线) | |
| Traceability.Property.PackagingUnits | JSON对象 | 包含有关一个包装设备(也称为卷筒、包装、货架)的信息的结构。 | |
| Traceability.Property.Panels | JSON对象 | 由机器放置的PCB上的子面板。此数据仅适用于基于工作站的数据。 |
作为JSON对象展示的板生成的请求示例:
{
"messageId": "cb89d0be08be4fa38fe433d06a07d82d",
"eventId": "Traceability.Event.BoardProducedRequest",
"timestamp": "2020-05-05T19:08:27.908Z",
"values": {
"Traceability.Property.BaseType": "Board",
"Traceability.Property.BoardId": "AutoBC__22",
"Traceability.Property.DateBegin": "2020-05-05T19:08:14.171Z",
"Traceability.Property.DateComplete": "2020-05-05T19:08:27.632Z",
"Traceability.Property.DateCorrelationBegin": "0001-01-01T00:00:00.000Z",
"Traceability.Property.DateCorrelationEnd": "0001-01-01T00:00:00.000Z",
"Traceability.Property.Lane.Name": "Right",
"Traceability.Property.Line.Name": "Virtual Line 01",
"Traceability.Property.Station.Name": "Virtual SX4 01",
"Traceability.Property.MachineId": "10000000",
"Traceability.Property.SubLane.Name": "None",
"Traceability.Property.Version": "5.7",
"Traceability.Property.BoardLockState": 1,
"Internal.RequestId": "cb89d0be08be4fa38fe433d06a07d82d",
"$id": "4"
},
"$id": "3"
}
Traceability.Event.BoardCheckInRequest#
当面板在启用联锁的情况下退出设备时,会发生此事件。此事件将等待BoardCheckInRequestResult回复。
此事件会在板进入生产线时向MES系统发送签入事件。此事件仅适用于在生产线前方安装了扫描仪的基于生产线的可追溯性。签入事件不可用于基于工作站的可追溯性,对于此模式,请集成ASM BoardGateKeeper以锁定生产线前面的板,并返回包含MES结果的结构。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| Traceability.Property.BoardId | 字符串 | 在生产线前扫描的条码 | |
| Traceability.Property.CheckInErrorCode | 整数 | 可视为位字段的错误标识符。可以包含以下值:0 签入-关联成功,未发生错误65536 在多次接收前端条码时(例如,同一条码在生产线前被扫描了两次),后端条码丢失 | |
| Traceability.Property.LineName | 字符串 | 生产线的名称 | |
| Traceability.Property.MostCriticalMSDExpireDate | 字符串 | 以UTC形式提供的生产线中扫描时间验证的所有MSD部件的最关键到期日期;如果当前设置中没有任何MSD物料,则会设置最大日期(9999-12-31 12:59:59 PM) | |
| Traceability.Property.RecipeName | 字符串 | 当前生成的配方名称 | |
| Traceability.Property.ScanTime | 字符串 | 在生产线前扫描条码的时间(UTC) |
作为JSON对象展示的板签入请求示例:
{
"messageId": "4cba1086af694ac1bf56c1d4cb79ae8f",
"eventId": "Traceability.Event.BoardCheckInRequest",
"timestamp": "2020-05-05T19:20:55.545Z",
"values": {
"Traceability.Property.BoardId": "AutoBC__25",
"Traceability.Property.CheckInErrorCode": 0,
"Traceability.Property.Line.Name": "Virtual Line 01",
"Traceability.Property.MostCriticalMSDExpireDate": "9999-12-31T23:59:59.999Z",
"Traceability.Property.Recipe.Name": "Demo Recipes\\Recipe ASM Simple Product Board",
"Traceability.Property.ScanTime": "2020-05-05T19:20:24.825Z",
"Internal.RequestId": "4cba1086af694ac1bf56c1d4cb79ae8f",
"$id": "4"
},
"$id": "3"
}
可追溯性联锁命令#
Traceability.Command.BoardProducedRequestReply#
此命令用于发送对Traceability.Event.BoardProducedRequest事件的回复,需要以下参数:
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Internal.ReplyId | 字符串 | 是 | 此命令应回复的请求的ID | ||
| BoardValidationResult | 字符串 | 是 | 结果值:Error MES中发生内部错误,无法确定板。该板不会运输。操作员必须检查MES的日志文件Confirmed MES确认了板的下一处理步骤Rejected_Hold MES拒绝了板。板必须锁定在传送带中,必须由操作员手动拆除。Rejected_Pass MES拒绝了板。MES拒绝了板,但它将通过生产线运输。在这种情况下,操作员将不会通过TraceService获得有关板被拒绝的任何信息。因此,在这种情况下,客户必须实施一个解决方案,阐明如何继续使用板,例如,MES实施升级路径来通知操作员异步情况 | ||
| BoardValidationReason | 字符串 | 出现在设备HMI上作为失败消息理由的原因。 |
Traceability.Command.BoardCheckInRequestReply#
此命令用于发送对Traceability.Event.BoardCheckInRequestRequest事件的回复,需要以下参数:
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Internal.ReplyId | 字符串 | 是 | 此命令应回复的请求的ID | ||
| BoardValidationResult | 字符串 | 是 | 结果值:Error MES中发生内部错误,无法确定板。该板不会运输。操作员必须检查MES的日志文件Confirmed MES确认了板的下一处理步骤Rejected_Hold MES拒绝了板。板必须锁定在传送带中,必须由操作员手动拆除。Rejected_Pass MES拒绝了板。MES拒绝了板,但它将通过生产线运输。在这种情况下,操作员将不会通过TraceService获得有关板被拒绝的任何信息。因此,在这种情况下,客户必须实施一个解决方案,阐明如何继续使用板,例如,MES实施升级路径来通知操作员异步情况 | ||
| BoardValidationReason | 字符串 | 出现在设备HMI上作为失败消息理由的原因。 |
生产线控制#
此模块负责控制生产线。它允许用户执行一组命令来请求信息或向生产线发送控件。
生产线控制命令#
LineControl.Command.GetRecipeForStation#
此命令将通过通道为您提供特定工作站的配方。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineName | 字符串 | 是 | 生产线完整路径 | ||
| StationName | 字符串 | 是 | 工作站的名称 |
作为JSON对象展示的GetRecipeForStation回复示例:
{
"LineControl.Property.LeftConveyor.Recipe": "",
"LineControl.Property.LeftConveyor.ProcessState": "Idle",
"LineControl.Property.LeftConveyor.Board.Name": "",
"LineControl.Property.LeftConveyor.Board.Side": "Undefined",
"LineControl.Property.RightConveyor.Recipe": "Demo Recipes\\Recipe ASM Simple Product Board",
"LineControl.Property.RightConveyor.ProcessState": "Processing",
"LineControl.Property.RightConveyor.Board.Name": "Demo Boards\\ASM Simple Product Board",
"LineControl.Property.RightConveyor.Board.Side": "Top"
}
LineControl.Command.GetLineStatus#
此命令将为您提供特定生产线的状态。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineName | 字符串 | 是 | 生产线完整路径 |
作为JSON对象展示的GetLineStatus回复示例:
{
"LineControl.Property.Line.Name": "Virtual Lines\\Virtual Line 01",
"LineControl.Property.Job": null,
"LineControl.Property.LineControlServer": "line01",
"LineControl.Property.ProductionSchedule": "Demo Production Schedules\\Demo Production Schedule",
"LineControl.Property.StationStatus": [
{
"LineControl.Property.Station.Name": "Virtual Stations\\Virtual SX4 01",
"LineControl.Property.Setup.Name": "Demo Setups\\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]",
"LineControl.Property.ConnectionState": "Connected",
"LineControl.Property.StationConveyorStatus": {
"LineControl.Property.LeftConveyor.Recipe": "",
"LineControl.Property.LeftConveyor.ProcessState": "Idle",
"LineControl.Property.LeftConveyor.Board.Name": "",
"LineControl.Property.LeftConveyor.Board.Side": "Undefined",
"LineControl.Property.RightConveyor.Recipe": "Demo Recipes\\Recipe ASM Simple Product Board",
"LineControl.Property.RightConveyor.ProcessState": "Processing",
"LineControl.Property.RightConveyor.Board.Name": "Demo Boards\\ASM Simple Product Board",
"LineControl.Property.RightConveyor.Board.Side": "Top"
}
}
]
}
LineControl.Command.StopStation#
此命令将停止给定工作站,并且此命令没有预期的回复。
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| LineName | 字符串 | 是 | 生产线完整路径 | ||
| StationName | 字符串 | 是 | 工作站的名称 |
包装设备#
包装设备由设置中心外部控制API来完成(例如:ISiplaceSetupCenterExternalControl 接口)。 ISiplaceSetupCenterExternalControl使MES系统能够及时控制设置中心中的验证过程。必须使用SIPLACE生产线控制适配器在OIB中注册ISiplaceSetupCenterExternalControl。生产线控制适配器将在首次下载配方后为生产线设置正确的属性。必须为指定生产线或在工厂布局路径的更高层次结构中配置MES服务。还可以为每条生产线配置不同的MES服务。 接口由以下方法组成:GetNewPackagingUnitData 如果扫描的唯一ID不在设置中心数据库中,则将由设置中心调用该任务。MES系统将获取扫描的条码并返回扫描的唯一ID的包装设备数据。 GetPackagingUnitControlStatus 如果将包装设备发送到工作站或在脱机设置准备车间中进行扫描,则会调用该方法。 如果设置或重填包装设备、注册转换机床或将设置中心连接到工作站(重新启动或重新连接后),则会发生此调用。此外,在调用GetNewPackagingUnitData方法之后也会调用该方法。 此方法是验证过程中的第一个验证操作。设置中心将首先调用此方法以从MES获取包装设备的新数据和状态。 之后,设置中心将继续使用MES系统返回的数据验证组件名称、到期日期、MSD级别等。
包装设备事件#
PackagingUnit.Event.NewPackagingUnitDataRequest#
实现GetNewPackagingUnitData方法。 这是一个集成点,当条码以唯一ID模式通过唯一的条码片段进行扫描时,设置中心将在此调用外部系统,而设置中心数据库中则不存在任何包装设备数据。 这使客户能够配置一个集成方案,其中设置中心会在扫描条码时请求数据。 这只是为了实现及时的数据传输,不能提前完成。包装设备数据包含了所有的属性,这些属性是通过包含在卷轴上找到的所有条码片段信息的条码解析出来的。包装设备数据对象中填充了在基于条码配置和所扫描条码的扫描操作期间找到的所有属性。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| PackagingUnit.Property.ComponentBarCode | 字符串 | 扫描的完整条码,包含“组件”条码片段。 | |
| PackagingUnit.Property.PackagingUnitLocations | 对象 | 发生扫描的组件位置列表以及扫描的数据 |
JSON对象的PackagingUnitLocations请求对象示例:
[
{
"PackagingUnit": {
"UID": "0201R",
"ComponentName": "",
"ComponentBarcode": "0201R",
"Quantity": -1,
"OriginalQuantity": -1,
"Manufacturer": "",
"ManufacturerDate": "1900-01-01T00:00:00Z",
"ExpiryDate": "9999-12-31T23:59:59Z",
"Supplier": "",
"BatchId": "",
"MsdLevel": 1,
"Comment": "",
"Extra1": "",
"Extra2": "",
"Extra3": "",
"SplicedPackagingUnit": null,
"MsdOpenDate": "1900-01-01T00:00:00Z",
"LockInfos": [],
"LastProductionDate": "1900-01-01T00:00:00Z",
"ConsumptionDate": "9999-12-31T23:59:59Z",
"BatchPackagingUnit": null,
"GreyZone": 0,
"AdditionalPartInformation": "",
"ManufacturePartNumber": "",
"OrderingCode": "",
"ManufactureLocation": "",
"RevisionLevel": "",
"PurchaseOrderNumber": "",
"ShippingNoteNumber": "",
"Batch2": "",
"SupplierData": "",
"Serial": "",
"RoHS": 0,
"BrightnessClass": "",
"Extra4": "",
"Extra5": "",
"DateCode": "",
"ComponentBarcodeFragment": null,
"CreateDate": "1900-01-01T00:00:00Z",
"ReorderCount": 0
},
"ComponentLocation": null,
"Operator": null,
"SetupPath": null,
"LinePath": null,
"StationPath": null,
"MachineId": null
}
]
PackagingUnit.Event.PackagingUnitControlStatusExtendedRequest#
实现GetPackagingUnitControlStatusExtended方法。 在验证过程中从外部系统(如MES系统)请求包装设备数据。这使外部系统能够控制用于验证过程的数据。PackagingUnitResult对象描述了从外部系统返回的数据。
| 属性ID | 数据类型 | 可能的值 | 描述 |
|---|---|---|---|
| PackagingUnit.Property.Reason | 整数 | 0-6 | 调用此方法的原因。可能的值包括:0 位置:原因未知,1设置:调用MES进行设置操作,2重填:调用MES进行重填操作,3 FeederPlaced:为已放置进料器调用MES,4 AnnounceTable:调用MES是因为在工作站位置公布了某个机床转为联机状态,5 OfflineInsertTable:调用MES是因为在打开脱机验证期间扫描了某个机床,6 SetupControlDataRequest:调用MES是因为某个工作站请求了新数据。 |
| PackagingUnit.Property.ComponentBarCode | 字符串 | 扫描的完整条码,包含“组件”条码片段。 | |
| PackagingUnit.Property.Quantity | 整数 | 包装设备的实际数量。数量由CLI调整(例如,检测到拼接)。如果包装设备已空,且机器软件仍保存包装设备信息,则可能为0。如果数量的值超过原始数量的值,则将调整数量的值,因为原始数量是数量的最大值。范围:0 - n | |
| PackagingUnit.Property.FeederId | 字符串 | 进料器识别。 | |
| PackagingUnit.Property.MachineName | 字符串 | SIPLACE Pro中使用的机器标识符,由完整路径组成。 | |
| PackagingUnit.Property.LinePath | 字符串 | 来自SIPLACE Pro的生产线完整路径。 | |
| PackagingUnit.Property.PackagingUnitLocations | 对象 | 发生扫描的组件位置列表以及扫描的数据 |
JSON对象的PackagingUnitLocations请求对象示例:
{
"PackagingUnitLocations": [
{
"PackagingUnit": {
"UID": "0201R",
"ComponentName": "0201R",
"ComponentBarcode": "0201R",
"Quantity": 1000,
"OriginalQuantity": 1500,
"Manufacturer": "",
"ManufacturerDate": "1900-01-01T00:00:00Z",
"ExpiryDate": "2022-01-01T11:30:00Z",
"Supplier": "",
"BatchId": "batchId",
"MsdLevel": 2,
"Comment": "",
"Extra1": "",
"Extra2": "",
"Extra3": "",
"SplicedPackagingUnit": null,
"MsdOpenDate": "2021-01-01T11:30:00Z",
"LockInfos": [],
"LastProductionDate": "1900-01-01T00:00:00Z",
"ConsumptionDate": "9999-12-31T23:59:59Z",
"BatchPackagingUnit": null,
"GreyZone": 0,
"AdditionalPartInformation": "",
"ManufacturePartNumber": "",
"OrderingCode": "",
"ManufactureLocation": "",
"RevisionLevel": "",
"PurchaseOrderNumber": "",
"ShippingNoteNumber": "",
"Batch2": "",
"SupplierData": "",
"Serial": "",
"RoHS": 0,
"BrightnessClass": "",
"Extra4": "",
"Extra5": "",
"DateCode": "",
"ComponentBarcodeFragment": null,
"CreateDate": "1900-01-01T00:00:00Z",
"ReorderCount": 0
},
"ComponentLocation": {
"Division": 1,
"Level": 0,
"Tower": 0,
"StationTrack": 40,
"Track": 40,
"FeederId": "08ASMS500140",
"FeederType": 264,
"TableState": 1,
"Machine": {
"MachineId": "10000000",
"MachineName": "Virtual Stations\\Virtual SX4 01",
"MachineType": null,
"LineName": "Virtual Lines\\Virtual Line 01",
"LinePath": null
},
"DockingStation": null,
"Location": 1,
"TableId": "DMY-6324a8e8-d075-4db7-9840-a3cec70c5534",
"FeederTypeSpiOid": 292,
"Device": 1,
"Divisions": null,
"TargetTrack": 0,
"CartridgeId": null,
"CassetteId": null,
"CassetteLevel": 0,
"TargetSetup": null,
"TargetLine": null,
"TargetStation": null,
"TargetLocation": null,
"FeederTypeSpiOidLong": 292,
"TrayCarrierId": null
},
"Operator": null,
"SetupPath": "Demo Setups\\Virtual Line ASM Simple Product Board @ 19-10-07 07:52:24 [13556]",
"LinePath": "Virtual Lines\\Virtual Line 01",
"StationPath": null,
"MachineId": null
}
],
"Reason": 1
}
包装设备命令#
PackagingUnit.Command.NewPackagingUnitDataRequestReply#
此命令用于发送对PackagingUnit.Event.NewPackagingUnitDataRequest事件的回复,需要以下参数:
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Internal.ReplyId | 字符串 | 是 | 此命令应回复的请求的ID | ||
| ExternalControlResultMessage | 字符串 | 是 | 描述操作失败原因的消息 | ||
| ResultState | 整数 | 是 | 0,1,2 | 返回的ExternalControlResult的结果状态。值描述:0 位置:包装设备数据的结果未知;1:OK:已成功处理包装设备数据;2:NotOk:应清除包装设备数据的验证状态。返回ResultState = 2时,将向包装设备数据添加称为LockInfo(Source=9,Reason=28)的内部锁。 | |
| ComponentName | 字符串 | 是 | SIPLACE Pro中的组件名称。范围:1-256个标志 | ||
| 数量 | 整数 | 是 | 包装设备的实际数量。数量由CLI调整(例如,检测到拼接)。如果包装设备已空,且机器软件仍保存包装设备信息,则可能为0。如果数量的值超过原始数量的值,则将调整数量的值,因为原始数量是数量的最大值。范围:0 - n | ||
| OriginalQuantity | 整数 | 是 | 原始数量是开票的包装设备初始大小(数量)。原始数量是数量的最大值。范围:0 - n | ||
| BatchId | 字符串 | 是 | 一个或多个包装设备的部件批次的唯一标识。范围:0至256个标志 | ||
| ExpiryDate | 字符串 | 是 | 组件到期日期(该日期以UTC时间传输)。 | ||
| MsdOpenDate | 字符串 | 是 | MSD打开日期(该日期以UTC时间传输)。备注:如果MsdOpenDate设置为1.1.1900 UTC或在此之前的时间,包装设备的MSD时间将不会增加。此状态也称为“已关闭”。如果包装设备的MSD级别不等于1(级别1:Unlimited),则MsdOpenDate日期将被设置为当前时间戳。此状态则称为“已打开”。如果您想计算包装设备何时被视为到期(MSD到期日),公式如下:MSD到期日描述:无限制:如果MSDLevel为1(无限制),则为MsdOpenDate + MSDLevel的持续时间;如果MSDLevel不为1,请参阅文档 | ||
| MsdLevel | 整数 | 是 | 1...8 | JEDEC湿度敏感度级别1-6。1:级别1:无限制 - 可以无限制装配组件(最高30°C/相对湿度85%)2级别2:1年 - 可以在包装设备打开日期后的1年内装配组件(最高30°C/相对湿度85%)3级别2A:4周 - 可以在包装设备打开日期后的4周内装配组件(最高30°C/相对湿度85%)4级别3:168小时 - 可以在包装设备打开日期后的168小时内装配组件(最高30°C/相对湿度85%)级别5 4:72小时 - 可以在包装设备打开日期后的72小时内装配组件(最高30°C/相对湿度85%)级别6 5:48小时 - 可以在包装设备打开日期后的48小时内装配组件(最高30°C/相对湿度85%)7级别5A:24小时 - 可以在包装设备打开日期后的24小时内装配组件(最高30°C/相对湿度85%)级别8 6:标签上的时间 - 时间存储在卷轴上的附加标签上。可以在包装设备打开日期后的该标签上定义的时间段内装配组件(最高30°C/相对湿度85%)。设置中心8.1版及更高版本支持MSD级别6。但是,由于难以读取标签上的时间,设置中心将对所有具有MSD级别6的卷轴统一使用一个可配置的允许打开时间。默认值为4小时。可以在“设置中心域配置”对话框中更改该值。该值还与其他域设置一起存储在OIB工厂布局中,以便其他应用程序能够读取该值。设置键为“SetupCenter.AllowedOpenTimeForMsdLevel6”。 | |
| ConsumptionDate | 字符串 | 是 | 这是设置中心执行的消耗操作的时间戳。当填充级别设置为0时,包装设备不一定会被消耗。系统为可追溯性数据保留了一个灰色区域。这意味着即使将填充级别设置为零,包装设备也会保持活动状态。当灰色区域结束时,包装设备将被设置为“已消耗”。如果未消耗,则该值将为9999.12.31 23:59:59(世界时间)。仅当事件从设置中心发出时,才会设置该数据。无法通过接口设置此属性。只能为设置中心3.3版及更高版本设置该值 |
此命令还支持定义以下参数:UID ComponentBarcode Manufacturer ManufacturerDate Supplier Comment Extra1 Extra2 Extra3 SplicedPackagingUnit LockInfos LastProductionDate BatchPackagingUnit GreyZone AdditionalPartInformation ManufacturePartNumber OrderingCode ManufactureLocation RevisionLevel PurchaseOrderNumber ShippingNoteNumber Batch2 SupplierData Serial RoHS BrightnessClass Extra4 Extra5 DateCode ComponentBarcodeFragment CreateDate ReorderCount. 通过在extraParameters输入上传递一个对象,可以很方便地在newPackagingUnitDataRequestResult任务上使用此扩展功能。 例如,如果将对象{ "Manufacturer" : "DoStuff Corp" }传递到newPackagingUnitDataRequestResult任务的extraParameters输入,则系统将使用DoStuff Corp作为Manufacturer条目创建包装设备。
作为JSON对象回复SetupCenter的NewPackagingUnitDataRequest()示例:
json { "ResultState": 1, "PackagingUnit": { "UID": "0201R", "ComponentName": "0201R", "ComponentBarcode": "0201R", "Quantity": 1000, "OriginalQuantity": 1500, "Manufacturer": "DoStuff Corp", "ManufacturerDate": "1900-01-01T00:00:00Z", "ExpiryDate": "2022-01-01T11:30:00", "Supplier": "", "BatchId": "batchId", "MsdLevel": 2, "Comment": "", "Extra1": "", "Extra2": "", "Extra3": "", "SplicedPackagingUnit": null, "MsdOpenDate": "2021-01-01T11:30:00", "LockInfos": [], "LastProductionDate": "1900-01-01T00:00:00Z", "ConsumptionDate": "2021-01-01T11:30:00", "BatchPackagingUnit": null, "GreyZone": 0, "AdditionalPartInformation": "", "ManufacturePartNumber": "", "OrderingCode": "", "ManufactureLocation": "", "RevisionLevel": "", "PurchaseOrderNumber": "", "ShippingNoteNumber": "", "Batch2": "", "SupplierData": "", "Serial": "", "RoHS": 0, "BrightnessClass": "", "Extra4": "", "Extra5": "", "DateCode": "", "ComponentBarcodeFragment": null, "CreateDate": "1900-01-01T00:00:00Z", "ReorderCount": 0 }, "Messages": [ { "Message": "externalControlResultMessage" } ] }
PackagingUnit.Command.PackagingUnitControlStatusExtendedRequestReply#
此命令用于发送对PackagingUnit.Event.PackagingUnitControlStatusExtendedRequest事件的回复,需要以下参数:
| 命令参数名称 | 类型 | 必填 | 可能的值 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Internal.ReplyId | 字符串 | 是 | 此命令应回复的请求的ID | ||
| ExternalControlResultMessage | 字符串 | 是 | 描述操作失败原因的消息 | ||
| ResultState | 整数 | 是 | 0,1,2 | 返回的ExternalControlResult的结果状态。值描述:0 位置:包装设备数据的结果未知;1:OK:已成功处理包装设备数据;2:NotOk:应清除包装设备数据的验证状态。返回ResultState = 2时,将向包装设备数据添加称为LockInfo(Source=9,Reason=28)的内部锁。 |
作为JSON对象回复SetupCenter的PackagingUnitControlStatusExtendedRequestReply()示例:
json { "ResultState": 1, "PackagingUnit": { "UID": "0201R", "ComponentName": "0201R", "ComponentBarcode": "0201R", "Quantity": 1000, "OriginalQuantity": 1500, "Manufacturer": "", "ManufacturerDate": "1900-01-01T00:00:00Z", "ExpiryDate": "2022-01-01T11:30:00Z", "Supplier": "", "BatchId": "batchId", "MsdLevel": 2, "Comment": "", "Extra1": "", "Extra2": "", "Extra3": "", "SplicedPackagingUnit": null, "MsdOpenDate": "2021-01-01T11:30:00Z", "LockInfos": [], "LastProductionDate": "1900-01-01T00:00:00Z", "ConsumptionDate": "9999-12-31T23:59:59Z", "BatchPackagingUnit": null, "GreyZone": 0, "AdditionalPartInformation": "", "ManufacturePartNumber": "", "OrderingCode": "", "ManufactureLocation": "", "RevisionLevel": "", "PurchaseOrderNumber": "", "ShippingNoteNumber": "", "Batch2": "", "SupplierData": "", "Serial": "", "RoHS": 0, "BrightnessClass": "", "Extra4": "", "Extra5": "", "DateCode": "", "ComponentBarcodeFragment": null, "CreateDate": "1900-01-01T00:00:00Z", "ReorderCount": 0 }, "Messages": [ { "Message": "Hello Hello" } ] }
驱动程序扩展#
此异常流程驱动程序提供了一组扩展,允许自定义执行独立于关联的驱动程序定义的操作。这意味着您可以使用自定义获取/设置节点值,而无需描述它们。
这在访问共享的设备数据或者由于过于复杂而无法使用常规机制访问的设备数据时特别有用。在需要访问命名约定可能因设备而异的数据时也很有用。 要使用这些扩展,您可以实施自己的任务,也可以使用提供的任务
Send Notification to Driver和Subscribe in Driver。
对象#
对象是作为参数传递或作为结果值返回的结构。
RegisterHandler#
| 名称 | 类型 | 描述 |
|---|---|---|
| 类型 | 字符串 | 要注册通知的事件的ID。示例:BoardGateKeeper.Event.BoardRequest, Monitoring.Event.StationEvent |
UnregisterHandler#
| 名称 | 类型 | 描述 |
|---|---|---|
| 类型 | 字符串 | 要注销通知的事件的ID。示例:BoardGateKeeper.Event.BoardRequest, Monitoring.Event.StationEvent |
ExecuteCommand#
| 名称 | 类型 | 描述 |
|---|---|---|
| commandId | 字符串 | 要执行的命令的ID(发送到设备)。示例: BoardGateKeeper.Command.BoardRequestReply |
| parameters | JSON对象 | 参数名称和值。 |
OibEventOccurrence#
| 名称 | 类型 | 描述 |
|---|---|---|
| messageId | 字符串 | 消息的ID(返回值命令可能需要) |
| eventId | 字符串 | 发生的事件的ID |
| values | JSON对象 | 事件属性的名称和值。 |
方法#
注册事件通知#
通知异常流程驱动程序在特定事件发生时引发该事件。
void connect.iot.driver.oib.registerHandler(data: RegisterHandler)
注意:事件将发布到侦听器
connect.iot.driver.oib.并附加所注册事件的名称。示例:connect.iot.driver.oib.BoardGateKeeper.Event.BoardRequest
示例#
通知 connect.iot.driver.oib.registerHandler
注销事件通知#
通知异常流程驱动程序在发生特定事件时停止引发事件。
void connect.iot.driver.oib.unregisterHandler(data: UnregisterHandler)
示例#
通知 connect.iot.driver.oib.unregisterHandler
执行命令#
执行自定义命令。
any connect.iot.driver.oib.executeCommand(data: ExecuteCommand)
示例#
SendRequest connect.iot.driver.oib.executeCommand
{
"commandId": "BoardGateKeeper.Command.BoardRequestReply",
"parameters": {
"Internal.ReplyId": "aaabbbccc",
"RequestResult": "Confirmed",
"Reason": "",
"BoardPath": "",
"BoardSide": "Undefined",
"OverridingBarcode": ""
}
}
回复
true
事件#
connect.iot.driver.oib.*#
只有在先注册事件后,才会引发事件。事件的内容类型为OibEventOccurrence,其中相关的值将因触发的事件而异。
触发的事件的全名将附加先前注册的事件的全名。
示例:
{
"requestId": "aaabbbccc",
"eventId": "BoardGateKeeper.Event.BoardRequest",
"values": {
"BoardGateKeeper.Property.Line.Name": "OIB Training\\Line 1",
"BoardGateKeeper.Property.Station.Name": "Station 1 - TX1",
"BoardGateKeeper.Property.Board.Barcode": "1234567890",
"BoardGateKeeper.Property.Board.BoardTime": 1554302541320,
"BoardGateKeeper.Property.Position.BcrSide": "Unknown",
"BoardGateKeeper.Property.Position.Lane": "Left",
"BoardGateKeeper.Property.Position.Origin": "Front",
"BoardGateKeeper.Property.Position.SubConveyor": "None"
}
}