基于單片機的PLC編譯程序的設(shè)計研究畢業(yè)論文_第1頁
基于單片機的PLC編譯程序的設(shè)計研究畢業(yè)論文_第2頁
基于單片機的PLC編譯程序的設(shè)計研究畢業(yè)論文_第3頁
基于單片機的PLC編譯程序的設(shè)計研究畢業(yè)論文_第4頁
基于單片機的PLC編譯程序的設(shè)計研究畢業(yè)論文_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、. . . . 畢業(yè)設(shè)計(論文)題目:基于單片機的PLC編譯程序設(shè)計研究目 錄摘要6關(guān)鍵詞6Abstract7Key words8前言81 基于單片機的PLC的單片機程序模塊研究與其目標(biāo)程序框架的構(gòu)建91.1 基于單片機的PLC常用的單片機程序模塊的構(gòu)建91.2 基于單片機的PLC的TIM Ti語句的單片機程序模塊構(gòu)建10121 圍繞TIM Ti片硬件資源的配置1012. 2 TIM Ti所需的To中斷服務(wù)程序11123 TIM Ti模塊的流程分析和建立1213 CNT Ci 語句的單片機程序模塊的構(gòu)建1314 PLS8 Yi 脈沖微分語句的單片機程序模塊的構(gòu)建141. 5 移位類語句的單片機

2、程序模塊的構(gòu)建151. 6 基于單片機的PLC目標(biāo)程序框架的構(gòu)建162 基于單片機的PLC編譯程序總體設(shè)計方法1921 采用數(shù)組技術(shù)構(gòu)建基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合19211 基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合的定義19212 基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合的數(shù)組表達(dá)2022 基于單片機的PLC目標(biāo)代碼集合的構(gòu)建2223 建立基于單片機的PLO源程序語句和目標(biāo)代碼之間的關(guān)系2224 基于單片機的PLO編譯程序結(jié)構(gòu)2325 盲碼的預(yù)先填入與修正技術(shù)233 基于單片機的PLC編譯程序查錯模塊設(shè)計2431 編譯過程中列表文件名和列表文件的建立24311 用STRCAT建立列表文件名2

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

4、型識別3653 簡單活動代碼的裝配37531 引用名(位地址)字符轉(zhuǎn)化函數(shù)cvt(x,y)的定義37532 實現(xiàn)映射F i=口(Mi)的第一種程序結(jié)構(gòu)38533 LDI語句的目標(biāo)代碼裝配38534 AND語句的目標(biāo)代碼裝配39535 ANI語句的目標(biāo)代碼裝配39536 OR語句的目標(biāo)代碼裝配40537 ORI語句的目標(biāo)代碼裝配40538 STORE語句的目標(biāo)代碼裝配41539 OUT語句的目標(biāo)代碼裝配4154 復(fù)雜活動代碼的裝配與其盲碼的修正42541 TIM語句的目標(biāo)代碼的裝配與其盲碼的修正425411 TIM模塊中的F數(shù)組賦值435412 TIM模塊中第二種盲碼的修正445413 針對TI

5、M的第一種盲碼的修正445414 目標(biāo)文件Bin裝配時兩種地址的切換方法4554. 15 TIM模塊的目標(biāo)代碼裝配46542 CNT語句的目標(biāo)代碼的裝配與其盲碼的修正465421 CNT模塊中的F數(shù)組的賦值485422 CNT模塊的目標(biāo)代碼裝配48543 RSTC語句的目標(biāo)代碼的裝配與其盲碼的修正485431 RSTC語句翻譯模塊中的盲碼修正495432 RSTC模塊中F數(shù)組的賦值和目標(biāo)代碼的裝配49544 PLS語句的目標(biāo)代碼的裝配與其盲碼的修正505441 PLS語句翻譯模塊中的盲碼修正515442 PLS模塊中F數(shù)組的賦值和目標(biāo)代碼的裝配51545 DIN語句的目標(biāo)代碼的裝配與其盲碼的修

