我先介紹一下正常做專案的步驟,再解釋一下你的疑問。
前期,銷售接到一個潛在專案,瞭解客戶需求(spec),機械工程師給出一些方案,電氣工程師輔助給一些建議。基本上大件,找供應商報價。有的根據經驗,用哪種方案。有的可能需要測試;
銷售根據大件,材料成本,人工成本,潛在風險。有的投標,有的競價。
在專案接下來後,機械根據具體spec,細化方案。第一次評審,第二次評審。最終確定設計細節。
機械根據這些細節,細化3D,沒有問題,細化2D給供應商做加工件。電氣根據前期機械的3D,細化,溝通具體感測器及檢測、氣缸、電機等,出電氣圖紙;
採購(同時電氣工程師寫程式),裝配,除錯。
工廠內部要收,現場除錯,客戶現場驗收,售後服務;
你提問的,用300系列PLC設計一套系統。我這裡只針對程式。平臺為博圖TIA V15。實際上隨著300系列逐步要淘汰,成本已經比1500系列的要高。
因為是新的程式,裡面只有一個OB1。實際上除了OB1,OB100,OB121,OB122等也是可以,有的甚至是必須新增的。
為了便於測試,新增塊FC4060(FC_Motor), FB4061(FB_Motor)以及FB4061的背景塊。並且新建一個資料夾。其中FC在OB1中呼叫。FB在FC中呼叫。
FC為LAD梯形圖,FB為SCL;
新建FB地址如下:
Input:
iRun Bool
iManualMode Bool
iAutoMode Bool
iReset Bool
iControlMode Bool
iInterlockFwd Bool
iInterlockBwd Bool
Output:
oFwd Bool
oBwd Bool
oError Int
InOut:
ioManualFwd Bool
ioManualBwd Bool
ioManualStop Bool
ioAutoFwd Bool
ioAutoBwd Bool
寫入程式碼然後編譯:
IF #iRun THEN
IF #iManualMode THEN
#ioAutoFwd := 0;
#ioAutoBwd := 0;
END_IF;
IF #iAutoMode THEN
#ioManualFwd := 0;
#ioManualBwd := 0;
#ioManualStop := 0;
#oFwd := (#ioAutoFwd AND NOT #ioAutoBwd) OR (#ioManualFwd AND NOT #ioManualBwd) AND #iInterlockFwd;
#oBwd := (NOT #ioAutoFwd AND #ioAutoBwd) OR (NOT #ioManualFwd AND #ioManualBwd) AND #iInterlockBwd AND #iControlMode;
IF (#ioManualFwd OR #ioAutoFwd) AND NOT #iInterlockFwd THEN
#oError := 8001;
IF (#ioManualBwd OR #ioAutoBwd) AND NOT #iInterlockBwd THEN
#oError := 8002;
IF #iReset THEN
#oError := 0;
ELSE
#oFwd := 0;
#oBwd := 0;
#oError := 8000;
下載完畢,執行PLC;
這個只是簡單的電機例子。輸入輸出端可以接。當然一個程式不僅僅這麼簡單。數量、規模不一樣罷了。
我先介紹一下正常做專案的步驟,再解釋一下你的疑問。
前期,銷售接到一個潛在專案,瞭解客戶需求(spec),機械工程師給出一些方案,電氣工程師輔助給一些建議。基本上大件,找供應商報價。有的根據經驗,用哪種方案。有的可能需要測試;
銷售根據大件,材料成本,人工成本,潛在風險。有的投標,有的競價。
在專案接下來後,機械根據具體spec,細化方案。第一次評審,第二次評審。最終確定設計細節。
機械根據這些細節,細化3D,沒有問題,細化2D給供應商做加工件。電氣根據前期機械的3D,細化,溝通具體感測器及檢測、氣缸、電機等,出電氣圖紙;
採購(同時電氣工程師寫程式),裝配,除錯。
工廠內部要收,現場除錯,客戶現場驗收,售後服務;
你提問的,用300系列PLC設計一套系統。我這裡只針對程式。平臺為博圖TIA V15。實際上隨著300系列逐步要淘汰,成本已經比1500系列的要高。
因為是新的程式,裡面只有一個OB1。實際上除了OB1,OB100,OB121,OB122等也是可以,有的甚至是必須新增的。
為了便於測試,新增塊FC4060(FC_Motor), FB4061(FB_Motor)以及FB4061的背景塊。並且新建一個資料夾。其中FC在OB1中呼叫。FB在FC中呼叫。
FC為LAD梯形圖,FB為SCL;
新建FB地址如下:
Input:
iRun Bool
iManualMode Bool
iAutoMode Bool
iReset Bool
iControlMode Bool
iInterlockFwd Bool
iInterlockBwd Bool
Output:
oFwd Bool
oBwd Bool
oError Int
InOut:
ioManualFwd Bool
ioManualBwd Bool
ioManualStop Bool
ioAutoFwd Bool
ioAutoBwd Bool
寫入程式碼然後編譯:
IF #iRun THEN
IF #iManualMode THEN
#ioAutoFwd := 0;
#ioAutoBwd := 0;
END_IF;
IF #iAutoMode THEN
#ioManualFwd := 0;
#ioManualBwd := 0;
#ioManualStop := 0;
END_IF;
#oFwd := (#ioAutoFwd AND NOT #ioAutoBwd) OR (#ioManualFwd AND NOT #ioManualBwd) AND #iInterlockFwd;
#oBwd := (NOT #ioAutoFwd AND #ioAutoBwd) OR (NOT #ioManualFwd AND #ioManualBwd) AND #iInterlockBwd AND #iControlMode;
IF (#ioManualFwd OR #ioAutoFwd) AND NOT #iInterlockFwd THEN
#oError := 8001;
END_IF;
IF (#ioManualBwd OR #ioAutoBwd) AND NOT #iInterlockBwd THEN
#oError := 8002;
END_IF;
IF #iReset THEN
#oError := 0;
END_IF;
ELSE
#oFwd := 0;
#oBwd := 0;
#oError := 8000;
END_IF;
下載完畢,執行PLC;
這個只是簡單的電機例子。輸入輸出端可以接。當然一個程式不僅僅這麼簡單。數量、規模不一樣罷了。