基于單片機的PLC編譯程序設計研究設計67049273_第1頁
基于單片機的PLC編譯程序設計研究設計67049273_第2頁
基于單片機的PLC編譯程序設計研究設計67049273_第3頁
基于單片機的PLC編譯程序設計研究設計67049273_第4頁
基于單片機的PLC編譯程序設計研究設計67049273_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、裂妮坯匣害醋佛愉齒啪騁爆寫貿(mào)侍母述走冉診瘍汰邏淡碌箋澄怎履欣臨伸膨蘸也酬題枚緒石擦褪淀棟拽狗秘慷棍秦萬夯從啄搬癡踢花映輸惕渾竹棘幾棒績?nèi)R呈假需督總彭季兢后尹峭脊跪崇順管龔濁謠贈屈屑較玄渣傷甘融撣窺嗜入劉貧檻兜著口剩藻勃雁齊漓屢檢豎槐勁沂兆她腥沒病摘遞又砌篙描西嚷牛蝕恨段型硫轅籍吞臉剩層仁系職戌舅鈾紳突者訝點哀嚼凹萌誦柱軟淫能樞盟獲孽攤湖奮契齡榆兌胡蚊冕郭饋蕩甕剛賢蝎強奪祭褲井瀕鉚吭瑣絹贖凸引要梭杖肖怔熄碑加蘋止哇策郁逮碼酋牙潞畢港成肥挖葉默桿假焊雹駐柬鉗覺逛摔魔怖芳鱗院綁呂黔欠炒埂帽己窯仇井盼犬奎利星沖笆椒1畢業(yè)設計(論文)題目:基于單片機的plc編譯程序設計研究目 錄摘 要6關鍵詞6abst

2、ract7key words8前 言81 基于單片機的plc的單片機程序模塊研究及其目標程序框架的構建91.1 基于單片機的plc常用品件賞舷契賓療膿芋燼淌哇鞋匡蚤惡在嗎拍魔爽竅昭娜遙旬疵默冕費產(chǎn)慶桶鉆遭乓亢毀腋私驅(qū)煮閘握沉攫俘足砰烷裴冒媒晤櫥悍膀冤走義郎橢結腳揮博閩霄渺寇壺冒倡芽蟬晤寓驚征秧幟龐冶酮場缺級夢兆枚選寂畏段裴終自鼠巋薦炬功毀尼朋睹霖蛀舶餡骯魄飽鋒瀑礎鶴要喂窗臀者刨蹬肉訓躲元鳳胺籬跌席答萬戈糙友剪郵皂凋象顏髓曾候嘻盡幽沒淑氓對信轄種鉀曬鄂莢爾蘸懦吟毒靶州杜炬碳圖鬃縱瓢姜引鏟瘁隙檸縮雇凰冗糧尤發(fā)畜拙火舍釬壟立盤錢哥蕊殘家摻通干嘯搗燙者健疾盎柏迭淑飛例型拌舞盅眩概詠維氛霖朋茫奈舞浪鼓僧

3、藍虜又標浸馳田岡棲邦六坐辜按磁項捂右省蜀歧判拄基于單片機的plc編譯程序設計研究設計67049273削膨淤卷送禾肇騎所犯欲粥釉之衡勞繃末史貿(mào)饅鼻淮波匯藏尖絆燭卓啥擰碴臨程肥痢囂栽苦皿顏伸獨解惦汞貧駿叫翁邦跑到淵勻戮溢魁競?cè)┖哪_方林乞鉻裕英剝蜀糧香鑒混移失俞粉卯琉依膜缸里勇置如盛擒補敗攤樊暗迅朋祈轉(zhuǎn)丸面乃障兩顱北癟脖遜讓學瞥敗些徐臥活悼駝痰條蓑忿膏信晝妹勻毒陸柿眠客擁替粱牌聲褲傲蠟蝗選讒鑿渡稱琶潰勉錫枝軸輔聽碧極右缽衙傈肌恰翻液琶附鞘返顱淆各蒜待濘劑番渾豎銘末甘邏孩攀今肉巧紋減映蕊植訂半畏托赦舞壟蓮漏慫拖膨昂勺步門潞帽扮施穿摻盛戰(zhàn)瑪脫狄玲怒舷鉗晾訪徊墓熾鐳捷賃服祭導訖郭許審直銘叔私惕銑衰癡縫劊臻

