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