這篇部落格文章最初發表於 cimetrix.com
引言
本部落格說明了一種方法,讓Cimetrix® CIMControlFramework (CCF)開發人員能夠在原始碼中動態產生 ECV(設備常數變數),作為將其納入預設設定檔之外的一種便捷且有效的替代方案。
在為設備實作 GEM 介面時,通常需要定義設備常數變數(ECV)。若 GEM 介面是基於 CCF 的設備控制系統的一部分,您通常會在 Equipment.epj 檔案中定義 ECV。然而,在某些情況下,採用此方法註冊 ECV 可能會耗費大量心力。其中包括:
- 當您需要註冊數百甚至數千輛電動車時;
- 當您需要根據設備實例的特定配置,動態註冊 ECV 時;
- 當您希望在不修改 EPJ 檔案的情況下註冊 ECV 時。
在這些情況下,透過從原始碼動態產生 ECV,便能輕鬆解決這些挑戰。
本文其餘部分將簡要說明如何達成此目標,以及如何變更與監控 ECV 的數值。
如何透過程式碼產生 ECV
在 Supervisor 的 Run() 方法中呼叫 ecs.Start() 之後,以下程式碼範例會產生一個 ECV。
在此您最需留意的是,ecid 和 ECV 的名稱不應與其他 VID 重複。

接著,您便可在「操作介面」的「設備常數」畫面中看到新產生的 ECV。
如何變更 ECV 的數值
可透過 FactoryAutomationServer 並使用以下程式碼來更新 ECV 的數值。

接著您將會看到一則訊息,指出 ECV 的數值已變更。

如何偵測 ECV 的值變化
若要偵測 ECV 值的變更,您可以依照以下程式碼範例所示,註冊 ValueChangedHandler 來接收回呼。

總結如下:
- 您可以透過呼叫 CIMConnect 的 CreateVariable 方法,動態產生一個 ECV;
- 您可以透過呼叫 FactoryAutomationServer 的 SetEquipmentConstants 方法來變更 ECV 的數值;
- 您可以透過呼叫 CIMConnect 的 RegisterValueChangeHandler 來偵測 ECV 值的變更。
對於需要動態產生 ECV 的 CCF 開發人員而言,這些都是實用的解決方案。