6、正515451 DIN語句翻譯模塊中的盲碼修正525452 DIN模塊的目標(biāo)代碼裝配52546 SFT語句的目標(biāo)代碼的裝配與其盲碼的修正535461 SFT語句翻譯模塊中的盲碼修正535462 SFT模塊中F數(shù)組的賦值和目標(biāo)代碼的裝配54547 RSTS語句的目標(biāo)代碼的裝配與其盲碼的修正545471 RSTS語句翻譯模塊中的盲碼修正555472 RSTS模塊中F數(shù)組的賦值和目標(biāo)代碼的裝配5555 END語句的處理566 基于單片機的PL c編譯程序的實驗研究5661 實驗研究系統(tǒng)的建立5662 基于單片機的PLO源程序的編輯和編譯5763 結(jié)論58參考文獻(xiàn)59致61基于單片機的PLC編譯程序設(shè)

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

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

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

10、益,因而具有較強的實用性。關(guān)鍵詞:單片機,可編程邏輯控制器,編譯程序,盲碼,源程序,目標(biāo)程序AbstractSometimes,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 and

11、 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 ladder

12、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 microcomputer

13、,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 monolithicmic

14、rocomputerFirst,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 for

15、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 propose

16、d,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 processing

17、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 chec

18、kup 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 bycarry

19、ing 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 realizationsigma

20、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 of

21、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 trials。

22、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 compiler de

23、signed 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 the

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

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

26、機芯片不同,部的硬件資源也就不同,目標(biāo)指令代碼和目標(biāo)程序框架結(jié)構(gòu)也就不同。因此在編譯程序編寫前,必須根據(jù)單片機芯片編程的特點設(shè)定目標(biāo)程序框架結(jié)構(gòu)。有許多影響目標(biāo)程序框架結(jié)構(gòu)的因素,諸如CPU初始化、部硬件定時器設(shè)定、中斷結(jié)構(gòu)、接口的初始化等。設(shè)定目標(biāo)程序框架結(jié)構(gòu),是本課題的另一項主要工作任務(wù)。(3) 本課題的一項有特色的工作是在應(yīng)用研究基礎(chǔ)上,構(gòu)建基于單片機的PLC的源程序代碼標(biāo)準(zhǔn)集合和目標(biāo)程序代碼集合,并且用集合和映射的方法為基于單片機的PLC源程序代碼、目標(biāo)代碼以與翻譯方法建模。此外在設(shè)計中采用盲碼預(yù)填與修正技術(shù)??傊趩纹瑱C的PLC編譯程序設(shè)計研究是一項具有創(chuàng)造性的工作,需要充分吸收

27、前人經(jīng)驗,開創(chuàng)創(chuàng)新,建立新的模型,新的結(jié)構(gòu),新的方法1 基于單片機的PLC的單片機程序模塊研究與其目標(biāo)程序框架的構(gòu)建基于單片機的PLC編譯程序的功能是將基于單片機的PLC源程序翻譯成單片機目標(biāo)程序。為了設(shè)計出基于單片機的PLC編譯程序,首先要構(gòu)建出每一條源程序指令所對應(yīng)的單片機程序模塊。基于單片機的PLC的源程序指令采用可編程序邏輯控制器最基本指令的助記符,包括AND,ANI,OR,ORI,LD,LDI,OUT,STORE,TIM,CNT,RST,PLS,DIN,SFT,END等基本邏輯指令。但是,這些基本邏輯指令所對應(yīng)的單片機程序模塊的程序長短不一,有的只有l(wèi)2條單片機指令組成,有的則需十幾

28、條或幾十條單片機指令組成。1.1 基于單片機的PLC常用的單片機程序模塊的構(gòu)建大部分PLC指令的單片機程序模塊只需l2條單片機指令組成。AND、ANI、OR、ORI、LD、LDI、OUT、STORE指令的單片機程序(指令)如表21所示。由于選擇了Atmel公司的AT89C52單片機芯片作為處理器,所以單片機程序使用MCS51單片機指令系統(tǒng)(AT89C52單片機采用了MCS51單片機指令系統(tǒng))。表11 基于單片機的PLC中常用PLC邏輯指令的單片機程序模塊序號PLC邏輯指令單片機程序模塊(指令) 目標(biāo)程序代碼序號PLC邏輯指令單片機模塊(指令)目標(biāo)程序代碼1LD bitMOV C, bitA2,

