4 控制軟件編制
在本控制系統(tǒng)的軟件中,主要是通訊程序的編制。其他一些如定位控制、位置速度控制方式的切換、模擬量速度控制等程序比較普通,在此不予介紹,我們著重介紹plc主機(jī)如何通過485通訊卡來讀取伺服驅(qū)動器中伺服電機(jī)的當(dāng)前絕對位置的控制軟件。
4.1 三菱mr-j2s-a伺服系統(tǒng)通訊協(xié)議
該伺服系統(tǒng)具有rs422串行通訊功能,伺服系統(tǒng)作為從站,控制器作為主站。主控制器通過該通訊功能可實(shí)現(xiàn)對伺服驅(qū)動器的運(yùn)行控制、參數(shù)的修改讀取、伺服驅(qū)動器當(dāng)前運(yùn)動狀態(tài)的讀取等。我們在這里只需要讀取伺服電機(jī)的當(dāng)前絕對位置值。
?。?)通訊格式:
?。?)通訊協(xié)議:三菱j2s系列伺服系統(tǒng)的通訊協(xié)議大致分為四種格式:從控制器向伺服驅(qū)動器發(fā)送數(shù)據(jù)、控制器從伺服驅(qū)動器接送數(shù)據(jù)、通訊超時處理、通訊重試。在這里我們主要使用第二種格式的通訊協(xié)議,即控制器從伺服驅(qū)動器接送數(shù)據(jù)的通訊協(xié)議。該種格式的通訊協(xié)議:
在上述協(xié)議中,所有報(bào)文均以ascii碼表示。在主站控制器發(fā)出的報(bào)文中,soh(通訊開始)、stx(報(bào)文開始)和etx(報(bào)文結(jié)束)的ascii碼分別為01h、02h和03h。讀絕對位置的指令為02,則對應(yīng)的ascii碼為30h、31h,絕對位置值(指令脈沖單位)對應(yīng)的數(shù)據(jù)號為91,對應(yīng)的ascii碼為39h、31h。站號是在伺服驅(qū)動器中設(shè)置的站號,假如設(shè)置為0時,則對應(yīng)的ascii碼為30h。其校驗(yàn)和的計(jì)算范圍為站號到etx,將其每一位數(shù)據(jù)的ascii碼進(jìn)行求和,得到結(jié)果的低二位即為校驗(yàn)和數(shù)據(jù)。在主站控制器收到的報(bào)文中,stx、站號、etx與前面一樣,不再重復(fù)了。當(dāng)通訊正常時,錯誤代碼為a(伺服不報(bào)警時)或a(伺服報(bào)警時),當(dāng)通訊不正常時,則錯誤代碼不等于a或a,而是其他字符。數(shù)據(jù)即為絕對位置數(shù)據(jù),長度為8幀。其校驗(yàn)和的計(jì)算范圍也是為站號到etx,也是取每位ascii碼計(jì)算和的低二位。
?。?)相關(guān)的驅(qū)動器參數(shù):p#16參數(shù)用于設(shè)置波特率、rs232/rs422通訊選擇、通訊等待時間。我們選用波特率為19200pbs,rs422通訊口,通訊等待時間有效,則p#16=1101。
p#15參數(shù)用于設(shè)置站號,在本案中設(shè)為0。
4.2 fx2n系列plc無協(xié)議通訊指令(rs指令)
fx2n系列plc內(nèi)置串行數(shù)據(jù)傳送指令,可以通過rs-232或rs-422通訊口與其它設(shè)備進(jìn)行串行通訊。其通訊協(xié)議可根據(jù)所要與其進(jìn)行通訊的設(shè)備的通訊協(xié)議進(jìn)行編制。
?。?)通訊格式:串行數(shù)據(jù)傳送rs指令的通訊格式通過plc的特殊數(shù)據(jù)寄存器d8120來設(shè)置。在最新的fx3u系列plc中可通過設(shè)置plc參數(shù)來設(shè)置,而在fx2n中只能通過plc程序來設(shè)置。本案中d8120的b15-b8只能設(shè)置為00001100,在此不作介紹。b7-b0用于設(shè)置傳輸?shù)牟ㄌ芈?、?shù)據(jù)長度等,這些參數(shù)必須與j2s伺服驅(qū)動器的通訊參數(shù)相一致。當(dāng)b7-b4=1001時,對應(yīng)的傳輸波特率為19200
bps;當(dāng)b3=0時,對應(yīng)停止位為1位;當(dāng)b2b1=11時,對應(yīng)奇偶校驗(yàn)為偶校驗(yàn);當(dāng)b0=1時,對應(yīng)的數(shù)據(jù)長度為8位。所以d8120=0000110010000111,即h0c97。
(2)串行數(shù)據(jù)傳送rs指令:rs指令的指令格式為 rs d10 k10 d20 k14;其中d10為發(fā)送數(shù)據(jù)首地址,k10為
#p#分頁標(biāo)題#e#
發(fā)送數(shù)據(jù)的個數(shù)(在本案中為10),d20為接收數(shù)據(jù)存放的首地址,k14為接收數(shù)據(jù)的個數(shù)(在本案中為14)。
4.3 plc和伺服驅(qū)動器的通訊程序
在了解了伺服驅(qū)動器的通訊協(xié)議和plc的通訊指令后,編制相應(yīng)的通訊程序,目標(biāo)是實(shí)時讀取伺服驅(qū)動器的絕對位置。該通訊程序大致可分為通訊實(shí)現(xiàn)和通訊錯誤判斷兩個部分。
?。?)報(bào)文構(gòu)成:據(jù)前述的通訊協(xié)議,我們知道,讀電機(jī)絕對位置時的協(xié)議格式為:
轉(zhuǎn)換成ascii碼,則為:
校驗(yàn)和的計(jì)算范圍為站號到etx的7個幀,計(jì)算方法是將其轉(zhuǎn)化成ascii碼的數(shù)加起來取其低二位。具體計(jì)算如下:
30h+30h+32h+02h+39h+31h+03h=101h,取其低二位,則位01。再取其對應(yīng)的ascii碼,得30h、31h。該值即位發(fā)送報(bào)文中的校驗(yàn)和值。所以,讀絕對位置要發(fā)送的報(bào)文即為01h 30h 30h 32h 02h 39h 31h 03h 30h 31h
(2)主通訊程序:圖4是通訊主程序,通過這段程序可得到儲存在d50中伺服電機(jī)絕對位置值。程序段a是在plc開始運(yùn)行時,將根據(jù)伺服系統(tǒng)的通訊協(xié)議編制的報(bào)文寫入發(fā)送數(shù)據(jù)塊。程序段b選擇8位數(shù)據(jù)模式。程序段c激活通訊指令。程序段d每100毫秒對發(fā)送標(biāo)志m8122置位,發(fā)送完成后自動復(fù)位。在程序段e,當(dāng)接收完成時,接收完成標(biāo)志m8123置1,將接收到的數(shù)據(jù)送到d30—d43中,并同時將m8123復(fù)位。程序段f,將14幀接收數(shù)據(jù)中的位置數(shù)據(jù)(從第4幀到第11幀)通過轉(zhuǎn)換指令hex轉(zhuǎn)換成16進(jìn)制數(shù)據(jù),最后將位置數(shù)據(jù)送入d50。
圖4 通訊程序
?。?)通訊出錯檢測程序:為了保證讀入的位置數(shù)據(jù)的正確性,必須對整個通訊過程進(jìn)行出錯檢測。在這里我們主要核對讀入數(shù)據(jù)的校驗(yàn)和的方法來進(jìn)行通訊錯誤校驗(yàn)。前面我們介紹過,計(jì)算接收報(bào)文數(shù)據(jù)校驗(yàn)和的計(jì)算范圍為stx之后的11幀數(shù)據(jù)。所以具體做法是,根據(jù)讀入的數(shù)據(jù)計(jì)算stx之后的11幀的校驗(yàn)和,再與接收到報(bào)文中校驗(yàn)和(最后兩幀)進(jìn)行比較。在圖5的通訊出錯檢測程序段中,指令h用于計(jì)算從伺服驅(qū)動器接收到數(shù)據(jù)的校驗(yàn)和。指令i用于取計(jì)算得到的校驗(yàn)的低二位,指令j用于將接收到的校驗(yàn)和轉(zhuǎn)換成16進(jìn)制。指令k用于比較實(shí)際計(jì)算得到的校驗(yàn)和與接收到的校驗(yàn)和進(jìn)行比較,若不相等,則通訊出錯。通訊出錯后處理,限于篇幅,在此不作介紹。#p#分頁標(biāo)題#e#
圖5 檢測程序
5 結(jié)束語
通過上述硬件和軟件兩方面的結(jié)合,整個控制系統(tǒng)就能滿足本文開始時所描述的控制任務(wù)要求。plc控制伺服系統(tǒng)進(jìn)行定位控制是一種典型的控制模式,而應(yīng)用通訊技術(shù)實(shí)現(xiàn)伺服系統(tǒng)的絕對位置檢測和控制更是一種實(shí)用的技術(shù)。本文所討論的三菱fx2n系列plc實(shí)時讀取三菱mr-j2s-a系列伺服系統(tǒng)當(dāng)前位置的實(shí)現(xiàn)方式,不僅對類似的控制場合具有借鑒意義,而且對plc與其他設(shè)備的通訊程序編制也有啟發(fā)意義。
轉(zhuǎn)載請注明出處。