MC_DigitalCamSwitch

功能塊 MC_DigitalCamSwitch
使用軸位置來控制觸發數位輸出的開關,當軸達到特定的位置,開關即開啟或關閉,而開關可由軸的向前或向後移動控制。
VAR_IN_OUT
B AxisIn AXIS_REF 軸的參考。
B SwitchesIn ARRAY [0..255] OF MC_CAMSWITCH_REF 控制開關動作。軌道數量必須依照順序排列。
E OutputsIn ARRAY [0..31] OF MC_OUTPUT_REF 選擇對應軌道所控制的數位輸出。
E TracksIn ARRAY [0..31] OF MC_TRACK_REF 將補償時間和遲滯新增到軌道上的開關,TrackNumber 定義在 Switches 中。
VAR_INPUT
B Enable BOOL

啟用軌道,若值為 FALSE,所有軌道停用;若為 TRUE,請見 EnableMask 以檢查指定軌道是否啟動。

E EnableMask DWORD 啟用不同軌道。此參數為 BOOL 32 位元,當 BOOL 值設為一時將啟動軌道陣列中的相應軌道。
E ValueSource MC_Source

定義軸值的來源,例如,位置:

  • mcCommandedValue、mcSetValue-同步設定值。建議使用此設定。
  • mcActualValue-同步實際值。此設定可能不穩定。
VAR_OUTPUT
B InOperation BOOL 檢查命令的軌道是否啟用。
E Busy BOOL 功能塊尚未完成且預期將有新的輸出值。
B Error BOOL 功能塊中出現錯誤的訊號。
E ErrorID MC_Error 錯誤識別。
  • MC_CAMSWITCH_REF 為供應商特定的結構,用於定義數位凸輪的開關。
  • MC_OUTPUT_REF 為供應商特定的結構,連接至(實體)輸出。
  • MC_TRACK_REF 為供應商特定的結構,包含軌道屬性,例如:每個軌道的補償時間(軌道是與一個輸出相關的一組開關),亦可包含輸出的引用。
  • 此功能有時被稱作 PLS-階段 (Phase)、位置 (Position) 或可編程極限開關 (Programmable Limit Switch)。

 

  MC_DigitalCamSwitch  
AXIS_REF   AxisIn   Axis   AXIS_REF
ARRAY [0..255] OF MC_CAMSWITCH_REF   SwitchesIn   Switches   ARRAY [0..255] OF MC_CAMSWITCH_REF
ARRAY [0..31] OF MC_OUTPUT_REF   OutputsIn   Outputs   ARRAY [0..31] OF MC_OUTPUT_REF
ARRAY [0..31] OF MC_TRACK_REF   TracksIn   Tracks   ARRAY [0..31] OF MC_TRACK_REF
BOOL   Enable   InOperation   BOOL
DWORD   EnableMask   Busy   BOOL
MC_Source   ValueSource   Error   BOOL
        ErrorID   MC_Error
             

 

MC_CAMSWITCH_REF 結構內的元素

B/E 參數 類型 說明
B TrackNumber INT 軌道索引,以零為起點。
B FirstOnPosition [使用者單位] LREAL 開關開啟的位置。
B LastOnPosition [使用者單位] LREAL 開關關閉的位置。
E AxisDirection INT

軸方向。預設值為零。若選擇一或二,開關僅在當軸在指定方向移動時有效。

正負向:0;正方向:1;負方向:2。

E CamSwitchMode INT

凸輪開關由軸的位置或時間控制,預設值為零。若選擇位置 (Position),需設定 FirstOnPosition LastOnPosition;若選擇時間 (Time),需設定 FirstOnPosition Duration

位置 (Position):0,時間 (Time):1。

E Duration TIME 開關開啟的時間,此功能在 CamSwitchMode 為 Time 時可用,每秒為一單位。

 

MC_TRACK_REF 結構內的元素

B/E 參數 類型 說明
E OnCompensation TIME 在每個軌道的切換點之前或後打開開關(上升邊緣)的時間長度。若值為正,則開啟將延遲;若值為負,則將提前開啟。
E OffCompensation TIME 在每個軌道的切換點之前或後關閉開關(下降邊緣)的時間長度。若值為正,則關閉將延遲;若值為負,則將提前關閉。
E Hysteresis [unit] LREAL 在軸離開該區域之前,從開關未打開或未關閉的切換點(正向和負向)的距離。此可避免在開關點附近頻繁切換。

 