29、 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進(jìn)行。表中的bit表示位地址,它們都是單片機中片RAM中可直接位尋址的位(位地址)。(如延時計時器類、脈沖

30、微分類、計數(shù)器類、移位類等)的單片機程序模塊需十幾條或幾十條單片機指令組成。下面是對此類PLC邏輯指令的單片機程序模塊建立過程的分析。1.2 基于單片機的PLC的TIM Ti語句的單片機程序模塊構(gòu)建121 圍繞TIM Ti片硬件資源的配置梯形圖中的延時計時器通??梢杂卸鄠€,它們需要有一個統(tǒng)一的時鐘。在基于單片機的PLC中用AT89C52芯片的T0來作統(tǒng)一的時鐘。TO設(shè)定成定時01s,每隔O1sT0中斷一次。在To中斷服務(wù)程序中依次將多個延時計時器的軟加l計數(shù)器加l。實現(xiàn)TIM指令所需要的片資源有:延時計時器的邏輯位Ti,位地址30H3FH;延時計時器的狀態(tài)標(biāo)志位Si,位地址40H4FH;延時計

31、時器的軟加1計數(shù)器Zi,Zi由兩字節(jié)寄存器組成,由TO中斷服務(wù)程序?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中斷服務(wù)程序單片機初始化時,將To設(shè)定成定時方式l,并開放To中斷。To的初值計算公式為:圖11 TO中斷服務(wù)程序流程圖TO的定時方式和初值在單片機初始化時設(shè)定,TO中斷服務(wù)程序依次掃描16個延時計時器,先判斷Si是否為“1",即該計時

