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