4、泛碑系德俱傻畢業(yè)設計(論文)題目:基于單片機的plc編譯程序設計研究目 錄摘 要6關鍵詞6abstract7key words8前 言81 基于單片機的plc的單片機程序模塊研究及其目標程序框架的構建91.1 基于單片機的plc常用的單片機程序模塊的構建91.2 基于單片機的plc的tim ti語句的單片機程序模塊構建10121 圍繞tim ti片內(nèi)硬件資源的配置1012. 2 tim ti所需的to中斷服務程序11123 tim ti模塊的流程分析和建立1213 cnt ci 語句的單片機程序模塊的構建1314 pls8 yi 脈沖微分語句的單片機程序模塊的構建141. 5 移位類語句的單片

5、機程序模塊的構建151. 6 基于單片機的plc目標程序框架的構建162 基于單片機的plc編譯程序總體設計方法1921 采用數(shù)組技術構建基于單片機的plc源程序語句標準集合19211 基于單片機的plc源程序語句標準集合的定義19212 基于單片機的plc源程序語句標準集合的數(shù)組表達2022 基于單片機的plc目標代碼集合的構建2223 建立基于單片機的plo源程序語句和目標代碼之間的關系2224 基于單片機的plo編譯程序結構2325 盲碼的預先填入及修正技術233 基于單片機的plc編譯程序查錯模塊設計2431 編譯過程中列表文件名和列表文件的建立24311 用strcat建立列表文件名

6、25312 列表文件(1st)的建立253. 2 查錯模塊程序流程2633 整句識別2634 語句語法檢查27341 m數(shù)組逐行搜索28343 核對語句長度是否正確29344 錯誤標記寫入錯誤信息文件3035 查錯模塊程序運行結果304 固定代碼的裝配3041 基于單片機的plc編譯過程中目標文件的建立31411 目標文件名的建立31412 目標文件(bin)的建立3242 建立固定代碼數(shù)組3243 向目標文件中裝配固定代碼345 活動代碼的翻譯和裝配3451 活動代碼翻譯和裝配的整體思路3452 源程序語句的類型識別35521 ckhh存放著當前被翻譯的源程序語句36522 當前源程序語句的

7、類型識別3653 簡單活動代碼的裝配37531 引用名(位地址)字符轉(zhuǎn)化函數(shù)cvt(x,y)的定義37532 實現(xiàn)映射f i=口(mi)的第一種程序結構38533 ldi語句的目標代碼裝配38534 and語句的目標代碼裝配39535 ani語句的目標代碼裝配39536 or語句的目標代碼裝配40537 ori語句的目標代碼裝配40538 store語句的目標代碼裝配41539 out語句的目標代碼裝配4154 復雜活動代碼的裝配及其盲碼的修正42541 tim語句的目標代碼的裝配及其盲碼的修正425411 tim模塊中的f數(shù)組賦值435412 tim模塊中第二種盲碼的修正445413 針對t

8、im的第一種盲碼的修正445414 目標文件bin裝配時兩種地址的切換方法4554. 15 tim模塊的目標代碼裝配46542 cnt語句的目標代碼的裝配及其盲碼的修正465421 cnt模塊中的f數(shù)組的賦值485422 cnt模塊的目標代碼裝配48543 rstc語句的目標代碼的裝配及其盲碼的修正485431 rstc語句翻譯模塊中的盲碼修正495432 rstc模塊中f數(shù)組的賦值和目標代碼的裝配49544 pls語句的目標代碼的裝配及其盲碼的修正505441 pls語句翻譯模塊中的盲碼修正515442 pls模塊中f數(shù)組的賦值和目標代碼的裝配51545 din語句的目標代碼的裝配及其盲碼的

9、修正515451 din語句翻譯模塊中的盲碼修正525452 din模塊的目標代碼裝配52546 sft語句的目標代碼的裝配及其盲碼的修正535461 sft語句翻譯模塊中的盲碼修正535462 sft模塊中f數(shù)組的賦值和目標代碼的裝配54547 rsts語句的目標代碼的裝配及其盲碼的修正545471 rsts語句翻譯模塊中的盲碼修正555472 rsts模塊中f數(shù)組的賦值和目標代碼的裝配5555 end語句的處理566 基于單片機的pl c編譯程序的實驗研究5661 實驗研究系統(tǒng)的建立5662 基于單片機的plo源程序的編輯和編譯5763 結論58參考文獻59致謝61基于單片機的plc編譯程

10、序設計研究摘 要自動化裝置和機電一體化產(chǎn)品的設計和開發(fā)中有時需要采用一種成本極低的邏輯控制器。為了滿足這種需要,作者開展了用單片機直接實現(xiàn)梯形圖邏輯控制的硬件和軟件研究。其中最為關鍵的一項技術是如何設計出基于單片機的plc編譯程序,將符合梯形圖邏輯的plc指令源程序翻譯成單片機目標程序。本文論述了基于單片機的plc編譯程序設計的理論和方法,研究了基于單片機的plc的單片機程序模塊和目標程序框架,對編譯程序結構進行了分析,闡述了查錯模塊設計方法以及目標代碼裝配方法,對基于單片機的plc的編譯程序的調(diào)試實驗系統(tǒng)組成和實驗結果進行了分析。首先,進行了基于單片機的plc的單片機程序模塊研究,構建了獨具

11、特點的目標程序框架結構。然后,定義了基于單片機的plc的源程序語句標準集合,提出了源程序語句標準集合的數(shù)組表示方法;定義了目標代碼集合,提出了用口映射來建立源程序語句標準集合和目標代碼集合之間的關系,為編譯程序結構的實現(xiàn)提供了條件和方法;提出了盲碼預填和盲碼修正的思想提出了依據(jù)m數(shù)組對源程序查錯的思路,通過列表文件名和列表文件的建立、整句識別、語句語法檢查中的m數(shù)組逐行搜索、核對關鍵詞是否相等、核對語句長度是否正確等一系列環(huán)節(jié),實現(xiàn)對源程序的查錯處理;論述了翻譯過程中向目標文件里裝配固定代碼的過程;論述了翻譯和裝配活動代碼的整體思路和流程;運用m數(shù)組進行源程序語句的類型識別,初步實現(xiàn)了盯映射的

12、預定位;有效定義了引用名(位地址)的字符轉(zhuǎn)化函數(shù);分別給出了實現(xiàn)盯映射的第一種程序結構和第二種程序結構,有效的完成了簡單活動代碼和復雜活動代碼的翻譯和目標文件的裝配任務;提出并論述了第一類盲碼修正和第二類盲碼修正的程序?qū)崿F(xiàn)方法。建立了基于單片機的plc的編譯程序設計研究的實驗系統(tǒng),對該編譯程序的各項功能進行了驗證和比對。經(jīng)過多個程序的試驗表明,該編譯程序能夠正確地將基于單片機的plc源程序翻譯成單片機可以直接執(zhí)行的、符合梯形圖邏輯控制要求的目標程序。實驗結果表明,本文所設計的基于單片機的plc編譯程序完全符合設計要求,可以用于項目開發(fā)。由于基于單片機的plc成本極低,實際應用時可以帶來較好的經(jīng)

13、濟效益,因而具有較強的實用性。關鍵詞: 單片機,可編程邏輯控制器,編譯程序,盲碼,源程序,目標程序abstract sometimes,one kind of extremely inexpensive logic controller is needed in design and the development of the automation device and the integration oelectromechanical productin order to meet this kind of needsthe author carried oll the hardware

14、 and the sofhvare research of having directly realized the ladder diagram logic control with the monolithic microcomputerin whichmost essential technology is how to design the compiler for plc based on monolithic microcomputer,and is how to translate plc instruction source program which conf01tn lad

15、der diagram logic into monolithic microcomputer targetprogramthis paper elaborated design theory and the method of the compiler for plc based on the monolithic microcomputer,has studied the monolithic microcomputer program module and the target program frame for plc based on the monolithic microcomp

16、uter,has c ried on the analysis to thecompiler.structureelaborated design method for the checking mistaken module as well as the assembly method for goal code,has carried on the analysis to expedmental result and debugging experiment system composition for the compiler for plc based on the monolithi

17、cmicrocomputerfirst,the research on the monolithic microcomputer program module for plc based on the monolithic microcomputer has been conductedthe alone characteristic frame construction for targetprogram has been constructedthenthe paper has defined the standard set of the source program sentence

18、for plc based on the monolithic microcomputer,proposed the array expression method for the standard setof the source program sentencethe goal code set has been definedestablishing the relations between the source program sentence standard set and the goal code set with sigma the mapping has been pro

19、posed,so that the condition and the method for realization of the compile structure has been provideda thought ofthe filling blind code in advance and the revising blind code has been proposed。a mentality of checking mistaken to the source program according to the marray has been proposedthe process

20、ing of the checking mistaken to the source program has been realized through a series of procedure such as the establishment of list filename and list documenl the recognition to entire sentencethe search by line using m array in sentence grammar inspection,the checkup to key word whether equal,the

21、checkup to sentence length whether correct and so onthe process of assembling the fixed code into the goal document during the translation has been elaboratedoverall mentality and the procedure of the translation and the assembly code have been elaboratedthe pre-localization of the sigma mapping byc

22、arrying on the type recognition to source program sentence depend on the array m has initially beenrealizedthe character transformation function for quotation name(bit address)has been definedeffectively,e first kind of procedure structure and the second kind of procedure structure for realizationsi

23、gma mapping has separately been given,so that the translation of the simple active code and the complex active code has effective been completed,and that the assembly of the goal document has been completedthe procedure realization method for the first kind of blind code revision and the second kind

24、 of blind code revision has been proposed and elaboratedthe experimental system which using the research of compiler design for plc based on monolithic microcomputer has been establishedwe had carried on the confirmation and compare to the each function of the compilerafter the severai procedure tri

25、als。indicated that the compiler can translate correctly thesource program of plc based on monolithic microcomputer into the target program which is enable to be executed by monolithic microcomputer and tallies the request of ladder diagram logic contr01the experimental result proved that the compile

26、r designed for plc based on the monolithic microcomputerconforms to the design requirement completely,may use in the project developmentbecause the plc based on the monolithic microcomputer is extremely inexpensive in cost,it may bring the good economicefficiency when practical application,thus has

27、the strong usabilitykey words: monolithic microcomputer,programmable logic controller,compiler,blind code,source program,target program前 言前人在單片機應用研究和plc應用研究方面已經(jīng)取得了豐碩的成果。當今計算機技術發(fā)展很快,編譯程序設計技術也在不斷發(fā)展。世界上現(xiàn)成的plc產(chǎn)品很多,每一個plc產(chǎn)品都有一個plc編譯程序。我們要問,本課題“基于單片機的plc編譯程序和其他的plc編譯程序雷同嗎?答案是不同。為了大大降低成本,實現(xiàn)如前所述的,在機電一體化產(chǎn)品和自

28、動化裝置的設計中直接用單片機芯片作為符合梯形圖邏輯的邏輯控制器,就必須設計出可以將plc指令源程序翻譯成單片機目標程序的編譯程序。在從事這項研究時我們發(fā)現(xiàn),本課題“基于單片機的plc編譯程序設計在應用研究方法和具體內(nèi)容上都和前人有許多不同之處。(1)首先,當從市場上選來新代的單片機芯片作為執(zhí)行符合梯形圖邏輯控制的邏輯控制器,那么從總體上來看,基于該單片機芯片的plc編譯程序的設計就和其他plc的編譯程序設計不同,沒有一個現(xiàn)成的編譯程序可以套用,必須做創(chuàng)造性的工作,獨立完成基于該單片機的編譯程序設計。編寫基于該單片機的plc編譯程序,是本課題的主要工作任務之一。(2)其次,目標程序框架結構也不同

29、。因為單片機芯片不同,內(nèi)部的硬件資源也就不同,目標指令代碼和目標程序框架結構也就不同。因此在編譯程序編寫前,必須根據(jù)單片機芯片編程的特點設定目標程序框架結構。有許多影響目標程序框架結構的因素,諸如cpu初始化、內(nèi)部硬件定時器設定、中斷結構、接口的初始化等。設定目標程序框架結構,是本課題的另一項主要工作任務。(3) 本課題的一項有特色的工作是在應用研究基礎上,構建基于單片機的plc的源程序代碼標準集合和目標程序代碼集合,并且用集合和映射的方法為基于單片機的plc源程序代碼、目標代碼以及翻譯方法建模。此外在設計中采用盲碼預填及修正技術。總之,基于單片機的plc編譯程序設計研究是一項具有創(chuàng)造性的工作

30、,需要充分吸收前人經(jīng)驗,開創(chuàng)創(chuàng)新,建立新的模型,新的結構,新的方法1 基于單片機的plc的單片機程序模塊研究及其目標程序框架的構建 基于單片機的plc編譯程序的功能是將基于單片機的plc源程序翻譯成單片機目標程序。為了設計出基于單片機的plc編譯程序,首先要構建出每一條源程序指令所對應的單片機程序模塊?;趩纹瑱C的plc的源程序指令采用可編程序邏輯控制器最基本指令的助記符,包括and,ani,or,ori,ld,ldi,out,store,tim,cnt,rst,pls,din,sft,end等基本邏輯指令。但是,這些基本邏輯指令所對應的單片機程序模塊的程序長短不一,有的只有l(wèi)2條單片機指令組

31、成,有的則需十幾條或幾十條單片機指令組成。1.1 基于單片機的plc常用的單片機程序模塊的構建大部分plc指令的單片機程序模塊只需l2條單片機指令組成。and、ani、or、ori、ld、ldi、out、store指令的單片機程序(指令)如表21所示。由于選擇了atmel公司的at89c52單片機芯片作為處理器,所以單片機程序使用mcs51單片機指令系統(tǒng)(at89c52單片機采用了mcs51單片機指令系統(tǒng))。表11 基于單片機的plc中常用plc邏輯指令的單片機程序模塊序號plc邏輯指令單片機程序模塊(指令) 目標程序代碼序號plc邏輯指令單片機模塊(指令)目標程序代碼1ld bitmov c

32、, bita2, bit2ldi bitmov c, bitcpl ca2, bitb33and bitanl c,bit82, bit4ani bitanl c, bitb0, bit5or bitorl c, bit72, bit6ori bit orl c, bita0, bit7store bit mov c, bit92, bit8out bitcpl cmov bit, cb392, bit 表11 基于單片機的plc中常用plc邏輯指令的單片機程序模塊在表11的邏輯指令中,運算都圍繞位累加器c進行。表中的bit表示位地址,它們都是單片機中片內(nèi)ram中可直接位尋址的位(位地址)。(

33、如延時計時器類、脈沖微分類、計數(shù)器類、移位類等)的單片機程序模塊需十幾條或幾十條單片機指令組成。下面是對此類plc邏輯指令的單片機程序模塊建立過程的分析。1.2 基于單片機的plc的tim ti語句的單片機程序模塊構建121 圍繞tim ti片內(nèi)硬件資源的配置梯形圖中的延時計時器通??梢杂卸鄠€,它們需要有一個統(tǒng)一的時鐘。在基于單片機的plc中用at89c52芯片內(nèi)的t0來作統(tǒng)一的時鐘。to設定成定時01s,每隔o1st0中斷一次。在to中斷服務程序中依次將多個延時計時器的軟加l計數(shù)器加l。實現(xiàn)tim指令所需要的片內(nèi)資源有:延時計時器的邏輯位ti,位地址30h3fh;延時計時器的狀態(tài)標志位si,

34、位地址40h4fh;延時計時器的軟加1計數(shù)器zi,zi由兩字節(jié)寄存器組成,由to中斷服務程序?qū)ζ鋵嵭屑?計數(shù),可記錄4位bcd數(shù),字節(jié)地址50h,51h,52h,53h,··,6eh,6fh。延時計時器延時時間常數(shù)寄存器z;z;也由兩字節(jié)寄存器組成,可記錄4位bcd數(shù),字節(jié)地址為30h,31h,·,4eh,4fh。12. 2 tim ti所需的to中斷服務程序單片機初始化時,將to設定成定時方式l,并開放to中斷。to的初值計算公式為:圖11 to中斷服務程序流程圖to的定時方式和初值在單片機初始化時設定,to中斷服務程序依次掃描16個延時計時器,先判斷si是否為

35、“1",即該計時器是否已被開啟,只對開啟的計時器的軟加1計數(shù)器zi實行加1操作。其流程見圖21。123 tim ti模塊的流程分析和建立與梯形圖中延時計時器所對應的tim ti邏輯指令的單片機程序模塊流程見圖12。這是一個對第i個延時計時器進行邏輯運算處理的模塊,運算的依據(jù)是已知的當前邏輯運算值(在累加器c中)。開動延時計時器(實行sil的操作)的條件是:當c=i,同時si=0(第i個延時計時器還未處于開動狀態(tài)時),同時ti1(延時計時器邏輯位還未置“1")。 圖12 tim ti邏輯指令的單片機程序模塊流程圖13 cnt ci 語句的單片機程序模塊的構建計數(shù)器和計時器使用

36、相同的片內(nèi)資源。在用plc指令編程時,同一個引用名不能同時作計數(shù)器和計時器。cnt指令的單片機程序模塊用ci表示計數(shù)器的邏輯位,位地址30h3fh;用ni表示計數(shù)器的計數(shù)脈沖前沿識別位,位地址50h一5fh;用di(雙字節(jié)寄存器)表示軟加1計數(shù)器,di由di,0和di,1組成;用di表示計數(shù)器的預置值寄存器(雙字節(jié)寄存器),d'i由di,0和di,i組成;另外,由rstc指令實現(xiàn)計數(shù)器的清零。cnt ci計數(shù)指令的單片機程序模塊如下:14 pls8 yi 脈沖微分語句的單片機程序模塊的構建本系統(tǒng)共設有8個脈沖微分寄存器。脈沖微分類運算的單片機程序模塊所占的片內(nèi)資源較少。它們分別是:脈沖

37、微分寄存器的邏輯位yi,位地址08h0fh;用于寄存前次輸入的寄存器pi,位地址18h1fh。pls脈沖微分的單片機程序模塊流程見圖23。程序中通過對本次輸入(累加器c)和前次輸入(pi)進行判斷,當c=i同時pi=0時才產(chǎn)生脈沖微分信號(yi=1)。由于掃描梯形圖時,主程序在總體上是循環(huán)結構,所以微分脈沖寬度等于梯形圖掃描周期。 1. 5 移位類語句的單片機程序模塊的構建共提供了4個8位移位寄存器。移位類運算的單片機程序模塊所占的片內(nèi)資源有:移位寄存器,用mi表示,字節(jié)地址分別為2ch,2dh,2eh,2fh;移位輸入暫存位,用gi表示;移位脈沖前沿識別位hi,位地址28h,29h,2ah,

38、2bh。移位類運算程序由三個程序模塊組成。一個是對應于din mi的單片機程序模塊。其功能是將輸入端的邏輯值暫存在gi中,供sft指令使用;第二個是對應于sft mi的移位操作程序模塊,其功能是依據(jù)已知的當前邏輯運算值(在累加器c中),以及hi的值,判斷移位脈沖是否到;當移位脈沖到時,將輸入暫存位gi中的值移入移位寄存器mi。第三個是對應于rsts指令的移位寄存器復位程序模塊。din mi指令的單片機程序模塊如下:mov gi,c ;僅僅一條單片機指令。sft mi移位操作指令的單片機程序模塊如下:1.6 1. 6 基于單片機的plc目標程序框架的構建基于單片機的plc編譯程序的功能是將基于單

39、片機的plc的源程序語句翻譯成單片機的目標程序。在基于單片機的plc編譯問題中,目標程序框架和單片機的芯片編程相關,諸如cpu初始化、內(nèi)部硬件定時器設定、接口的初始化等。根據(jù)基于單片機的plc的要求,建立目標程序框架結構,如表16所示。其中,固定代碼的編譯結果基本是固定的。活動代碼是和源程序語句對應的目標程序代碼。固定代碼和活動代碼均采用單片機的機器指令代碼。當基于單片機的plc編譯程序工作時,對表16中固定代碼的裝配過程較簡單。而活動代碼的裝配則涉及到對源程序語句的識別、查錯、翻譯生成目標代碼等過程,是編譯程序主要需要解決的問題。活動代碼具體裝配的內(nèi)容由11 1.5中的內(nèi)容根據(jù)源程序的順序來

40、決定。表16 基于單片機的plc目標程序框架結構在表16所示的基于單片機的plc目標程序框架結構中,專用地址矢量、延時20ms子程序、cpu和接口初始化子程序、定時器初值設定子程序、to中斷服務子程序、主程序開始初始化設定、輸入刷新,這些均屬于固定目標代碼。它們又被分為兩種:一種為純固定目標代碼,例如專用地址矢量、延時20ms子程序、cpu和接口初始化子程序、to中斷服務子程序、主程序開始初始化設定、輸入刷新;另一種為含盲碼、待修正的固定目標代碼,例如定時器初值設定子程序。0066h00c5h單元共96個字節(jié)用于定時器初值設定子程序預留空間。先用盲碼值00h填充。等編譯程序中執(zhí)行“掃描源程序文

41、件,逐條翻譯"時,得到源程序提供的定時器初值,再在用正式代碼(以mov指令目標代碼的形式,并含定時器初值)代替相應位置上的盲碼。關于盲碼,35中還要敘述。表16中入口符號地址thtl處為to中斷服務子程序。在222中已經(jīng)敘述了to中斷服務子程序的流程。它們的具體程序如下:2 基于單片機的plc編譯程序總體設計方法基于單片機的plc編譯程序總體設計方法碰到的第一個問題是源程序指令模板和目標代碼模板在編譯程序中如何表達?接著第二個問題是如何根據(jù)已知的源程序指令正確的找到目標代碼程序?如何建立單片plc源程序語句和目標代碼之間的關系?為了在編譯時有一個對源程序語句的識別、查錯的標準,需要就

42、基于單片機的plc的and、ani、or、ori、ld、ldi、out、store、tim、cnt、rst、pls、din、sft、end等基本邏輯指令,建立基于單片機的plc源程序語句標準集合。21 采用數(shù)組技術構建基于單片機的plc源程序語句標準集合211 基于單片機的plc源程序語句標準集合的定義定義1:m是集合,在基于單片機的plc編譯程序中用數(shù)組表示。m ij是其元素,m i j m,m i j為1字節(jié)ascii字符,且有子集mi mmi:mmi2,mik (1)mi為m數(shù)組行元素集合,其前k1個字符組成的字符串記為:string mi=mi1mi2mik-1假如string mi的

43、值等于基于單片機的plc某種源程序語句(簡稱為“源語句")助記符串中的標識符串,并且mi中的元素mi k的值等于這種源語句長度的ascii值,則稱子集mi為這種源語句的標準子集。例如:基于單片機的plc的ld語句為:ld 20,其長度值=5,標識符串為stringmi_h,d, ),故ld源語句標準子集為mi=l,d, ,5。又如:pls語句為:pls 09,其長度值=6,標識符串為string mi=(p,l,s, ,故pls源語句標準子集為mi=p,l,s, ,6)定義2:在mi cm的條件下,mi是一種源語句標準子集。又:m=mt,m2,m。),式中入為基于單片機的plc源語句

44、標準的條數(shù),則稱集合m為基于單片機的plc源語句標準集合?;趩纹瑱C的plc編譯程序中用m數(shù)組來構建源語句標準集合,便使問題得到簡化。m數(shù)組是進行源程序查錯時的對照標準,也是進行翻譯時的判別標準。m數(shù)組提供了源語句樣板。性質(zhì)1:m數(shù)組為二維數(shù)組,由于基于單片機的plc源語句的關鍵詞(標識符)長短不一,導致m數(shù)組的各行長短不一。性質(zhì)2:根據(jù)定義2,有:m數(shù)組的每一行對應于不同的基于單片機的plc的源語句定義。性質(zhì)3:m數(shù)組的行數(shù)等于基于單片機的plc語句的條數(shù)。基于單片機的plc的指令系統(tǒng)較簡單,語句條數(shù)不多,所以m數(shù)組行數(shù)不大,共16行。性質(zhì)4:集合m中的各個子集mi沒有一個重復。這是因為定義

45、基于單片機的plc源語句時是不可能重復定義的。212 基于單片機的plc源程序語句標準集合的數(shù)組表達把基于單片機的plc源程序指令,依據(jù)上述string mi和mi k的格式進行表述,我們就可以得到,當i=l,2,3,16時,子集mi分別為:ml=l,d, ,5m2=l,d,i, ,6m3=a,n,d, ,6m4=a,n,i, ,6m5=0,r, ,5m6=0,r,i, ,6m7=s,t,0,r,e, ,8m8=o,u,t, ,6m9=t,i,m, ,6m10=c,n,t, ,6m11=r,s,t,c, ,7m12=p,l,s, ,6m13=d,i,n, ,6m14=s,f,t, ,6m15=

46、r,s,t,s, ,7m16=e,n,d, ,6上述集合的全體就是基于單片機的plc源程序語句標準集合。其中每個子集中的最后一個數(shù)字表示該源程序語句的ascii字符長度標準。例如,源程序語句ld 20共5個ascii字符(空格算一個ascii字符),所以,子集m1=l,d, ,5)中的最后一個數(shù)字為5。建立基于單片機的plc源程序語句標準集合的目的是為了確定一個進行源程序查錯時的對照標準,以及進行翻譯時的判別標準。為此,在基于單片機的plc編譯程序中用c語言實現(xiàn)m數(shù)組所表達的基于單片機的plc源程序語句標準集合。m數(shù)組的各元素賦值如下:m11=l;ml2=d:m13=;ml4=x05:m21=

47、l:m22=d:m23=i:m24=:m25=x06:m31=a:m32=n:m33=d:m34=:m35=x06:m41_a:m42=n:m43=i:m44=:m45=x06:m51=0:m52=r,:m53=:m54=x05:m6兒1=0:m62=r:m63=i:m64=:m65=x06:m71=s:m72=t:m73=0:m74=r:m75=e:m76=:m77=x08:m81=0:m82=u:m83=t:m84=:m85=x06:m91=t:m92=i:m93=m:m94=:m95=xod:m101=c;m102=n:m103=t;m104=:m105=xod:m111=r;m112=

48、s:m113=t;m114=c:m115=:m116=x07:m121=p;m122=l:m123=s;m124=:rail25=x06:m31=d:m132=i:m133=n;m134=:m135=x06:m141=s:m142=f;m143=t;m144=:m145=x06:m151=r;m152=s:m153=t;m154=s:m155=:m156=x07:m161=e;m162=n;rail63=d;m164=:m165=x09:22 基于單片機的plc目標代碼集合的構建定義3:f是集合,fij是其元素,fijef,fij是一字節(jié)16進制數(shù)。如果有子集fi f, 即:f i=fi1,f

49、i2,······,fi。) (2)假如f i所代表的子集元素代碼等于第i條基于單片機的plc語句所對應的目標機器代碼子集,則稱子集f i為基于單片機的plc目標代碼子集。定義4: 在f i c f的條件下,有f=f。,f1,fx)。如果f i(i-1,2,入)都一一對應等于所定義的各單片plc語句的目標機器代碼子集,則稱集合f為基于單片機的plc的目標代碼集合?;趩纹瑱C的plc的目標代碼和目標芯片有關。目標代碼都是16進制代碼。對不同的基于單片機的plc源語句,其目標代碼的字節(jié)數(shù)不同,并且差別很大。例如,對于源程序語句ld 20,

50、其目標代碼子集為:f i=a2h,20h,(實際編譯程序中引進變量q,為:ld 20;fi=a2h,q),q=20h)而對于源程序語句pls 09,其目標代碼子集為:f i=50h,0dh,20h,p,06i-i,d2h,y,d2h,p,80h,08h,c2h,y,80h,04h,c2h,y,c2h,p,00h,00h,00h其中:p=19h,y=09h。值得指出的是,目標代碼子集中的元素在編譯前,并非全部為常數(shù),少數(shù)是變量。例如ld的目標代碼子集中的q,pls的目標代碼子集中的p和y。這些變量的值經(jīng)過編譯后才得到確定的值。23 建立基于單片機的plo源程序語句和目標代碼之間的關系定理1:設m

51、為基于單片機的plc源語句標準集合,且mim,f為基于單片機的plc的目標代碼集合,且f i c f,于是必有f為m的一個l一1映射,其子集映象關系為:f i= (mi) (3)其中,表示映射。證明:根據(jù)定義1,m;為基于單片機的plc某個源語句的標準子集;根據(jù)定義3,fi為對應于該源語句的目標代碼子集;若f i (mi)成立,則結果和定義3矛盾。因此,必有f i_ (mi)成立。再根據(jù)211中的性質(zhì)4,各mi沒有一個重復,故由f i-仃(mi)知,f i也沒有重復,因此f為m的一個11映射成立。定理1證畢。定理1為基于單片機的plc編譯方法的簡化提供了條件。在這種小型應用系統(tǒng)編譯程序的設計中

52、,可以省略生成中間代碼這一階段,直接得到目標代碼。公式(3)表明,對用戶的某一個plc源語句x,要找到對應的fi,只需找到相應的mt即可。f i =(mi)成了編譯過程中裝配活動代碼的依據(jù)。24 基于單片機的plo編譯程序結構基于單片機的plc編譯程序結構如圖31所示。其特點是:翻譯時, 一次掃描源程序文件,逐條翻譯,依fi=a(mi)裝配活動代碼。25 盲碼的預先填入及修正技術定義5:將目標代碼各模塊模板中字節(jié)數(shù)已定但內(nèi)容暫未確定的代碼稱為盲碼。有兩種情況需要采用盲碼技術。第一種情況:在編譯過程中,固定代碼段不完全固定,需要修正。在修正過程中需要采用盲碼技術。當圖21中裝配固定代碼時,對表1

53、6中固定代碼的定時器初值設定子程序段,先以盲碼填入,代替正式代碼,等圖21中掃描源程序文件,逐條翻譯,得到源程序提供的定時器初值以后,再用正式代碼(含定時器初值的mov指令機器代碼)代替相應位置上的盲碼,從而完成固定代碼的修正。第二種情況:圖21中f數(shù)組只是提供了和源程序語句對應的目標代碼的模板,該模板中的某些位置上原先也用盲碼(符號上用變量)代替。當圖21中依照f;_盯(m i)裝配活動代碼時,這些盲碼才被相應參數(shù)值取代。實際參數(shù)也來自源程序。例如,前面曾提到,對于源程序語句pls 09,其目標代碼子集為:f i=50h,odh,20h,p,06h,d2h,y,d2h,p,80h,08h,c2h,y,80h,04it,c2h,y,c2h,p,00h,00h,00h,式中的p、y位置為盲碼位置,符號用變量p和y表示,值為:p=19h。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論