32、器是否已被開啟,只對開啟的計時器的軟加1計數(shù)器Zi實行加1操作。其流程見圖21。123 TIM Ti模塊的流程分析和建立與梯形圖中延時計時器所對應(yīng)的TIM Ti邏輯指令的單片機程序模塊流程見圖12。這是一個對第i個延時計時器進(jìn)行邏輯運算處理的模塊,運算的依據(jù)是已知的當(dāng)前邏輯運算值(在累加器C中)。開動延時計時器(實行Sil的操作)的條件是:當(dāng)C=I,同時Si=0(第i個延時計時器還未處于開動狀態(tài)時),同時Ti1(延時計時器邏輯位還未置“1")。圖12 TIM Ti邏輯指令的單片機程序模塊流程圖13 CNT Ci 語句的單片機程序模塊的構(gòu)建計數(shù)器和計時器使用一樣的片資源。在用PLC指令

33、編程時,同一個引用名不能同時作計數(shù)器和計時器。CNT指令的單片機程序模塊用Ci表示計數(shù)器的邏輯位,位地址30H3FH;用ni表示計數(shù)器的計數(shù)脈沖前沿識別位,位地址50H一5FH;用Di(雙字節(jié)寄存器)表示軟加1計數(shù)器,Di由Di,0和Di,1組成;用Di表示計數(shù)器的預(yù)置值寄存器(雙字節(jié)寄存器),D'i由Di,0和Di,i組成;另外,由RSTC指令實現(xiàn)計數(shù)器的清零。CNT Ci計數(shù)指令的單片機程序模塊如下:14 PLS8 Yi 脈沖微分語句的單片機程序模塊的構(gòu)建本系統(tǒng)共設(shè)有8個脈沖微分寄存器。脈沖微分類運算的單片機程序模塊所占的片資源較少。它們分別是:脈沖微分寄存器的邏輯位Yi,位地址0

34、8H0FH;用于寄存前次輸入的寄存器Pi,位地址18H1FH。PLS脈沖微分的單片機程序模塊流程見圖23。程序過對本次輸入(累加器C)和前次輸入(Pi)進(jìn)行判斷,當(dāng)C=I同時Pi=0時才產(chǎn)生脈沖微分信號(Yi=1)。由于掃描梯形圖時,主程序在總體上是循環(huán)結(jié)構(gòu),所以微分脈沖寬度等于梯形圖掃描周期。1. 5 移位類語句的單片機程序模塊的構(gòu)建共提供了4個8位移位寄存器。移位類運算的單片機程序模塊所占的片資源有:移位寄存器,用Mi表示,字節(jié)地址分別為2CH,2DH,2EH,2FH;移位輸入暫存位,用Gi表示;移位脈沖前沿識別位Hi,位地址28H,29H,2AH,2BH。移位類運算程序由三個程序模塊組成

35、。一個是對應(yīng)于DIN Mi的單片機程序模塊。其功能是將輸入端的邏輯值暫存在Gi中,供SFT指令使用;第二個是對應(yīng)于SFT Mi的移位操作程序模塊,其功能是依據(jù)已知的當(dāng)前邏輯運算值(在累加器C中),以與Hi的值,判斷移位脈沖是否到;當(dāng)移位脈沖到時,將輸入暫存位Gi中的值移入移位寄存器Mi。第三個是對應(yīng)于RSTS指令的移位寄存器復(fù)位程序模塊。DIN Mi指令的單片機程序模塊如下:MOV Gi,C ;僅僅一條單片機指令。SFT Mi移位操作指令的單片機程序模塊如下:1.6 1. 6 基于單片機的PLC目標(biāo)程序框架的構(gòu)建基于單片機的PLC編譯程序的功能是將基于單片機的PLC的源程序語句翻譯成單片機的目

36、標(biāo)程序。在基于單片機的PLC編譯問題中,目標(biāo)程序框架和單片機的芯片編程相關(guān),諸如CPU初始化、部硬件定時器設(shè)定、接口的初始化等。根據(jù)基于單片機的PLC的要求,建立目標(biāo)程序框架結(jié)構(gòu),如表16所示。其中,固定代碼的編譯結(jié)果基本是固定的。活動代碼是和源程序語句對應(yīng)的目標(biāo)程序代碼。固定代碼和活動代碼均采用單片機的機器指令代碼。當(dāng)基于單片機的PLC編譯程序工作時,對表16中固定代碼的裝配過程較簡單。而活動代碼的裝配則涉與到對源程序語句的識別、查錯、翻譯生成目標(biāo)代碼等過程,是編譯程序主要需要解決的問題?;顒哟a具體裝配的容由11 1.5中的容根據(jù)源程序的順序來決定。表16 基于單片機的PLC目標(biāo)程序框架結(jié)

37、構(gòu)在表16所示的基于單片機的PLC目標(biāo)程序框架結(jié)構(gòu)中,專用地址矢量、延時20ms子程序、CPU和接口初始化子程序、定時器初值設(shè)定子程序、TO中斷服務(wù)子程序、主程序開始初始化設(shè)定、輸入刷新,這些均屬于固定目標(biāo)代碼。它們又被分為兩種:一種為純固定目標(biāo)代碼,例如專用地址矢量、延時20ms子程序、CPU和接口初始化子程序、TO中斷服務(wù)子程序、主程序開始初始化設(shè)定、輸入刷新;另一種為含盲碼、待修正的固定目標(biāo)代碼,例如定時器初值設(shè)定子程序。0066H00C5H單元共96個字節(jié)用于定時器初值設(shè)定子程序預(yù)留空間。先用盲碼值00H填充。等編譯程序中執(zhí)行“掃描源程序文件,逐條翻譯"時,得到源程序提供的定

38、時器初值,再在用正式代碼(以MOV指令目標(biāo)代碼的形式,并含定時器初值)代替相應(yīng)位置上的盲碼。關(guān)于盲碼,35中還要敘述。表16中入口符號地址THTL處為TO中斷服務(wù)子程序。在222中已經(jīng)敘述了TO中斷服務(wù)子程序的流程。它們的具體程序如下:2 基于單片機的PLC編譯程序總體設(shè)計方法基于單片機的PLC編譯程序總體設(shè)計方法碰到的第一個問題是源程序指令模板和目標(biāo)代碼模板在編譯程序中如何表達(dá)?接著第二個問題是如何根據(jù)已知的源程序指令正確的找到目標(biāo)代碼程序?如何建立單片PLC源程序語句和目標(biāo)代碼之間的關(guān)系?為了在編譯時有一個對源程序語句的識別、查錯的標(biāo)準(zhǔn),需要就基于單片機的PLC的AND、ANI、OR、OR

39、I、LD、LDI、OUT、STORE、TIM、CNT、RST、PLS、DIN、SFT、END等基本邏輯指令,建立基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合。21 采用數(shù)組技術(shù)構(gòu)建基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合211 基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合的定義定義1:M是集合,在基于單片機的PLC編譯程序中用數(shù)組表示。m iJ是其元素,m i jM,m i j為1字節(jié)ASCII字符,且有子集Mi MMi:mmi2,mik (1)Mi為M數(shù)組行元素集合,其前k1個字符組成的字符串記為:StringMi=mi1mi2mik-1假如String Mi的值等于基于單片機的PLC某種源程序語句(簡稱為“源

40、語句")助記符串中的標(biāo)識符串,并且Mi中的元素mi k的值等于這種源語句長度的ASCII值,則稱子集Mi為這種源語句的標(biāo)準(zhǔn)子集。例如:基于單片機的PLC的LD語句為:LD 20,其長度值=5,標(biāo)識符串為StringMi_h,D, ),故LD源語句標(biāo)準(zhǔn)子集為Mi=L,D,5。又如:PLS語句為:PLS 09,其長度值=6,標(biāo)識符串為String Mi=(P,L,S, ,故PLS源語句標(biāo)準(zhǔn)子集為Mi=P,L,S,6)定義2:在Mi cM的條件下,Mi是一種源語句標(biāo)準(zhǔn)子集。又:M=Mt,M2,M。),式中入為基于單片機的PLC源語句標(biāo)準(zhǔn)的條數(shù),則稱集合M為基于單片機的PLC源語句標(biāo)準(zhǔn)集合。

41、基于單片機的PLC編譯程序中用M數(shù)組來構(gòu)建源語句標(biāo)準(zhǔn)集合,便使問題得到簡化。M數(shù)組是進(jìn)行源程序查錯時的對照標(biāo)準(zhǔn),也是進(jìn)行翻譯時的判別標(biāo)準(zhǔn)。M數(shù)組提供了源語句樣板。性質(zhì)1:M數(shù)組為二維數(shù)組,由于基于單片機的PLC源語句的關(guān)鍵詞(標(biāo)識符)長短不一,導(dǎo)致M數(shù)組的各行長短不一。性質(zhì)2:根據(jù)定義2,有:M數(shù)組的每一行對應(yīng)于不同的基于單片機的PLC的源語句定義。性質(zhì)3:M數(shù)組的行數(shù)等于基于單片機的PLC語句的條數(shù)。基于單片機的PLC的指令系統(tǒng)較簡單,語句條數(shù)不多,所以M數(shù)組行數(shù)不大,共16行。性質(zhì)4:集合M中的各個子集Mi沒有一個重復(fù)。這是因為定義基于單片機的PLC源語句時是不可能重復(fù)定義的。212 基于

42、單片機的PLC源程序語句標(biāo)準(zhǔn)集合的數(shù)組表達(dá)把基于單片機的PLC源程序指令,依據(jù)上述String Mi和mi k的格式進(jìn)行表述,我們就可以得到,當(dāng)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(xiàn),T,6M15=R,S,T,S,7M16=E,N,D,6上述集合的全體就是基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合。其中每個子集中的最

43、后一個數(shù)字表示該源程序語句的ASCII字符長度標(biāo)準(zhǔn)。例如,源程序語句LD 20共5個ASCII字符(空格算一個ASCII字符),所以,子集M1=L,D,5)中的最后一個數(shù)字為5。建立基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合的目的是為了確定一個進(jìn)行源程序查錯時的對照標(biāo)準(zhǔn),以與進(jìn)行翻譯時的判別標(biāo)準(zhǔn)。為此,在基于單片機的PLC編譯程序中用C語言實現(xiàn)M數(shù)組所表達(dá)的基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合。M數(shù)組的各元素賦值如下:m11=L;ml2=D:m13=;ml4=x05:m21=L:m22=D:m23=I:m24=:m25=x06:m31=A:m32=N:m33=D:m34=:m35=x06:m41_A

44、: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=S:m113=T;m114=C:m115=:m116=x07:m121=P;m122=L:m123=S;m124=:rail2

45、5=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目標(biāo)代碼集合的構(gòu)建定義3:F是集合,fij是其元素,fijEF,fij是一字節(jié)16進(jìn)制數(shù)。如果有子集Fi F,即:F i=fi1,fi2,······,fi。) (2)假如F i所代表的子集元素代碼等于

