下面給出本項目中與實體裝置硬體相關的全局變量定義,這些變量代表着外部實體裝置到PLC的輸入和輸出,在模闆程式中已經連結到對應的實體裝置模型和人機界面中,通過對這些變量的讀寫即可擷取相應使用者按鈕和傳感器等輸入裝置的狀态,控制電機等執行裝置的運作和停止,後續的軟體開發請統一使用如下變量定義。
首先定義幾個全局資料類型:
(*電梯井接口信号定義*)
tTower_Interface: STRUCT
Sensor_DoorOpened : BOOL;(*傳感器信号訓示轎廂門已打開*)
Sensor_DoorClosed : BOOL;(*傳感器信号訓示轎廂門已關閉*)
Sensor_Floor1Approached : BOOL;(*傳感器信号訓示轎廂已到達對應樓層*)
Sensor_Floor2Approached : BOOL;
Sensor_Floor3Approached : BOOL;
Sensor_Floor4Approached : BOOL;
Sensor_Floor5Approached : BOOL;
Sensor_Floor6Approached : BOOL;
Sensor_Floor7Approached : BOOL;
Signal_Start_DoorMotor_P : BOOL; (*控制信号,上升沿觸發,使轎廂門電機正轉固定的角度,打開轎廂門*)
Signal_Start_DoorMotor_N : BOOL; (*控制信号,上升沿觸發,使轎廂門電機反轉固定的角度,關閉轎廂門*)
Signal_Start_CabinMotor_P : BOOL; (*控制信号,上升沿觸發,使轎廂提升電機正轉,電梯上行*)
Signal_Start_CabinMotor_N : BOOL; (*控制信号,上升沿觸發,使轎廂提升電機反轉,電梯下行*)
Signal_Stop_CabinMotor : BOOL; (*控制信号,上升沿觸發,使轎廂提升電機停止*)
Sensor_Position_Door : UINT; (*轎廂門位置回報*)
Sensor_Position_Cabin : UINT; (*轎廂垂直位置回報*)
END_STRUCT;
(*樓層面闆接口信号定義*)
tFloor_Interface: STRUCT
Key_Up : BOOL;(*向上按鈕*)
Key_Down : BOOL;(*向下按鈕*)
Display_Current_Floor_Left : USINT;(*左電梯目前樓層顯示數位管*)
Display_Current_Floor_Right : USINT;(*右電梯目前樓層顯示數位管*)
Display_Current_Direction_Left : STRING[2];(*左電梯目前運作方向顯示數位管*)
Display_Current_Direction_Right : STRING[2];(*右電梯目前運作方向顯示數位管*)
END_STRUCT;
(*對應樓層的設定狀态*)
tCheckStatus :
(
Checked:=16#3340,
UnChecked:=16#FE10
);
(*轎廂接口信号定義*)
tCabin_Interface: STRUCT
Key_Open : BOOL; (*開門按鈕*)
Key_Close : BOOL; (*關門按鈕*)
Key_Floor1 : BOOL; (*目标樓層按鈕*)
Key_Floor2 : BOOL;
Key_Floor3 : BOOL;
Key_Floor4 : BOOL;
Key_Floor5 : BOOL;
Key_Floor6 : BOOL;
Key_Floor7 : BOOL;
Display_Floor1Selected : tCheckStatus;(*目标樓層被選中訓示燈*)
Display_Floor2Selected : tCheckStatus;
Display_Floor3Selected : tCheckStatus;
Display_Floor4Selected : tCheckStatus;
Display_Floor5Selected : tCheckStatus;
Display_Floor6Selected : tCheckStatus;
Display_Floor7Selected : tCheckStatus;
Display_Current_Floor : USINT; (*目前樓層顯示數位管*)
Display_Current_Direction : STRING[2]; (*目前運作方向顯示數位管*)
END_STRUCT;
然後,基于上述自定義資料類型,定義與實體裝置硬體相關聯的全局變量:
LeftTower:tTower_Interface;(*執行個體化左電梯井接口*)
RightTower:tTower_Interface;(*執行個體化右電梯井接口*)
LeftCabin:tCabin_Interface;(*執行個體化左電梯轎廂接口*)
RightCabin:tCabin_Interface;(*執行個體化右電梯轎廂接口*)
Floor1Panel : tFloor_Interface;(*執行個體化各樓層面闆*)
Floor2Panel : tFloor_Interface;
Floor3Panel : tFloor_Interface;
Floor4Panel : tFloor_Interface;
Floor5Panel : tFloor_Interface;
Floor6Panel : tFloor_Interface;
Floor7Panel : tFloor_Interface;
無論是類型定義還是變量定義都可以采用數組的方式,上述定義中為了便于與人機界面的變量連結沒有使用數組,在具體子產品程式設計時則可以使用數組以簡化代碼。