此凸輪定義具有起點與終點,如此使用者可定義每一個凸輪的 FirstOnPosition LastOnPosition(或時間),此功能或功能塊類似機械凸輪,但具有額外的優點,您可為輸出設置一個特定時間,並設定時間補償和遲滯。

CamSwitchMode:可為位置或時間。

Duration:時長,凸輪開啟的輸出時長,時間補償 (OnCompensation OffCompensation) 可為正或負值,負值表示輸出在開關位置到達前即變更。

Hysteresis:此參數可避免軸在切換點附近及實際位置在切換位置附近抖動時,輸出不斷切換的現象。HysteresisMC_TRACK_REF 的一部分,表示每個軌道都可設定不同的遲滯。

 

MC_CAMSWITCH_REF 的範例

參數 型別 開關 01 開關 02 開關 03 開關 04 ... 開關 N
TrackNumber INTEGER 1 1 1 2    
FirstOnPosition [單位] LREAL 2000 2500 4000 3000    
LastOnPosition [單位] LREAL 3000 3000 6000 --    
AxisDirection INTEGER 1=正向 2=負向 0=雙向 0=雙向    
CamSwitchMode INTEGER 0=位置 0=位置 0=位置 1=時間    
Duration LREAL -- -- -- 1.35 秒    

 

MC_OUTPUT_REF 的範例

參數 MC_OUTPUT_REF[0] MC_OUTPUT_REF[1] MC_OUTPUT_REF[2] - - - MC_OUTPUT_REF[31]
IsAxis FALSE FALSE FALSE - - - FALSE
Index 0 0 0 - - - 0
BitOffset 0 1 2 - - - 31

 

I/O 模組的範例

 

下圖使用了上例 MC_CAMSWITCH_REF 的值,不使用 On/OffCompensation Hysteresis,此為當軸持續朝正向移動時的輸出行為。

 

MC_DigitalCamSwitch – 正向

 

正向:輸出行為

TrackNumber 1(開關 01, 02, 03)匹配到 McOutput[1];TrackNumber 2(開關 04)匹配到 McOutput[2]。當開關 01開關 02開關 03 被觸發時,第一個 I/O 模組(索引 0)上的第二個輸出(輸出 1)即被開啟。當開關 04 被觸發時,第三個輸出(輸出 2)即被開啟。

 

On/Off 補償的範例

以下範例使用 OnCompensation -125ms 與 OffCompensation +250ms。

 

下圖為當軸持續朝負向移動,且不使用 On/OffCompensationHysteresis 時的輸出行為。

 

MC_DigitalCamSwitch – 負向

負向:輸出行為

 

EnableMask

EnableMask 是一個含有 32 位元的 DWORD 參數,每個位元都是一個 bool 值,可控制輸出,輸出可透過將相應的位元設為 TRUE 或 FALSE 來啟用或停用。例如位元 0 控制 McOutput[0];位元 1 控制 McOutput[1],若位元 0 和位元 1 都設為 TRUE,其輸出即被啟用,意即當相對應的開關被觸發時,其輸出即被開啟。若位元 0 和位元 1 都設為 FALSE,其輸出即被停用,即使相對應的開關被觸發時,其輸出也不會被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31
TRUE/FALSE TRUE/FALSE TRUE/FALSE TRUE/FALSE - - - - TRUE/FALSE

 

MC_OUTPUT_REF 的範例

參數 MC_OUTPUT_REF[0] MC_OUTPUT_REF[1] MC_OUTPUT_REF[2] - - - MC_OUTPUT_REF[31]
IsAxis FALSE FALSE FALSE - - - FALSE
Index 0 0 0 - - - 0
BitOffset 0 1 2 - - - 31

 

EnableMask 位元 - 範例 1

位元 0、1、2 為 TRUE,意即輸出 0、1、2 被啟用,當相對應的開關被觸發時,輸出即被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31
TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE

 

正向:輸出行為

 

EnableMask 位元 - 範例 2

位元 0、2 為 TRUE,意即輸出 0、2 被啟用,當相對應的開關被觸發時,僅有這 2 個輸出會被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31
TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE

 

正向:輸出行為

 

EnableMask 位元 - 範例 3

所有位元均為 FALSE,意即所有輸出均停用,即使相對應的開關被觸發時,輸出也不會被開啟。

位元 位元 0 位元 1 位元 2 位元 3 - - - - 位元 31

FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

 

正向:輸出行為