46、第i條基于單片機的PLC語句所對應(yīng)的目標(biāo)機器代碼子集,則稱子集F i為基于單片機的PLC目標(biāo)代碼子集。定義4:在F i c F的條件下,有F=F。,F(xiàn)1,F(xiàn)x)。如果F i(i-1,2,入)都一一對應(yīng)等于所定義的各單片PLC語句的目標(biāo)機器代碼子集,則稱集合F為基于單片機的PLC的目標(biāo)代碼集合。基于單片機的PLC的目標(biāo)代碼和目標(biāo)芯片有關(guān)。目標(biāo)代碼都是16進(jìn)制代碼。對不同的基于單片機的PLC源語句,其目標(biāo)代碼的字節(jié)數(shù)不同,并且差別很大。例如,對于源程序語句LD 20,其目標(biāo)代碼子集為:F i=A2H,20H,(實際編譯程序中引進(jìn)變量q,為:LD 20;Fi=A2H,q),q=20H)而對于源程序語

47、句PLS 09,其目標(biāo)代碼子集為: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。值得指出的是,目標(biāo)代碼子集中的元素在編譯前,并非全部為常數(shù),少數(shù)是變量。例如LD的目標(biāo)代碼子集中的q,PLS的目標(biāo)代碼子集中的P和Y。這些變量的值經(jīng)過編譯后才得到確定的值。23建立基于單片機的PLO源程序語句和目標(biāo)代碼之間的關(guān)系定理1:設(shè)M為基于單片機的PLC源語句標(biāo)準(zhǔn)集合,且MiM,F(xiàn)為基于單片機的PLC的目標(biāo)代碼集合,且F i c F,于是必有F為M的一個l一1映射,

