啟程自動化培訓(xùn)成立于2012年,培訓(xùn)項目主打西門子PLC編程系統(tǒng)集成,、工業(yè)機器人編程,、EPLAN電氣設(shè)計、視覺等培訓(xùn)與技術(shù)服務(wù)的機構(gòu),。推薦高薪就業(yè),,越努力越幸運 西門子S7-1200PLC控制步進電機的梯形圖程序 西門子S7-1200PLC控制步進電機的梯形圖程序,也可以用結(jié)構(gòu)化編程的思路來編程,。 首先,,新建一個FB,編程語言選擇LAD(梯形圖),。 然后,,在FB編程區(qū)編寫程序段1~19。 程序段1,,M1.2為系統(tǒng)存儲器始終為1,。手/自動開關(guān)為1時,自動模式開啟,;手/自動開關(guān)為0時,手動模式開啟,。 程序段2,,M1.2為系統(tǒng)存儲器始終為1,。啟動使能按鈕一個上升沿在步進電機未使能時,置位軸使能,;啟動使能按鈕一個上升沿在步進電機已使能時,,復(fù)位軸使能。 ▼ 程序段1,、2 程序段3,,步進電機啟動使能,調(diào)用MC_Power指令程序,。 程序段4,,步進電機點動模式,調(diào)用MC_MoveJog指令程序,。 ▼ 程序段3,、4 程序段5,在手動模式下,,按復(fù)位按鈕,,復(fù)位指令啟動。 程序段6,,步進電機復(fù)位模式,,調(diào)用MC_Reset指令程序。 程序段7,,步進自動轉(zhuǎn)換為手動模式的一個脈沖時,,觸發(fā)暫停模式。 ▼程序段5,、6,、7 程序段8,步進電機暫停模式,,調(diào)用MC_Halt指令程序,。 程序段9,在自動模式下,,按復(fù)位按鈕,,回原點指令啟動。 ▼程序段8,、9 程序段10,,步進電機回原點模式,調(diào)用MC_Home指令程序,。 程序段11,,在自動模式下,按自動啟動按鈕,,開始執(zhí)行定位運行,。 ▼ 程序段10,、11 程序段12,步進電機原點OK情況下,,確認(rèn)原點的偏差范圍為-0.5~+0.5,,則認(rèn)為是原點位置。確認(rèn)位置1,、2的定位偏差范圍為-0.5~+0.5,。 ▼ 程序段12 程序段13,自動開始啟動按鈕按下,,如在原點位置,,則調(diào)用15.0的定位速度和位置1的定位位置;如在位置1處,,則調(diào)用20.0的定位速度和位置2的定位位置,; ▼ 程序段13 程序段14,定位1,、2的觸發(fā),,統(tǒng)一為定位觸發(fā)。 程序段15,,絕對定位模式,,通過上幾步的設(shè)置為步進電機進行定位。 ▼ 程序段14,、15 程序段16,,自動指示燈程序。 程序段17,,手動指示燈程序,。 程序段18,步進電機啟動使能程序 程序段19,,步進電機使能異常報警程序,。 ▼程序段16、17,、18,、19 最后,我們要在主程序塊下調(diào)用FB程序,,直接在項目樹中拖過來放開即可,,這里要為FB的輸入、輸出分配好實參地址,。 ▼ 主程序塊調(diào)用FB 好了,,西門子S7-1200PLC控制步進電機的部分梯形圖程序就介紹到這里,實際工程應(yīng)用大家自行增減,。 西門子S7-1200PLC控制步進電機的SCL語言編程 ▼ 函數(shù)塊SCL語言程序 #軸使能啟動(Axis:='步進電機', Enable:=#軸使能_1, StartMode:=1, StopMode:=1); #復(fù)位啟動(Axis:='步進電機', Execute:=#手動模式_1 AND #復(fù)位按鈕); '回原點啟動'(Axis:='步進電機', Execute:=#自動模式_1 AND #復(fù)位按鈕, Position:=0, Mode:=3); #點動模式啟動(Axis:='步進電機', JogForward:=#正向點動 AND #手動模式_1, JogBackward:=#負向點動 AND #手動模式_1); #絕對定位啟動(Axis:='步進電機', Execute:=#絕對定位模式_1, Position:=#位置, Velocity:=#速度); #上升沿檢測(CLK:=#手動模式_1); #暫停模式啟動(Axis:='步進電機', Execute:=#上升沿檢測.Q); //以上為指令塊調(diào)用 #上升沿檢測2(CLK:=#啟動使能按鈕); IF #上升沿檢測2.Q AND NOT #軸使能啟動.Status THEN #軸使能_1 := 1 ; END_IF; IF #上升沿檢測2.Q AND #軸使能啟動.Status THEN #軸使能_1 := 0 ; END_IF; #自動模式_1 := #'自/手動切換'; #手動模式_1 := NOT #'自/手動切換'; //以上為按鈕的狀態(tài) #步進啟動2 := #自動模式_1 AND #自動啟動 AND '步進電機'.StatusBits.HomingDone; //以上絕對定位方式的自動啟動 IF #步進啟動2 THEN CASE #程序步 OF 0: #程序步 := 10; ; 10: #位置 := #位置1設(shè)置值; #速度 := #速度1設(shè)置值; #絕對定位模式_1 := 1; #延時處理 := 0; IF #絕對定位啟動.Done THEN #絕對定位模式_1 := 0; #程序步:= 15; END_IF; 15: #IEC_Timer_0_Instance(IN:=#延時處理, PT:=t#0s); #延時處理 := 1; IF #IEC_Timer_0_Instance.Q THEN #位置 := #位置2設(shè)置值; #速度 :=#速度2設(shè)置值; #絕對定位模式_1 := 1; END_IF; IF #絕對定位啟動.Done THEN #絕對定位模式_1 := 0; #延時處理 := 0; #程序步:= 20; END_IF; 20: #IEC_Timer_0_Instance_1(IN:=#延時處理, PT:=t#10s); #延時處理 := 1; IF #IEC_Timer_0_Instance_1.Q THEN #位置 := #位置3設(shè)置值; #速度 := #速度3設(shè)置值; #絕對定位模式_1 := 1; END_IF; IF #絕對定位啟動.Done THEN #絕對定位模式_1 := 0; #延時處理 := 0; #程序步 := 10; END_IF; END_CASE; ELSE #位置 := 0; #速度 := 0; #自動模式_1 := 0; #程序步 := 0; END_IF; //以上為三個位置的定位,,預(yù)留延時功能 #自動指示燈_1 := #自動模式_1; #手動指示燈_1 := #手動模式_1; #報警指示燈_1 := #軸使能啟動.Error; #軸使能指示燈 := #軸使能啟動.Status; #原點指示燈_1 := '步進電機'.StatusBits.HomingDone; //以上為輸出指示燈 ▼ Main程序塊調(diào)用函數(shù)塊 |
|