1 引言
1.1 三菱伺服絕對位置傳輸功能
三菱mr-j2s及mr-j3系列伺服系統(tǒng)內(nèi)置絕對位置數(shù)據(jù)傳輸協(xié)議,通過驅(qū)動器三個輸入和三個輸出數(shù)字量端口與PLC的三個輸出三個輸入口相配合,實現(xiàn)伺服電機絕對位置向plc的傳輸。plc讀取伺服電機的絕對位置數(shù)據(jù)后,可方便地構(gòu)成一個絕對位置系統(tǒng)。這在許多情況下,非常有實際應(yīng)用價值。在這里要說明的是,以上所述的絕對位置傳輸協(xié)議并非是三菱伺服系統(tǒng)本身也具有的通訊協(xié)議。前者是通過伺服驅(qū)動器和plc的數(shù)字i/o口實現(xiàn)的,后者是通過在rs422通訊口實現(xiàn)的。
異構(gòu)PLC實現(xiàn)三菱伺服絕對位置值的讀取三菱mr-j2s及mr-j3系列伺服系統(tǒng)內(nèi)置絕對位置數(shù)據(jù)傳輸協(xié)議,通過驅(qū)動器三個輸入和三個輸出數(shù)字量端口與plc的三個輸出三個輸入口相配合,實現(xiàn)伺服電機絕對位置向plc的傳輸。plc讀取伺服電機的絕對位置數(shù)據(jù)后,可方便地構(gòu)成一個絕對位置系統(tǒng)。這在許多情況下,非常有實際應(yīng)用價值。在這里要說明的是,以上所述的絕對位置傳輸協(xié)議并非是三菱伺服系統(tǒng)本身也具有的通訊協(xié)議。前者是通過伺服驅(qū)動器和plc的數(shù)字i/o口實現(xiàn)的,后者是通過在rs422通訊口實現(xiàn)的。
1.2 絕對位置讀取
作為配合,三菱fx系列plc也內(nèi)置了絕對位置讀取指令(dabs指令),可方便地讀取三菱伺服的絕對位置值。但是在三菱家族的a系列和q系列中并沒有提供絕對位置讀取指令,當然其它品牌的plc更沒有與之配合的絕對位置讀取指令了。盡管從三菱的產(chǎn)品線來說,其q系列plc提供了qd75m位置模塊,使用b系列的伺服驅(qū)動器,通過sscnet總線來實現(xiàn)實時的絕對位置通訊。但是在一些低端應(yīng)用場合及其它品牌plc作為控制器的場合使用其伺服驅(qū)動器絕對位置傳輸協(xié)議來構(gòu)建絕對位置系統(tǒng)還是非常有意義的。換言之說,有必要對于fx系列之外的plc,開發(fā)并提供一種對三菱伺服絕對位置值讀取的的方法。下面我們以三菱q系列plc為例就這一問題展開討論。
2 三菱伺服絕對位置傳輸協(xié)議
2.1 位置傳輸協(xié)議的信號定義
在本傳輸協(xié)議中,以plc為主機,伺服驅(qū)動器為從機,既plc發(fā)出傳輸指令后啟動傳輸過程。在plc輸出的四個信號中,y0-y2參與了數(shù)據(jù)傳輸,y3并不參與傳輸。y3用于對所構(gòu)建的絕對位置系統(tǒng)設(shè)置原點。在y0-y2中,y0用于給出伺服開啟信號,y1用于對伺服發(fā)出abs傳輸模式指令,使伺服驅(qū)動器處于數(shù)據(jù)傳輸狀態(tài)。這時伺服驅(qū)動器將改變某些輸出端的定義(后述)。y2用于發(fā)出數(shù)據(jù)傳輸?shù)恼埱?,與“傳輸數(shù)據(jù)準備完畢”信號配合,完成伺服驅(qū)動器發(fā)送數(shù)據(jù)和plc接收數(shù)據(jù)的同步。plc的三個輸入信號x10-x12接收來自伺服驅(qū)動器的輸出信號,x10、x11是兩位位置數(shù)據(jù)信號(bit0、bit1),x12為傳輸數(shù)據(jù)準備完畢信號,是一個同步信號。該三個信號原來在伺服驅(qū)動器內(nèi)另有定義,伺服驅(qū)動器在接收y1給出的傳輸模式指令后自動切換成當前這種功能。
2.2 位置傳輸協(xié)議數(shù)據(jù)交換說明
plc給伺服驅(qū)動器同時給出伺服開啟信號sv-on和abs傳輸模式信號abs后,plc和伺服驅(qū)動器將按照下列順序進行進行數(shù)據(jù)傳輸:
?。?)伺服驅(qū)動器接到absm信號后,檢測和計算絕對位置數(shù)據(jù),切換do1、zsp、tlc的功能為bit0、bit1、數(shù)據(jù)傳輸準備完畢(trd)功能;并將trd置1。
?。?) plc接到trd=1的信號后,將abs請求信號absr置1,送到伺服驅(qū)動器。
(3)伺服驅(qū)動器接到absr=1的信號后,在bit0、bit1上輸出二位數(shù)據(jù),并將trd置0,通知plc,二位數(shù)據(jù)已輸出。plc可以讀數(shù)據(jù)了。
?。?) plc接到trd=0的信號后,讀二位數(shù)據(jù),然后將abs請求信號absr置0,送至伺服驅(qū)動器。
(5)伺服驅(qū)動器接到absr信號=0后,知道plc已將二位數(shù)據(jù)讀取,于是又發(fā)出trd=1信號,準備下一次傳輸。然后重復(fù)(2)-(5),直至將全部32位位置數(shù)據(jù)和6位校驗和數(shù)據(jù)傳輸完畢。
?。?) plc收到校驗和數(shù)據(jù)后,將abs傳輸模式absm信號置0。
在上述傳輸過程中plc和伺服驅(qū)動器的信號配合看似比較復(fù)雜
2.3 位置數(shù)據(jù)和校驗和數(shù)據(jù)結(jié)構(gòu)
在傳輸?shù)?8位數(shù)據(jù)中,前32位數(shù)據(jù)是伺服電機的絕對位置數(shù)據(jù),后6位數(shù)據(jù)是校驗和數(shù)據(jù)。在表示絕對位置的前32位數(shù)據(jù)中,按讀入的順序排列為最低二位到最高二位。在表示校驗和的后6位數(shù)據(jù)中,其讀入順序也是從低二位到高二位。該6位校驗數(shù)據(jù)是伺服驅(qū)動器根據(jù)其所傳輸?shù)慕^對位置值計算出的校驗和。plc對讀入的32位位置數(shù)據(jù)進行校驗和計算,計算的結(jié)果與讀入的6位校驗和數(shù)據(jù)相比較,若相等則說明傳輸正確;否則,則說明傳輸不正確。
為了實現(xiàn)校驗,必須要了解該傳輸協(xié)議所規(guī)定的計算方法,也即伺服驅(qū)動器內(nèi)部對位置數(shù)據(jù)的計算方法,這樣才能在plc中按照同樣的方法來計算讀入位置數(shù)據(jù)的校驗和。只有按同樣的方法計算得校驗和,其比較才有意義。
例如,伺服驅(qū)動器傳輸?shù)奈恢脭?shù)據(jù)是013acf76h,二進制是“00,00,00,01,00,11,10,10,11,00,11,11,01,11,01,10”。該協(xié)議規(guī)定校驗和計算方法如下:將每2位數(shù)據(jù)相加得,11000b=18h。所以該位置數(shù)據(jù)的校驗和為18h。伺服驅(qū)動器傳輸?shù)臄?shù)據(jù)32位位置數(shù)據(jù)013acf76h和校驗和數(shù)據(jù)18h。
3 軟件編制
根據(jù)上述對絕對位置傳輸協(xié)議的分析,我們可以編制相應(yīng)的程序。在編制該程序塊時,為了使本程序?qū)Ω鞣N品牌plc具有參考價值并可進行移植,我們采用了各類plc常用的基本指令和各類plc都支持的功能指令來編制
3.1 程序結(jié)構(gòu)
整個位置讀取程序從功能上說大致由數(shù)據(jù)讀取、校驗和計算、錯誤判別處理三個部分組成,其中校驗和計算可穿插在數(shù)據(jù)讀取程序中。
在數(shù)據(jù)讀取程序段,根據(jù)傳輸協(xié)議規(guī)定的信號邏輯配合關(guān)系,讀取全部32位位置數(shù)據(jù)和6位校驗和數(shù)據(jù)。
在讀取傳輸數(shù)據(jù)的同時,計算32位位置數(shù)據(jù)的校驗和。
全部數(shù)據(jù)讀取完成后,對讀取的校驗和數(shù)據(jù)與計算得到的校驗和數(shù)據(jù)進行比較。若不相同則重新進行傳輸,重復(fù)次數(shù)大于3次,則停止傳輸,并給出報警信號。
m、d、c表示所有的標志位、數(shù)據(jù)寄存器、計數(shù)器,c0、c1用于讀取次數(shù)(即第幾組bit0、bit1數(shù)據(jù))計數(shù)。c0用于對位置數(shù)據(jù)的數(shù)據(jù)讀入次數(shù)判斷,故預(yù)置值為17(比應(yīng)讀次數(shù)16大1);c1用于對全部數(shù)據(jù)讀入次數(shù)判斷,故預(yù)置值為19(共19次)。c2用于對傳輸出錯重新進行傳輸?shù)拇螖?shù)判斷,故預(yù)置值為3。每次讀入的2位數(shù)據(jù)在存儲時要進行處理,以恢復(fù)其原來定義的數(shù)據(jù)結(jié)構(gòu)。詳細的處理指令見后。
3.2 樣板程序
上述程序是以三菱q系列plc為例編制的傳輸程序,由于篇幅所限,我們沒有以梯形圖形式給出程序,而是以語句表形式列出。在上述程序中,m99是傳輸啟動信號,m214是傳輸出錯標志。y0-y2是sv-on、absm、absr信號,x10-x12是bit0、bit1、trd信號。d10是計算校驗和值,d12是絕對位置數(shù)據(jù)輸出值。m120-m157是存儲38位傳輸數(shù)據(jù)的中間標志位,其中m120-m151用于位置數(shù)據(jù),m152-m157用于校驗和數(shù)據(jù)。
在該程序中,大多數(shù)指令為簡單的基本指令,僅在讀入數(shù)據(jù)處理時,才使用了wand(邏輯與)、sf(移位)、add(加法)等功能指令。各類其它品牌的plc一般都支持這些指令,所以上述程序的可移植性是比較好的。
對于上述程序,我們著重介紹每次讀入的二位數(shù)據(jù)的處理方法。為了方便說明,相關(guān)程序的梯形圖和說明列出如圖6所示。
4 應(yīng)用案例
主流plc一般都內(nèi)置脈沖輸出定位功能或者可配置帶有脈沖輸出的定位功能模塊。為了使控制系統(tǒng)和機械運動位置之間建立同步,一般需要回原點。但是如果采用絕對位置系統(tǒng),則僅需要在調(diào)試時確定一個原點,以后系統(tǒng)就無需回原點了。當系統(tǒng)開機時,plc執(zhí)行該傳輸程序,通過伺服驅(qū)動器之間的傳輸信號線將伺服當前位置數(shù)據(jù)傳輸?shù)絧lc中,然后plc將讀到的當前機械位置寫入定位控制系統(tǒng)的當前位置寄存器中。這樣控制系統(tǒng)與機械系統(tǒng)之間就建立了同步關(guān)系。以后,機械系統(tǒng)的當前絕對位置由plc的位置控制系統(tǒng)根據(jù)發(fā)出的脈沖數(shù)來確定。
5 結(jié)束語
用普通plc指令實現(xiàn)伺服系統(tǒng)當前絕對位置讀取,與用rs422口采用通訊方式讀取伺服電機絕對位置的方式相比,該方式實時性較差一些。但是這種方式在構(gòu)建低端絕對位置系統(tǒng)應(yīng)用場合,仍具有較大的實際意義。在編制中,考慮到某些plc的低端cpu(如q系列q00cpu)不支持步進指令,所以整個傳輸程序使用普通指令、采用了類似于步進指令的編程方式,程序的可讀性和可移植性都比較好,在使用其它品牌的plc時只需作很少的修改即可。
(審核編輯: 智匯張瑜)
分享