48、其子集映象關(guān)系為:F i= (Mi) (3)其中,表示映射。證明:根據(jù)定義1,M;為基于單片機的PLC某個源語句的標(biāo)準(zhǔn)子集;根據(jù)定義3,F(xiàn)i為對應(yīng)于該源語句的目標(biāo)代碼子集;若F i (Mi)成立,則結(jié)果和定義3矛盾。因此,必有F i_ (Mi)成立。再根據(jù)211中的性質(zhì)4,各Mi沒有一個重復(fù),故由F i-仃(Mi)知,F(xiàn) i也沒有重復(fù),因此F為M的一個11映射成立。定理1證畢。定理1為基于單片機的PLC編譯方法的簡化提供了條件。在這種小型應(yīng)用系統(tǒng)編譯程序的設(shè)計中,可以省略生成中間代碼這一階段,直接得到目標(biāo)代碼。公式(3)表明,對用戶的某一個PLC源語句X,要找到對應(yīng)的Fi,只需找到相應(yīng)的Mt即

49、可。F I=(Mi)成了編譯過程中裝配活動代碼的依據(jù)。24基于單片機的PLO編譯程序結(jié)構(gòu)基于單片機的PLC編譯程序結(jié)構(gòu)如圖31所示。其特點是:翻譯時,一次掃描源程序文件,逐條翻譯,依Fi=a(Mi)裝配活動代碼。25盲碼的預(yù)先填入與修正技術(shù)定義5:將目標(biāo)代碼各模塊模板中字節(jié)數(shù)已定但容暫未確定的代碼稱為盲碼。有兩種情況需要采用盲碼技術(shù)。第一種情況:在編譯過程中,固定代碼段不完全固定,需要修正。在修正過程中需要采用盲碼技術(shù)。當(dāng)圖21中裝配固定代碼時,對表16中固定代碼的定時器初值設(shè)定子程序段,先以盲碼填入,代替正式代碼,等圖21中掃描源程序文件,逐條翻譯,得到源程序提供的定時器初值以后,再用正式代

