當(dāng)使用ST語(yǔ)言編寫自鎖、互鎖、連鎖的具體程序時(shí),我們需要定義輸入和輸出變量,并編寫邏輯來(lái)控制這些變量。以下是具體的程序示例:
自鎖ST程序:
假設(shè)我們有一個(gè)啟動(dòng)按鈕 Start_Button 和一個(gè)停止按鈕 Stop_Button,以及一個(gè)輸出 Motor_Run 來(lái)控制電機(jī)。
PROGRAM Main
VAR
Start_Button : BOOL; // 啟動(dòng)按鈕輸入
Stop_Button : BOOL; // 停止按鈕輸入
Motor_Run : BOOL; // 電機(jī)運(yùn)行狀態(tài)輸出
END_VAR
// 初始化
Motor_Run := FALSE;
// 自鎖邏輯
IF Start_Button AND NOT Motor_Run THEN // 如果按下啟動(dòng)按鈕且電機(jī)未運(yùn)行
Motor_Run := TRUE; // 啟動(dòng)電機(jī)
ELSIF Stop_Button THEN // 如果按下停止按鈕
Motor_Run := FALSE; // 停止電機(jī)
END_IF;
自鎖梯形圖程序:

互鎖ST程序:
假設(shè)我們有兩個(gè)輸出 Output1 和 Output2,它們不能同時(shí)被激活。
PROGRAM Main
VAR
Request_Output1 : BOOL; // 請(qǐng)求Output1的輸入
Request_Output2 : BOOL; // 請(qǐng)求Output2的輸入
Output1 : BOOL; // Output1的狀態(tài)輸出
Output2 : BOOL; // Output2的狀態(tài)輸出
END_VAR
// 初始化(雖然在這個(gè)簡(jiǎn)單的示例中不是必需的)
Output1 := FALSE;
Output2 := FALSE;
// 互鎖邏輯
IF Request_Output1 AND NOT Output2 THEN // 如果請(qǐng)求Output1且Output2未激活
Output1 := TRUE;
ELSIF NOT Request_Output1 THEN // 如果不再請(qǐng)求Output1
Output1 := FALSE;
END_IF;
IF Request_Output2 AND NOT Output1 THEN // 如果請(qǐng)求Output2且Output1未激活
Output2 := TRUE;
ELSIF NOT Request_Output2 THEN // 如果不再請(qǐng)求Output2
Output2 := FALSE;
END_IF;
互鎖梯形圖程序:

連鎖ST程序:
PROGRAM Main
VAR
Safety_Door_Closed : BOOL; // 安全門關(guān)閉狀態(tài)輸入
Start_Button : BOOL; // 啟動(dòng)按鈕輸入
Motor_Run : BOOL; // 電機(jī)運(yùn)行狀態(tài)輸出
END_VAR
// 初始化(雖然在這個(gè)簡(jiǎn)單的示例中不是必需的)
Motor_Run := FALSE;
// 連鎖邏輯
IF Safety_Door_Closed AND Start_Button THEN // 如果安全門關(guān)閉且按下啟動(dòng)按鈕
Motor_Run := TRUE; // 啟動(dòng)電機(jī)
ELSIF NOT Safety_Door_Closed OR NOT Start_Button THEN // 如果安全門未關(guān)閉或未按下啟動(dòng)按鈕
Motor_Run := FALSE; // 停止電機(jī)
END_IF;
連鎖梯形圖程序:
