引言
該系統(tǒng)cpu芯片使用了一種新型的51系列單片機(jī)即cygnal公司的c8051f040。其指令集與msc_51指令集完全兼容,使用方便鹤盒,且采用流水線結(jié)構(gòu)百炬,其周期由標(biāo)準(zhǔn)的12個(gè)系統(tǒng)時(shí)鐘周期降為1個(gè)系統(tǒng)時(shí)鐘周期褐隆,處理能力大大提高,峰值性能可達(dá)25mips收壕。
1 簡(jiǎn)介
可編程控制器(plc)作為繼電控制盤(pán)的替代物妓灌,以極高的可靠性和應(yīng)用方便等特點(diǎn),成為當(dāng)今用途最為廣泛的工業(yè)控制器∶巯埽現(xiàn)在它的應(yīng)用已突破了當(dāng)初邏輯控制的場(chǎng)合虫埂,深入到過(guò)程控制、位置控制圃验、網(wǎng)絡(luò)通訊等工程領(lǐng)域掉伏。本文根據(jù)某工程的實(shí)際需要,以三菱plc為模擬目標(biāo)澳窑,提出了一種以單片機(jī)構(gòu)建plc系統(tǒng)的思想斧散。
2 系統(tǒng)構(gòu)成
系統(tǒng)框圖見(jiàn)圖1。
該系統(tǒng)cpu芯片使用了一種新型的51系列單片機(jī)即cygnal公司的c8051f040圾篱。其指令集與msc_51指令集完全兼容啸席,使用方便,且采用流水線結(jié)構(gòu)玫惧,其周期由標(biāo)準(zhǔn)的12個(gè)系統(tǒng)時(shí)鐘周期降為1個(gè)系統(tǒng)時(shí)鐘周期币皂,處理能力大大提高,峰值性能可達(dá)25mips庞蠕。內(nèi)部集成了64k flash rom筋擒、4352字ram、64位數(shù)據(jù)i/o口以及幾乎所有的模擬與數(shù)字外設(shè)如:adc则菌、dac破卜、smbus、uart踏靴、can廷前、spi、pca窜无、電壓比較器嗡身、溫度傳感器、可編程增益放大器等讲仰。開(kāi)發(fā)工具采用標(biāo)準(zhǔn)的jtag接口,以邊界掃描方式對(duì)cpu進(jìn)行非入侵式全速的在系統(tǒng)調(diào)試痪蝇。其性能較之傳統(tǒng)51單片機(jī)有了很大的提高鄙陡。
cpu和外部i/o接口之間采用光電耦合器件,實(shí)行強(qiáng)電和弱電隔離躏啰,切斷現(xiàn)場(chǎng)干擾趁矾。計(jì)算機(jī)通過(guò)rs232串口與plc系統(tǒng)通信耙册,將plc程序指令傳送到plc。plc將接收到的指令保存到非易失性ram中毫捣。這樣做即可以長(zhǎng)期保存plc程序详拙,又可以方便地隨時(shí)修改程序。
3 plc程序的執(zhí)行過(guò)程
常見(jiàn)plc以掃描方式工作蔓同。每次掃描的工作過(guò)程分為三步饶辙。
(1) 輸入處理
程序執(zhí)行前斑粱,plc將全部輸入點(diǎn)的狀態(tài)讀到輸入鏡像寄存器弃揽。在程序執(zhí)行過(guò)程中,plc不再讀取這些輸入點(diǎn)的狀態(tài)褂省,直到下一個(gè)掃描周期的輸入處理巷卵。
(2) 程序處理
plc根據(jù)讀入的外部輸入狀態(tài)和其它元件的狀態(tài)執(zhí)行用戶程序葵稚。這時(shí)的輸出指令只寫(xiě)到輸出鏡像寄存器帘衣,輸出點(diǎn)的狀態(tài)并沒(méi)有發(fā)生變化。
〗嘞(3) 輸出處理 全部指令執(zhí)行完畢税则,將輸出寄存器的內(nèi)容全部刷新到外部輸出點(diǎn)。程序回到第一步工作過(guò)程窃裙。
本plc系統(tǒng)的工作過(guò)程與此相同纹轩。輸入處理和輸出處理用單片機(jī)實(shí)現(xiàn)起來(lái)比較容易,無(wú)需贅述宦噩。系統(tǒng)的關(guān)鍵是用戶程序的處理缅科。下面以三菱fx系列plc一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明本plc系統(tǒng)對(duì)用戶程序的處理方法。梯形圖和相應(yīng)的指令表見(jiàn)圖2衰拄。
0:ld x000 9: ld x010
1:and x001 10:ld x011
2:and x002 11:and x012
3:ld x003 12:ld x013
4:or x004 13:and x014
5:anb 14:orb
6:out y000 15:or x015
7:or x006 16:anb
8:ld x010 17:out y001
[DividePage:NextPage]
首先分析指令 and x001耗跛,指令執(zhí)行前有狀態(tài)b,執(zhí)行該指令時(shí)攒发,將當(dāng)前狀態(tài)b
和x001的狀態(tài)進(jìn)行與運(yùn)算调塌,形成狀態(tài)c,這是指令andx002執(zhí)行前狀態(tài)惠猿。c是b的刷新值羔砾,它們實(shí)際上是一個(gè)變量。這個(gè)變量反映程序執(zhí)行時(shí)當(dāng)前的狀態(tài)值偶妖。當(dāng)遇到輸出指令out y000時(shí)姜凄,就把當(dāng)前狀態(tài)值傳送給輸出寄存器。把a(bǔ)nd x001作為一單元塊,可認(rèn)為這個(gè)單元塊有單輸入單輸出的結(jié)構(gòu)态秧。輸入狀態(tài)和單元塊內(nèi)元件的狀態(tài)運(yùn)算后得到輸出狀態(tài)董虱。
再分析指令ld x003、or x004申鱼,如果將這兩條指令組合后看作上述單輸入單輸出結(jié)構(gòu)的單元塊愤诱,執(zhí)行前的狀態(tài)為d,把x003捐友、x004元件并聯(lián)后的狀態(tài)作為單元塊內(nèi)元件的狀態(tài)晋粱,和d與運(yùn)算后得到狀態(tài)g.。但細(xì)化一步執(zhí)行l(wèi)dx003這個(gè)子單元塊時(shí)跛脾,當(dāng)前狀態(tài)d需保存批贴,取x003的狀態(tài)作為當(dāng)前狀態(tài)值e,和x004或運(yùn)算后得到f癣跟。執(zhí)行anb時(shí)用噪,把先保存的狀態(tài)值d和狀態(tài)值f與運(yùn)算后得到新的當(dāng)前狀態(tài)值g。
這里執(zhí)行l(wèi)d與and產(chǎn)生區(qū)別是在于:and指令沒(méi)有分支景顷,而ld指令產(chǎn)生分支誓籽,程序執(zhí)行前的狀態(tài)值需要保存。同樣强男,在遇到分支合并時(shí)洪业,需要使用到先前保存的狀態(tài)值。根據(jù)梯形圖的編寫(xiě)規(guī)則眨仪,狀態(tài)值的保存和使用是一種先進(jìn)后出的結(jié)構(gòu)峭桅,所以可以使用進(jìn)棧和出棧的方法來(lái)實(shí)現(xiàn)。指令的具體實(shí)現(xiàn)過(guò)程歸納如下:凡是遇到產(chǎn)生分支的指令柑爸,例如ld指令吵护,需將當(dāng)前狀態(tài)值進(jìn)棧保存,取當(dāng)前操作元件的狀態(tài)作為當(dāng)前狀態(tài)值;凡是遇到分支合并的指令表鳍,例如orb馅而、anb指令,需將棧頂值出棧與當(dāng)前狀態(tài)值運(yùn)算成為新的當(dāng)前狀態(tài)值譬圣。
在具體實(shí)現(xiàn)時(shí)瓮恭,采用了另一種形式的棧。由于三菱fx系列plc的ld連續(xù)使用不能超過(guò)八次厘熟,因此采用一個(gè)可以位尋址的片內(nèi)ram字節(jié)作為椡捅模空間來(lái)存放當(dāng)前狀態(tài)值。如果使用椛蹋空間的最高位作為當(dāng)前狀態(tài)值登澜,每次壓棧就把該字節(jié)進(jìn)行不帶進(jìn)位的循環(huán)右移笨农,出棧時(shí)反之。在ld x000指令執(zhí)行后帖渠,進(jìn)棧狀態(tài)a沒(méi)有出棧,ld x010指令又進(jìn)棧保存當(dāng)前狀態(tài)值资担,以前的壓棧值a廢之不用旬效,即每條與母線相連的ld指令產(chǎn)生壓棧值都不出棧。這樣避免了因使用pushpop指令用一個(gè)字節(jié)的空間來(lái)保存一位的當(dāng)前狀態(tài)值造成的ram利用效率低的問(wèn)題踱孕。
ld x010后的指令執(zhí)行過(guò)程如下:ld x010 把當(dāng)前狀態(tài)值h壓棧讯匈,取x010的狀態(tài)作為當(dāng)前狀態(tài)值i;ld x011把當(dāng)前狀態(tài)值i壓棧,取x011的狀態(tài)作為當(dāng)前狀態(tài)值j;and x012 把當(dāng)前狀態(tài)值j和x012的狀態(tài)與運(yùn)算后得到當(dāng)前狀態(tài)值k;ld x013把當(dāng)前狀態(tài)值k壓棧将窗,取x013的狀態(tài)作為當(dāng)前狀態(tài)值l;and x014把當(dāng)前狀態(tài)值l和x014的狀態(tài)與運(yùn)算后得到當(dāng)前狀態(tài)值m;orb 彈出壓棧值k和當(dāng)前狀態(tài)值m或運(yùn)算后得到新的當(dāng)前狀態(tài)值m;or x015把當(dāng)前狀態(tài)值m和x015的狀態(tài)或運(yùn)算后得到當(dāng)前狀態(tài)值n;anb彈出壓棧值i和當(dāng)前狀態(tài)值n與運(yùn)算后得到新的當(dāng)前狀態(tài)值o;outy002 把當(dāng)前狀態(tài)值寫(xiě)到y(tǒng)002的輸出鏡像寄存器策坏。
4 檢查程序
接收到程序后,在程序執(zhí)行之前泻畏,還需對(duì)程序的語(yǔ)法正確性進(jìn)行檢查烈肉。這里只介紹與程序狀態(tài)值棧相關(guān)指令的語(yǔ)法檢查。
首先]需要設(shè)置一個(gè)位標(biāo)志en_bus和一計(jì)數(shù)器ld_n委丈。enbus表示下一指令能夠與plc梯形圖中的母線相連甩高。計(jì)數(shù)器ld_n表示自與母線相連的指令之后由于ld指令引起的堆棧次數(shù)。檢查程序之前什偷,初始化如下:
en _bus=1
ld_n=1
檢查程序時(shí)霸督,如果遇到ld指令,程序流程如圖3(a);如果為orb或anb指令衅疙,則ld_n=ld_n-1;如果為out等與零母線相連的輸出指令莲趣,程序流程如圖3(b)。
這些基本操作執(zhí)行后饱溢,如果檢測(cè)到ld _n大于8喧伞,說(shuō)明連續(xù)ld指令太多,程序狀態(tài)值椑砼螅空間溢出;如果ld_n等于0絮识,說(shuō)明anb或orb指令數(shù)多于與ld指令,數(shù)量不匹配嗽上。還有些指令例如程序標(biāo)號(hào)p次舌、循環(huán)范圍終止符next等必須與母線相連。如果這些指令出現(xiàn)在en_bus=0的情況下兽愤,說(shuō)明該程序有錯(cuò)彼念。
5 結(jié)束語(yǔ)
這種以單片機(jī)構(gòu)建的plc系統(tǒng)成本低,系統(tǒng)可擴(kuò)展性好浅萧,可以方便得加上a/d逐沙、d/a等功能,應(yīng)用領(lǐng)域廣泛。
聲明:本網(wǎng)站所收集的部分公開(kāi)資料來(lái)源于互聯(lián)網(wǎng)蔓酣,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享柴羞,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),也不構(gòu)成任何其他建議载甸。本站部分作品是由網(wǎng)友自主投稿和發(fā)布稳嘁、編輯整理上傳,對(duì)此類(lèi)作品本站僅提供交流平臺(tái)齐犀,不為其版權(quán)負(fù)責(zé)托习。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻、圖片滥捣、文字如涉及作品版權(quán)問(wèn)題虏淋,請(qǐng)第一時(shí)間告知,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國(guó)家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容沦昆,以保證您的權(quán)益尸查!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn。
- 暫無(wú)反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力蒋川,智啟未來(lái)新篇章
- 定義制造業(yè)未來(lái)的數(shù)控加工中心技術(shù)專(zhuān)題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專(zhuān)題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專(zhuān)題
- 精密智能機(jī)床撩笆,助力制造升級(jí)技術(shù)專(zhuān)題
- 汽車(chē)輕量化驅(qū)動(dòng)下的零部件加工應(yīng)用專(zhuān)題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專(zhuān)題
- 航空航天發(fā)動(dòng)機(jī)解決方案專(zhuān)題
- 高效齒輪加工生產(chǎn)技術(shù)方案專(zhuān)題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專(zhuān)題