50、碼(含定時器初值的MOV指令機器代碼)代替相應(yīng)位置上的盲碼,從而完成固定代碼的修正。第二種情況:圖21中F數(shù)組只是提供了和源程序語句對應(yīng)的目標(biāo)代碼的模板,該模板中的某些位置上原先也用盲碼(符號上用變量)代替。當(dāng)圖21中依照F;_盯(M i)裝配活動代碼時,這些盲碼才被相應(yīng)參數(shù)值取代。實際參數(shù)也來自源程序。例如,前面曾提到,對于源程序語句PLS 09,其目標(biāo)代碼子集為: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。

51、y=09H,其中,09H值是從源語句PLS 09中的參數(shù)09得到,19H是計算得到。圖2.1基于單片機的PLC編譯程序結(jié)構(gòu)3 基于單片機的PLC編譯程序查錯模塊設(shè)計基于單片機的PLC編譯程序的設(shè)計過程,就是將上述總體設(shè)計方法用于具體設(shè)計的過程。在上文中,為了確定一個進(jìn)行源程序查錯時的對照標(biāo)準(zhǔn),已經(jīng)建立了基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合,并且用M數(shù)組表達(dá)基于單片機的PLC源程序語句標(biāo)準(zhǔn)集合,用C語言實現(xiàn)了M數(shù)組的賦值。在查錯模塊程序設(shè)計中,確定了以下設(shè)計思路:先根據(jù)源程序文件名建立一個列表文件名,然后分別打開源程序文件和列表文件。列表文件用來存放查錯結(jié)果和錯誤標(biāo)記。接下來,從源程序文件中依次

52、讀入源程序語句,并進(jìn)行整句識別。一旦識別出一個整句,就進(jìn)行語句語法檢查,并將查錯結(jié)果寫入列表文件。讀入源程序語句、整句識別、語句語法檢查,這些過程在循環(huán)進(jìn)行,直到出現(xiàn)源程序結(jié)尾標(biāo)記才結(jié)束。31 編譯過程中列表文件名和列表文件的建立建立列表文件的目的是為了用來存放查錯結(jié)果。為此,先建立列表文件名。311 用STRCAT建立列表文件名用a數(shù)組記錄源程序文件名,用b數(shù)組記錄列表文件名。在基于單片機的PLC編譯程序開始的時候,已經(jīng)通過鍵盤輸入將源程序文件名輸入到a數(shù)組中。所以,下面程序的已知條件是源程序文件名在a數(shù)組中。Strcpy(b,a)While(bi!.)&&(i<=36

53、) i+;If(i>36)b1=2;goto next4b i+1=0:bi+2=0 bi+3=0strcat(b,”List”);strcpy(b,a)的作用是將a數(shù)組的容拷貝給b數(shù)組。源程序文件的擴(kuò)展名是asm,而列表文件的擴(kuò)展名應(yīng)該是1st。所以在上述程序中用bi+1=O: bi+2=0:bi+3=0:bi+4=0:四條語句將已拷貝給b數(shù)組中的asm清除,再通過strcat(b,”Lst”)語句將1st拼接到b數(shù)組中。結(jié)果,實現(xiàn)了用b數(shù)組記錄一個文件名和源程序文件名一樣,但擴(kuò)展名和源程序文件名不同的列表文件名,該列表文件名的擴(kuò)展名為1st。312 列表文件(1st)的建立下面的程序,先用fopen,以rb的方式打開源程序文件。再用fopen語句,以wb的方式,利用fopen語句以wb的方式工作的一個特性:如果原來不存在該文件,則在打開時新建一個以指定名字命名的文件

溫馨提示

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

評論

0/150

提交評論