cab 與智慧工廠:
藉由 OPC 統一架構進行標識的連線作業
需求
在工業領域,有越來越多的生產及物流環境以數位製造管理系統為基礎。機器與人或其他機器進行資訊交換,自主處理與製造相關的資料,提供或轉發資料。個性化、可擴縮性、精實、製造過程的可追溯性以及可靠的設備及零組件是關鍵需求。
作為管理系統基礎的大多數應用程式或服務皆由網路代管。來自感測器、設備或軟體的資料被傳輸到雲端主機,並可以在條碼印表機或貼標系統、機器人及 IT 系統之間輕易地進行交換 - 前提是它們都說同樣的語言且可以互相理解。
協定
開放平台通訊統一架構 ( 縮寫為 OPC UA ) 為工業環境中由不同製造商生產的機器及零組件之間的資訊交換建立了基礎。在 OPC 統一架構中,各種不同的規格被轉換成一致性的資料模型,從而建立了新的傳輸介面標準。OPC 統一架構負責觸發工業製造中的網路,這部份與我們對辦公室中的網路及 USB 傳輸介面的認知相同。
連接 cab 的設備
您將一家工廠投入運作?或是規劃將您的原料倉庫依據工業 4.0 的建議與網路連線?如果網路的 IP 位址已就緒,OPC 統一架構可以作為機器設備間進行資訊取用的一致性框架。目前新一代的 cab 條碼印表機及快速貼標機 IXOR 已完成 OPC 統一架構的整合,適用於工廠內的零組件、產品或包裝標識。這些設備能夠跟上層控制單元進行協作。
重點一覽
- 依需求生產
- 製程自動化
- 設備配置
- 設備的遠端控制
- 設備監控
- 互操作性
- 預測及分析
- 可追溯性
- 庫存最佳化
- 距離縮短
- 透明性
事件驅動標識
按下按鍵查詢條碼印表機進行中的工作已經是過去式了。現今的智慧設備會自動顯示保養的需求、列印工作使用的耗材或是碳帶即將耗盡必須更換的訊息。可以遠端安裝標籤,也可以讀取標籤特性及交換列印用的可變資料。即時顯示操作參數,例如印字頭目前的運作性能及溫度,或是待列印的標籤數量。資訊由條碼印表機傳送至工廠的控制系統,控制系統負責辨識及轉譯資訊,並會直接採取適當的處理措施。
作為一個功能卓越的控制系統,OPC 統一架構具備將軟體控制的生產資料、警示、事件及資料歷史集中在同一處的優勢。它整合並統一了不同的位址空間以及供存取的傳輸介面。
OPC 統一架構搭配 cab 條碼印表機
cab 設備*目前支援的 OPC 統一架構功能如下:
- 協定疊
OPC 統一架構二進位制協定 - 加密
無
Basic128Rsa15
Basic256Sha256 - 驗證
匿名
使用者名稱 / 密碼
儘管通過完全驗證的使用者對現有的功能擁有完整的權限,匿名使用者對條碼印表機的節點只有唯讀的權限,並且無法呼叫方法 ( 即使該方法不會變更條碼印表機的配置或狀態 )。
- OPC 統一架構服務
SecureChannel Service Set
Session Service Set
Attribute Service Set:屬性、事件、非歷史資料的讀取 / 輸入
Method Service Set
MonitoredItem Service Set
Subscription Service Set
View Service Set
OPC 統一架構的伺服器端可在設定 / 傳輸介面 / 網路服務啟用。
* 條碼印表機 SQUIX, MACH 4S, EOS2, EOS5, HERMES Q, PX Q, 快速貼標機 IXOR
資訊模型
cab 條碼印表機實踐了 OPC 統一架構的的設備整合 ( DI ) 模式。有兩個命名空間可供使用:
http://cab.de/printer 用於監控及管理列印工作
http://cab.de/printer/setup 用於設備設定
頁面下方列出的功能符合現況,有更多的功能持續進行開發中。
命名空間 http://cab.de/Printer
此命名空間可存取條碼印表機的目前狀態,包括 I/O 狀態、條碼印表機型號資訊或任何關於目前作業狀態的資訊。
節點名稱 | 節點類別 | 描述 |
---|---|---|
Printer | 物件 | 存取條碼印表機資訊模型的主入口點 |
FPGARevision, Manufacturer, Model, SerialNumber, SoftwareRevision, HardwareRevision |
變數 | 提供硬體及軟體的版本資訊 |
Bitmap | 方法 | 最後一張列印的標籤可存取為 .png 格式 |
Screen | 方法 | 提供 .png 格式的條碼印表機螢幕擷取畫面 |
I/O | 物件 | 提供透過條碼印表機 I/O 介面進行存取的軟體;透過 IOStatusChangeEvent 產生 |
LBLWARN | 變數 | 預先警示標籤用完 |
RIBERR | 變數 | 碳帶耗盡 |
RIBWARN | 變數 | 預先警示碳帶用完 |
SetInput | 方法 | 設定 I/O 介面的輸入訊號:PAUSE, LBLROT |
LabelBitmap | 方法 | 將目前的標籤列印內容轉成 .png 格式。不同於 bitmap 方法,標籤方向及尺寸在此會列入考量。 |
ENDPOS | 變數 | 貼標手臂位於貼標位置 |
ERROR | 變數 | 錯誤 |
FEEDON | 變數 | 正在進紙 |
HOMEPOS | 變數 | 貼標手臂位於吸標位置 |
JOBRDY | 變數 | 列印工作已就緒 |
MEDERR | 變數 | 標籤或碳帶耗盡 |
PEELPOS | 變數 | 標籤就剝離位置 |
READY | 變數 | 條碼印表機已就緒 |
I/O Status | 變數 | I/O 介面的輸出狀態,由下列變數的數值組合定義: RIBWARN 1 HOMEPOS 8 ERROR 64 RIBERR 512 ENDPOS 2 PEELPOS 16 READY 128 MEDERR 1024 FEEDON 4 JOBRDY 32 LBLWARN 256 ( 部分僅限於 HERMES Q ) |
TriggerInput | 方法 | 觸發 I/O 介面的輸入訊號: FSTLBL, REPRINT, START, LBLREM, JOBDEL, RSTERR, STOP, LBLFEED |
Interpreter | 物件 | 工作狀態的資訊;透過 ErrorEvent, JobInfoEvent 以及 JobFinishEvent 產生 |
JPhase | 變數 | JScript 直譯器的目前狀態 |
QueryObject | 方法 | 查詢現有的 JScript 物件 |
Current Label | 物件 | 直譯器處理列印工作時可用 |
Current Id | 變數 | 目前列印工作的專屬工作 ID |
Current Name | 變數 | 工作名稱;由 JScript 的j 指令提供目前列印工作的名稱 |
Current Content Fields | 物件 | 目前標籤動態欄位的根節點。欄位內容可以藉由設定相關節點的數值作替換。 |
abc Status | 變數 | abc basic 直譯器的狀態: one of Idle, Compiling, Running, RuntimeError, SyntaxError |
Active | 變數 | 條碼印表機作業中,例如列印檔案的轉譯或列印 |
Available Space | 變數 | 列印佇列可用的記憶體空間 ( 以百分比為單位 ) |
ESCs | 變數 | 字串 ( 包括 JScript's ESCs 指令的結果 ) |
ESCz | 變數 | 字串 ( 包括 JScript's ESCz 指令的結果 ) |
Error | 變數 | 提供詳細的錯誤資訊,例如 ESCs 指令的相關資訊; 數值必須轉譯為 ASCII 字元,例如 45 == '-' No Error |
Labels To Print | 變數 | 目前列印工作列印的標籤數量 |
Last Job | 變數 | 最近一次處理的列印工作名稱;參見 JScript 指令 j |
Online | 變數 | 條碼印表機為 ONLINE 狀態,也就是圖形使用者介面的顯示內容為首頁 |
Paused | 變數 | 條碼印表機為 PAUSE 狀態 |
CancelJob | 方法 | 允許取消目前列印工作 |
LoadLabel | 方法 | 允許從條碼印表機上傳標籤檔案 |
PrintData | 方法 | 允許直接傳送 JScript 列印資料至條碼印表機 |
TotalCancel | 方法 | 允許中止所有列印工作 |
Ribbon | 物件 | |
Ribbon RibbonDiameter | 變數 | 偵測到的碳帶直徑 ( 以毫米為單位 ) |
Ribbon RibbonLow | 變數 | 根據條碼印表機的選單設定判斷剩餘的碳帶是否不足 |
Statistics | 物件 | |
Statistics Labels | 變數 | 標籤的列印數量 |
Statistics Operating Time | 變數 | 條碼印表機的正常運作時間 ( 以分為單位 ) |
Statistics Thermal Direct | 變數 | 以熱感印列印的標籤紙長度 ( 以毫米為單位 ) |
Statistics Thermal Transfer | 變數 | 以熱轉印列印的標籤紙長度 ( 以毫米為單位 ) |
Paper | ||
Paper Diameter | 變數 | 計算送紙器內剩餘標籤的直徑 ( 以毫米為單位,僅限 HERMES Q ) |
Paper Low | 變數 | 根據條碼印表機的選單設定判斷剩餘的標籤是否不足 ( 僅限 HERMES Q ) |
SubDevices | 物件 | |
Applicator* | 物件 | |
Barcode Verifier* | 物件 | |
Cutter* | 物件 | |
Cutter* Can Perforate | 變數 | 搭配虛線裁刀 |
Cutter* Has Stacking Box | 變數 | 搭配的裁刀附有裁紙收集盒 |
Demand Sensor* | 物件 | |
Sensor Status | 變數 | 感測器的目前狀態 |
Rewinder* | 物件 | |
Ribbon Saver* | 物件 | |
Ribbon Sync | 變數 | 碳帶節省裝置已完成初始化 |
Ribbon Head State | 變數 | 印字頭的目前位置 ( Printing 或 Saving ) |
Ribbon Synchronize | 方法 | 發布碳帶節省裝置的同步指令;僅與服務工作相關 |
Ribbon ToggleHead | 方法 | 切換印字頭的位置;僅與服務工作相關 |
TPH 1 | 物件 | 印字頭資訊 |
TPH 1 Model | 變數 | 印字頭的型號資訊 |
TPH 1 SoftwareRevision | 變數 | |
TPH 1 Open | 變數 | 開啟狀態 |
TPH 1 SerialNumber | 變數 | 印字頭序號 |
TPH 1 Temperature | 變數 | 印字頭的目前溫度 ( 攝氏 ) |
TPH 1 Statistics | 物件 | 印字頭的統計資訊 |
Storage | 物件 | |
FileDelete | 方法 | 刪除條碼印表機內部的一個檔案 |
FileDownload | 方法 | 將條碼印表機的一個檔案下載至用戶端 |
FileList | 方法 | 列出條碼印表機內部的所有檔案 |
FileUpload | 方法 | 將用戶端的一個檔案下載至條碼印表機 |
FontList | 方法 | 查詢條碼印表機的可用字型 |
IFFS | 物件 | 內部快閃記憶體檔案系統 ( IFFS ) |
IFFS IFFS Available Space | 變數 | 檔案系統的可用空間 ( KB ) |
IFFS IFFS Capacity | 變數 | 檔案系統的容量 ( KB ) |
SD Card | 物件 | |
SD Card SD Card Attached | 變數 | 指示是否附加檔案系統 |
USB Memory | 物件 |
* 可選節點,僅在附加服務金鑰時可用
重要提示:依據 OPC 統一架構的設備整合規格,必須始終在設備的 MethodSet 中呼叫方法 ( 即使方法在指定的機制上與個別的 FunctionalGroup 連結較佳 )。透過 FunctionalGroup 呼叫始終會出現錯誤。
命名空間 http://cab.de/Printer/Setup
此命名空間對條碼印表機的配置樹擁有完整的權限,該配置樹的建模方式與圖形使用者介面的設定級別相同。樹中組態參數的實際位置可能會有變動,因此透過它的瀏覽路徑呼叫節點是不安全的。相反地,配置節點可以透過它們唯一的字串識別碼直接存取。
節點名稱 | 節點類別 | 描述 |
---|---|---|
Setup | 物件 | Printer 節點的此一子節點為存取條碼印表機設定的主入口點;透過 SetupValueChangeEvent 以及 SetupVisibilityChangeEvent 產生 |
SetOpcUaClientUrl | 方法 | 儲存 OPC 統一架構的伺服器位址 ( 用於單機模式 ) |
ExportSettings | 方法 | 將條碼印表機設定匯出為 .xml 格式 |
ImportSettings | 方法 | 將條碼印表機設定匯入為 .xml 格式 |
ImportCertificateTLS | 方法 | 匯入 TLS 認證 |
ResetSettings | 方法 | 恢復原廠設定 |
ResetPasswords | 方法 | 恢復原廠設定密碼 |
< SetupFolder> |
物件 | 包括設定值 |
< SetupValue> |
物件 | 可編輯的設定值 |
IsActive | 變數 | 該組態參數目前可在圖形使用者介面中存取 |
以下為可用的設定值類型:
- 布林值
- 列舉
- 字串值 ( 包括欄位 )
MinLen
MaxLen
Regex ( 一個可選的正規表達式,用於屬性值的輸入操作 ) - 數值 ( 包括欄位 )
Range
Step
ToggleInt ( 可選,為顯示用途 )
Unit ( 可選,為顯示用途 ) - 密碼 ( 包括最小及最大的長度屬性,如同字串值 )
重要提示:依據 OPC 統一架構的設備整合規格,必須始終在設備的 MethodSet 中呼叫方法 ( 即使方法在指定的機制上與個別的 FunctionalGroup 連結較佳 )。透過 FunctionalGroup 呼叫始終會出現錯誤。
事件
在 OPC 統一架構的標準事件以外,cab 條碼印表機提供下列的補充事件。
事件名稱 | 類型 | 描述 |
---|---|---|
ErrorEvent | 事件在條碼印表機出現錯誤時傳遞;透過節點直譯器產生 | |
Message | LocalizedText | 錯誤訊息 |
Detail1 | LocalizedText | 詳細錯誤資訊 |
Detail2 | LocalizedText | 更多的詳細錯誤資訊 |
JobInfoEvent | 事件在標籤列印時傳遞;透過節點直譯器產生 | |
LabelNo | Int32 | 進行的列印工作中的標籤數量 |
JobSize | Int32 | 進行的列印工作中列印的標籤數量 |
IsTestPrint | 布林 | 顯示目前列印的標籤為測試列印 |
JobFinishEvent | 事件在列印工作完成且條碼印表機返回閒置狀態時傳遞;透過節點直譯器產生 | |
沒有其他欄位 | ||
SetupValueChangeEvent | 事件在設定值變更時傳遞;透過節點設定產生 | |
SourceName | 字串 | 受影響的組態參數的識別碼 |
SetupVisibilityChangeEvent | 事件在設定值變更其可見性狀態時傳遞,通常是基於相互依賴;透過節點設定產生 | |
SourceName | 字串 | 受影響的組態參數的識別碼 |
IOStatusChangeEvent | 事件在設備的 I/O 狀態變更時傳遞;透過節點 I/O 產生 | |
Status | UInt32 | Printer->IO->Status 描述的條碼印表機最新狀態 |
限制:OPC 統一架構的堆疊實作目前不支援:
- 在單一訂閱中有不同類型的受監控項目 - 變更通知或事件通知 - 但單一訂閱中有多個相同類型的受監控項目是被允許的
- 受監控項目請求中的 Where 子句
- 警示及條件
條碼印表機內的 OPC 統一架構用戶端支援
使用 JScript 的特殊指令 OPCUA 可讓單機模式的條碼印表機從 OPC 統一架構的伺服器端讀取資料並將其插入標籤配置中:
m m
J
H 75,0
S l1;0,0,25,29,50
E OPCUA;opc.tcp://192.168.200.71:4840
T 20,20,0,3,10;[OPCUA:2:DeviceSet,3:Printer,2:SoftwareRevision]
A 1
為了能夠在多個 OPC 統一架構的伺服器端之間尋址而使用插槽的概念。可以將插槽號加入 OPCUA 的授權,這樣最多可以查詢五個不同的伺服器系統:
m m J H 75,0 S l1;0,0,25,29,50 ;
使用一組使用者名稱及密碼連線E OPCUA-0;opc.tcp://opcuser:opcpass@192.168.200.71:4840 ;
匿名連線E OPCUA-1;opc.tcp://192.168.200.53:4840 T 10,10,0,3,10;SW Rev Drucker 1: [OPCUA-0:2:DeviceSet,3:Printer,2:SoftwareRevision] T 20,20,0,3,10;SW Rev Drucker 2: [OPCUA-1:2:DeviceSet,3:Printer,2:SoftwareRevision] A 1
作為指定瀏覽路徑的替代方案,也可以在 OPCUA 特殊指令中為資料查詢指定節點 ID:
m m
J
H 75,0
S l1;0,0,25,29,50
E OPCUA;opc.tcp://192.168.200.71:4840
T 20,20,0,3,10;[OPCUA:ns=3;i=50723]
T 10,10,0,3,10;[OPCUA:ns=4;s=ID_BACKFEED]
A 1
可支援以下的資料類型:
- 整數
- 浮點數
- 字串, ByteString, XmlElement
- 布林值
- LocalizedText
- DateTime
- Range
- EUInformation
- 列舉
連線資訊不一定必須儲存在標籤,可以改為儲存在條碼印表機的全域配置。OPC 統一架構的函數 SetOpcUaClientUrl 用於此目的。藉由指定需要的插槽及要用的位址,最多可以在此處儲存五種不同的連線資訊。在這種情況下可忽略標籤中的 E 指令。
2021 年 1 月