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 |
定義軸值的來源,例如,位置:
|
VAR_OUTPUT | |||
B | InOperation | BOOL | 檢查命令的軌道是否啟用。 |
E | Busy | BOOL | 功能塊尚未完成且預期將有新的輸出值。 |
B | Error | BOOL | 功能塊中出現錯誤的訊號。 |
E | ErrorID | MC_Error | 錯誤識別。 |
|
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:此參數可避免軸在切換點附近及實際位置在切換位置附近抖動時,輸出不斷切換的現象。Hysteresis 是 MC_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/OffCompensation 與 Hysteresis 時的輸出行為。
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 |
正向:輸出行為