王勛
摘 要:本設(shè)計以西門子公司的S7-200可編程邏輯器為中央處理模塊,以兩相步進電機為控制對象,介紹了西門子S7-200PLC的控制原理和系統(tǒng)總體設(shè)計方法,并從軟件設(shè)計方面詳細地講解了如何用PLC的移位指令和高速脈沖輸出指令實現(xiàn)對步進電機的控制。
關(guān)鍵詞:PLC;兩相步進電機;步進電機驅(qū)動模塊
中圖分類號:TP23? 文獻標識碼:A? 文章編號:1673-260X(2021)01-0063-05
0 引言
在生產(chǎn)制造流水線中,經(jīng)常需要使用定位裝置或機械手臂等加工設(shè)備來實現(xiàn)生產(chǎn)元件的組裝,尤其是對于精度要求較高的組裝器件,更需要根據(jù)控制要求,選取高精度的電機進行精確控制來減小誤差。本設(shè)計采用西門子S7-200系列的PLC來控制步進電機[1,2],西門子S7-200PLC具有邏輯性強、編程控制簡單的特點[3,4],而步進電機可以通過驅(qū)動脈沖來控制電機的角度和速度,進而達到了減小誤差和精確控制的目的。
1 系統(tǒng)總體設(shè)計
基于PLC控制的步進電機電路圖如圖1所示??刂齐娐分饕扇齻€部分構(gòu)成,第一部分是電路的核心處理單元,由西門子S7-200系列PLC構(gòu)成,本設(shè)計就是通過設(shè)置PLC高速脈沖發(fā)生器的參數(shù)來產(chǎn)生頻率不同的高速脈沖從而實現(xiàn)電機控制;第二部分是由步進電機驅(qū)動板構(gòu)成,步進電機驅(qū)動板主要用來給步進電機提供相應(yīng)的時序電流和驅(qū)動電壓;第三部分是由步進電機構(gòu)成的執(zhí)行機構(gòu),有了足夠電壓和電流的步進電機經(jīng)過PLC傳輸來的不同頻率、不同脈沖數(shù)的控制信號來達到對自身運行速度及角度的調(diào)節(jié),實現(xiàn)了步進電機的驅(qū)動。
2 系統(tǒng)硬件設(shè)計
2.1 PLC概述
以前,工業(yè)控制主要都是人工手動控制,成本高還不穩(wěn)定。近年來,越來越多可靠性高,實用性強的智能控制器投入到工業(yè)生產(chǎn)中,可以有效減低成本,還可以使工業(yè)生產(chǎn)穩(wěn)定化。PLC就是其中優(yōu)秀可靠的產(chǎn)品之一。
PLC是一種數(shù)字運算智能設(shè)備[5],主要由輸入模塊、中央處理模塊、存儲器、通信接口模塊、輸出模塊、拓展接口模塊、電源等硬件部分組成。PLC的核心是中央處理單元,它可以在內(nèi)部執(zhí)行各種運算,計時以及計數(shù)等操作的指令,并將運算后的指令通過相應(yīng)的輸出接口實現(xiàn)對外部受控單元的控制。
2.2 PLC工作過程
PLC的工作過程是描述PLC從上電初始狀態(tài)到完整的運行完整個程序并產(chǎn)生相應(yīng)輸出的過程,主要分為以下五個階段。
(1)內(nèi)部處理階段,PLC檢查中央處理器并且復(fù)位監(jiān)視定時器,之后完成其他內(nèi)部工作。
(2)通信服務(wù)階段,PLC響應(yīng)編程器輸入的命令、更新編程器,并且可能與一些智能模塊進行通信。
(3)輸入處理階段,所有輸入端子的狀態(tài)被PLC順序讀取,并將讀取的信息存入映像寄存器中。此時,輸入映像寄存器刷新。
(4)程序處理階段,按照先上后下,先左后右的順序,對梯形圖中的程序進行掃描,然后進行邏輯運算,運算結(jié)果存入相關(guān)的映像寄存器中。如果遇到程序跳轉(zhuǎn)指令,就會根據(jù)條件判斷并且跳轉(zhuǎn)到指定的地址。
(5)輸出刷新階段,將所有輸出映像寄存器中的狀態(tài)轉(zhuǎn)存到輸出鎖存器中,然后輸出端輸出驅(qū)動信號。
本設(shè)計以西門子S7-200PLC為核心處理器件,設(shè)計了一個兩相步進電機的手動調(diào)速、自動變速、角位移控制和正反轉(zhuǎn)控制的驅(qū)動系統(tǒng)。在系統(tǒng)輸入信號部分,由輸入按鍵I0.0控制步進電機慢速運行,由輸入按鍵I0.1控制步進電機快速運行,由輸入按鍵I0.2控制步進電機自動運行,由輸入按鍵I0.3控制步進電機運行方向;在系統(tǒng)輸出信號部分,由Q0.0輸出信號控制驅(qū)動板的脈沖信號控制,由Q0.1輸出信號控制驅(qū)動板的正反轉(zhuǎn)信號控制,由Q0.3輸出信號控制驅(qū)動板的使能端。
2.3 步進電機驅(qū)動板部分
TB6560步進電機驅(qū)動板工作電壓直流10V-35V,其采用6N137高速光電耦合,保證高速不失真;可以有效地實現(xiàn)對負載電路的欠電壓保護,過載保護和長時間電流過大的保護,適合額定電流低于3A的步進電機。對于多相步進的電機的運行通常是需要多相具有時序控制的電流來驅(qū)動的,而PLC不具備專門的時序電流控制輸出結(jié)構(gòu),所以在PLC驅(qū)動步進電機時,需要加入步進電機驅(qū)動板。
2.4 步進電機部分
步進電機是依據(jù)脈沖信號的上升沿進行運作的電子元件。一般在理想情況下,電機的轉(zhuǎn)速、轉(zhuǎn)動的圈數(shù)只取決于告訴脈沖信號的周期和脈沖數(shù),并且不受負載的影響。當步進驅(qū)動器接收到一個脈沖信號的上升沿時,它就會按照固定方向旋轉(zhuǎn)一個角度,稱為“步距角”??梢酝ㄟ^控制脈沖個數(shù)來控制步進的角度,也就是轉(zhuǎn)動的圈數(shù),從而達到可以準確定位的目的;同時可以通過控制脈沖的周期來控制步進電機的旋轉(zhuǎn)速度。
步進電機的應(yīng)用不像普通的直流和交流電機那樣,一般情況下會比普通電機復(fù)雜一些,但是普通的直流、交流電機對于轉(zhuǎn)動的速度和轉(zhuǎn)過的角度不能實現(xiàn)精準的控制,而現(xiàn)在工業(yè)中對于精準控制的要求越來越高,所以這就使得步進電機的需求量與日俱增,在各個國民經(jīng)濟領(lǐng)域都有應(yīng)用。
本設(shè)計采用的是42型四線二相混合式步進電機,是一種精度和成本相對較高,結(jié)構(gòu)相對復(fù)雜的執(zhí)行元件,步進電機是依據(jù)脈沖信號的邊沿進行動作的電子元件[6]。在額定輸入和額定負載環(huán)境下,步進電機的每一步角位移都是固定不變的,每一步的觸發(fā)都是由脈沖信號來控制的,所以脈沖信號的頻率決定了步進電機的轉(zhuǎn)速,脈沖信號的個數(shù)決定了步進電機的旋轉(zhuǎn)圈數(shù),從而就可以實現(xiàn)對步進電機及電機所帶動的負載的精確控制。
3 系統(tǒng)軟件設(shè)計
通常意義上來說,可編程邏輯控制器軟件程序大體上可以分為以下三類,即控制主程序部分,子程序部分和中斷服務(wù)子程序部分,本設(shè)計主要是由主程序和子程序兩部分組成,在自動調(diào)速控制功能程序設(shè)計部分,加入了中斷服務(wù)子程序,下面以手動調(diào)速控制和自動調(diào)速控制為例來說明本設(shè)計的程序部分。
3.1 主程序部分
主程序是指可編程邏輯控制器中程序開始執(zhí)行的部分,可以作為獨立的加工程序使用,并且主程序可以調(diào)用子程序,而不被任何子程序所調(diào)用,是可編程邏輯控制器程序的中心部分。而本設(shè)計中的主程序主要是由邏輯控制部分和調(diào)用子程序部分組成。
以主程序圖2為例,I0.0表示邏輯常開觸點,當I0.0端輸入為低電平時,邏輯常開觸點保持斷開狀態(tài),Q0.0輸出端無效;當I0.0端輸入為高電平時,邏輯常開觸點轉(zhuǎn)換為閉合狀態(tài),Q0.0輸出端有效,使得Q0.0輸出端執(zhí)行邏輯清零操作,同時SBR_0使能端EN輸入有效,主程序調(diào)用SBR_0子程序指令。子程序調(diào)用指令說明見表1。
3.2 子程序部分
在程序設(shè)計過程中,經(jīng)常會有一些特定運算或功能需要反復(fù)使用,例如本例中的調(diào)速控制、正反轉(zhuǎn)控制等操作,可以把這些特定功能的程序編寫成子程序,從而達到減少主程序的掃描時間和,增加程序的易讀性和調(diào)試的便捷性的目的。
3.2.1 數(shù)據(jù)傳送指令
數(shù)據(jù)傳送指令可以將數(shù)據(jù)在各個存儲單元之間傳送,并且數(shù)據(jù)值在傳送工程中是保持不變的。傳送指令可用于機內(nèi)數(shù)據(jù)的流轉(zhuǎn)和生成,也可用于存儲單元的清零、程序的初始化等場合。
不同數(shù)據(jù)類型的傳送指令只能傳送相對應(yīng)類型的數(shù)據(jù),一般傳送數(shù)據(jù)的類型包括字節(jié)傳送、字傳送、雙字傳送以及實數(shù)傳送。
(1)字節(jié)傳送指令MOVB
圖3中MOV_B為梯形圖表示方式,在圖中:EN為使能端,IN為傳送數(shù)據(jù)輸入端(IB、QB、VB、MB、SMB、SB、LB、AC、*VD、*LD、*AC、常數(shù)等操作數(shù)),OUT為數(shù)據(jù)輸出端(IB、QB、VB、MB、SMB、SB、LB、AC、*VD、*LD、*AC、等操作數(shù)),ENO為指令和傳送狀態(tài)位。
MOVB傳送指令的功能是當使能端EN=1時,將在IN端的一個8位字節(jié)數(shù)據(jù)傳送到MOVB指令的OUT端,OUT指定字節(jié)單元的地址位置。
(2)字傳送指令MOVW
圖4中MOV_W為梯形圖表示方式,在圖中:EN為使能控制輸入端,IN為傳送數(shù)據(jù)輸入端(IW、QW、VW、MW、SMW、SW、T、C、LW、AIW、AC、*VD、*LD、*AC、常數(shù)等操作數(shù)),OUT為數(shù)據(jù)輸出端(IW、QW、VW、MW、SMW、SW、T、C、LW、AQW、AC、*VD、*LD、*AC等操作數(shù)),ENO為指令和傳送狀態(tài)位。
(3)雙字傳送指令MOVDW
圖5中MOV_DW為梯形圖表示方式,在圖中:EN為使能控制輸入端,IN為傳送數(shù)據(jù)輸入端(ID、QD、VD、MD、SMD、SD、LD、HC、AC、&VB、&IB、&QB、&MB、&SB、&T、&C、&SMB、&AIW、&AQW、*VD、*LD、*AC、常數(shù)等操作數(shù)),OUT為數(shù)據(jù)輸出端(ID、QD、VD、MD、SMD、SD、LD、AC、*VD、*LD、*AC等操作數(shù)),ENO為指令和傳送狀態(tài)位。
3.2.2 高速脈沖輸出指令PLS
在S7-200PLC中,每種主機最多提供兩個高速脈沖發(fā)生器,其中一個發(fā)生器分配在數(shù)字輸出端Q0.0,另一個分配在Q0.1。
高速脈沖發(fā)生器發(fā)生高速脈沖時僅由Q0.0端和Q0.1端輸出。高速脈沖輸出有PTO和PWM兩種輸出形式:PTO是普通高速脈沖,PWM是寬度可調(diào)脈沖。本設(shè)計主要用到PTO。高速脈沖串輸出PTO用來輸出指定數(shù)量的方波,這樣可以更好地控制脈沖的周期和個數(shù)。同時,為了成功驅(qū)動步進電機,我們還需要一些能提供高速脈沖輸出的指令(如表2)。
不同的高速脈沖發(fā)生器都對應(yīng)不同的特殊寄存器,且對應(yīng)數(shù)量不一致。一般的寄存器包括控 制字節(jié)、狀態(tài)字節(jié)寄存器和參數(shù)值寄存器。各個寄存器的功能如表3:
為了標明響應(yīng)操作的狀態(tài),PLC在PTO方式下,在每個高速脈沖輸出時都設(shè)置了狀態(tài)位,而這些狀態(tài)位可以作為判斷條件來響應(yīng)操作。狀態(tài)字節(jié)中各狀態(tài)位的功能如下:
Q0.0:當狀態(tài)字節(jié)在范圍SM66.0~SM66.3時,通常表示無意義。
當狀態(tài)字節(jié)為SM66.4時,PTO包絡(luò)增量計 算錯誤并且終止,此時0=無錯誤;1=終止。
當狀態(tài)字節(jié)為SM66.5時,PTO包絡(luò)由于用戶命令而終止,此時0=不終止;1=終止。
當狀態(tài)字節(jié)為SM66.6時,PTO管線溢出,此時0=無溢出;1=溢出。
當狀態(tài)字節(jié)為SM66.7時,PTO空閑,此時0=執(zhí)行中;1=PTO空閑。
Q0.1:當狀態(tài)字節(jié)在范圍SM76.0~SM76.3時,通常表示無意義。
當狀態(tài)位字節(jié)SM76.4時,PTO包絡(luò)增量計 算錯誤并且終止,此時0=無錯誤;1=終止。
當狀態(tài)位字節(jié)SM76.5時,PTO包絡(luò)由于用戶命令而終止,此時0=不終止;1=終止。
當狀態(tài)位字節(jié)SM76.6時,PTO管線溢出,此時0=無溢出;1=溢出。
當狀態(tài)位字節(jié)SM76.7時,PTO空閑,此時0=執(zhí)行中;1=PTO空閑。
每個高速脈沖輸出都對應(yīng)一個控制字節(jié),可通過對控制字節(jié)指定位的編程來實現(xiàn)所需要的高速脈沖輸出。
3.2.3 子程序部分
在主程序中,當I0.0端輸入為高電平時,SBR_0使能端EN輸入有效,主程序調(diào)用子程序SBR_0。子程序SBR_0程序圖如下。
以子程序圖6為例來說明PLC是如何使用傳送指令和高速脈沖輸出指令來實現(xiàn)步進電機的調(diào)速控制。圖中SM表示特殊標志位存儲器,該標志位寄存器能提供狀態(tài)信息和控制功能,并且可以在程序和CPU之間實現(xiàn)信息交換。邏輯常開觸點SM0.0表示上電保持功能,在系統(tǒng)上電時該值始終為1,程序立即觸發(fā)與之相連接的四個指令的使能端。
當SM0.0觸發(fā)第一個數(shù)據(jù)傳送指令MOV_B的使能端時,將16進制數(shù)據(jù)85傳送到特殊標志位存儲器SMB67中,其中SMB67表示為控制PTO/PWM脈沖輸出的標志位寄存器,可以通過傳送指令來實現(xiàn)所需要的脈沖輸出功能。本設(shè)計中給SMB67傳送數(shù)據(jù)16進制85則表示設(shè)置高速脈沖此時為Q0.0輸出單段PTO脈沖、時基為毫秒且允許更新脈沖數(shù)和周期值,不允許更新脈沖寬度。
當SM0.0觸發(fā)第二個數(shù)據(jù)傳送指令MOV_W的使能端時,將十進制數(shù)值2000傳送給SMW68存儲單元中,其中SM68表示為控制PTO/PWM脈沖周期的標志位寄存器,可以通過傳送指令來實現(xiàn)所需要的高速脈沖周期值的調(diào)節(jié),范圍為2~65535ms或10~65535us,本程序為設(shè)置脈沖周期為2000us。
當SM0.0觸發(fā)第三個數(shù)據(jù)傳送指令MOV_DW的使能端時,將十進制數(shù)值0傳送給SMD72存儲單元中,其中SMD72表示為PTO脈沖數(shù)的標志位寄存器,可以通過傳送指令來實現(xiàn)所需要的脈沖數(shù)的設(shè)置,設(shè)置值應(yīng)該為大于等于0的正整數(shù),當賦值為0時,系統(tǒng)默認為1。
當SM0.0觸發(fā)第四個指令PLS的使能端時,其中PLS表示高速脈沖輸出指令,該指令可以實現(xiàn)在高速輸出(Q0.0和Q0.1)上控制脈沖串輸出(PTO)和脈寬調(diào)制(PWM)功能。當給該指令操作數(shù)賦值為0時,即默認高速脈沖輸出端口為Q0.0位。
3.3 中斷服務(wù)子程序部分
中斷服務(wù)子程序是PLC編程中的一種重要功能,用于實時控制、高速處理、通信和網(wǎng)絡(luò)等復(fù)雜和特殊的控制任務(wù)。所謂中斷就是在CPU執(zhí)行程序時刻,系統(tǒng)出現(xiàn)了某些急需處理的特殊事件,這時CPU會暫時中斷正在執(zhí)行的程序,轉(zhuǎn)而去處理相對更加緊急和更加重要的中斷程序,當中斷程序處理完畢以后,CPU會返回中斷之前的程序繼續(xù)執(zhí)行。
中斷服務(wù)程序與子程序最大的不同是,中斷服務(wù)程序不能由用戶程序調(diào)用,而只能由特定的事件觸發(fā)執(zhí)行。PLC最多有38個中斷源(9個預(yù)留),分為三大類:通信中斷、輸入/輸出(I/O)中斷和時基中斷,優(yōu)先由高到低依次是:通信中斷、I/O中斷和時基中斷。每類中斷中不同的中斷事件又有不同的優(yōu)先權(quán)。
3.3.1 中斷連接指令A(yù)TCH
上圖是PLC程序中的中斷連接指令功能圖,EN是中斷指令的使能端,當使能端EN所連接的前端輸入有效電平時,觸發(fā)程序體的中斷連接指令,此時中斷連接指令會時刻檢測中斷事件EVNT,如果此時中斷事件有效,系統(tǒng)會暫時停止當前執(zhí)行的任務(wù),轉(zhuǎn)而執(zhí)行中斷程序INT中所描述的程序,當中斷程序執(zhí)行完成后,系統(tǒng)會返回繼續(xù)執(zhí)行中斷之前的程序。
中斷事件即指發(fā)出中斷請求的事件,PLC在系統(tǒng)中內(nèi)置34個可作為中斷請求的中斷事件,每一個事件都由一個不同的事件觸發(fā),每一個中斷事件都分配一個編號用來識別中斷請求,稱之為中斷號。
3.3.2 中斷允許指令ENI/中斷禁止指令DISI
上圖是PLC程序中中斷允許指令和中斷禁止指令的功能圖,該指令的功能是當ENI指令輸入端有有效輸入電平時,允許全局中斷連接指令執(zhí)行相應(yīng)的中斷程序;如功能指令DISI輸入端有有效輸入電平時,禁止全局中斷連接指令執(zhí)行相應(yīng)的中斷程序。
3.3.3 中斷返回指令
上圖是PLC程序中中斷返回指令的功能圖,該指令的功能是當RETI指令輸入端有有效輸入電平時,退出中斷程序,返回繼續(xù)執(zhí)行中斷前的主程序。
3.3.4 中斷服務(wù)子程序部分
上圖是PLC程序中的中斷連接指令使用部分,該中斷出現(xiàn)在程序體的自動演示部分,中斷事件19表示的是在PTO的0號端口脈沖串輸出完成后觸發(fā)中斷操作。此時指令ENI的輸入一直保持有效,即允許全局中斷連接指令的執(zhí)行,當步進電機完成自動調(diào)速演示后,PTO脈沖串輸出端口會終止脈沖串的輸出,讓步進電機由運動狀態(tài)恢復(fù)到停止狀態(tài),此時中斷連接指令中的中斷事件19被觸發(fā),中斷連接指令會調(diào)用中斷服務(wù)子程序INT0,系統(tǒng)會暫時停止當前程序執(zhí)行,轉(zhuǎn)而執(zhí)行相應(yīng)的中斷服務(wù)子程序。
上圖是PLC程序中的中斷服務(wù)子程序部分,當中斷事件19觸發(fā)中斷后,中斷連接指令調(diào)用中斷服務(wù)子程序INT0,執(zhí)行相應(yīng)中斷程序。SM0.0表示特殊存儲器,當PLC上電后,該位始終為1,當中斷程序被調(diào)用后,SM0.0始終得電,Q0.2位的狀態(tài)被置1,產(chǎn)生相應(yīng)輸出表示自動演示程序執(zhí)行完成,允許進行其他操作,同時RETI也立即得電,系統(tǒng)退出中斷程序,返回繼續(xù)執(zhí)行中斷前的主程序。
4 結(jié)論
本設(shè)計使用西門子公司S7系列的PLC作為步進電機的控制器,搭配步進電機驅(qū)動板可以方便地實現(xiàn)步進電機的正反轉(zhuǎn)控制、調(diào)速控制和角位移控制,而且可以根據(jù)生活生產(chǎn)的需求進行實時的程序修改,達到實時控制的目的。PLC本身也具有可靠性高和抗干擾性強的特點,極大地提高了系統(tǒng)的可靠性??蓮V泛地在工業(yè)機械手、制造業(yè)和礦井提升系統(tǒng)中得到應(yīng)用。
——————————
參考文獻:
〔1〕宋立.基于PLC的步進電機閉環(huán)控制系統(tǒng)[J].中國高新科技,2019,26(24):86-88.
〔2〕范長青.基于西門子S7-200 SMARTPLC的步進電機控制[J].無線互聯(lián)科技,2019,2(03):114-116.
〔3〕李文輝,李國強.基于PLC的步進電機控制系統(tǒng)設(shè)計[J].儀表技術(shù),2008,37(10):89-90.
〔4〕龔仲華.機電一體化技術(shù)與系統(tǒng)[M].北京:人民郵電出版社,2018.
〔5〕楊友進,王卓君.基于S7-200SMART的步進電機控制研究[J].電工技術(shù),2018,39(12):23-24.
〔6〕王雁博.基于PLC的步進電機控制系統(tǒng)設(shè)計[J].西安文理學(xué)院學(xué)報(自然科學(xué)版),2017,24(4):40-41.