


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文格式為Word版,下載可任意編輯51單片機(jī)DIY做PLC編程 有伴侶想定制一個(gè)凈水機(jī)掌握器,有一些獨(dú)特的功能要增加,但是商品掌握板沒(méi)有這樣的功能,問(wèn)我能否做一個(gè),我覺(jué)得單片機(jī)完全能滿意這種簡(jiǎn)潔的掌握需要,上手開(kāi)頭編程序時(shí)候突然感到,用plc規(guī)律編這種功能是特別簡(jiǎn)潔輕松的,而假如用匯編或C編卻感覺(jué)有點(diǎn)麻煩,編程效率不高,所以想為何不在單片機(jī)上實(shí)現(xiàn)PLC的規(guī)律呢?上網(wǎng)搜尋嘗試看能否找到合適的程序下載來(lái)略微改改就能用的呢?方案幾年前就有了,實(shí)際上是利用三菱的低檔plc編程軟件編輯好梯形圖,存盤(pán)后用專用的格式轉(zhuǎn)換工具轉(zhuǎn)換成HEX單片機(jī)燒寫(xiě)文件燒進(jìn)去,嘗試下載三菱plc工具軟件,但是在我的WIN7-
2、64位系統(tǒng)上不能正常工作,好簡(jiǎn)單換了系統(tǒng)裝好開(kāi)發(fā)工具,但是初次上手這款開(kāi)發(fā)工具,界面挺簡(jiǎn)單的,懶得討論各個(gè)按鈕的使用,由于是單片機(jī)的硬件,對(duì)于程序的編制和轉(zhuǎn)換有許多限制條件,否則是轉(zhuǎn)換不勝利的,嫌麻煩,放棄!某寶倒是有百元PLC板出售,但是為了這么個(gè)簡(jiǎn)潔的東西特地買(mǎi)個(gè)全功能板子有點(diǎn)鋪張,而且其編程軟件仍舊是三菱的盜版軟件,算了,再想方法把。由于工作中常常接觸PLC程序,對(duì)其工作原理也略知一二,網(wǎng)上也有相關(guān)的說(shuō)明介紹,其實(shí)就是三個(gè)主要步驟,第一步掃描IO輸入,其次步執(zhí)行規(guī)律,第三步輸出規(guī)律到IO,很簡(jiǎn)潔的,最早PLC也是用單片機(jī)實(shí)現(xiàn)的,我為何不用匯編在51上搭建一個(gè)架構(gòu),簡(jiǎn)潔的規(guī)律編制進(jìn)去就能運(yùn)
3、轉(zhuǎn)呢?其中規(guī)律執(zhí)行步驟還是有點(diǎn)意思的,需要把PLC規(guī)律翻譯成單片機(jī)的匯編語(yǔ)言執(zhí)行,這塊開(kāi)頭也沒(méi)有把握,后來(lái)搜尋到一篇百度文章,介紹了一下三菱PLC規(guī)律是如何翻譯成匯編的,我看了下估量其實(shí)是利用反匯編工具把HEX反編譯成的ASM代碼,并不清楚明白,而且還帶著反匯編時(shí)候的行號(hào),僅供參考了。搜尋結(jié)果中也有幾篇論文,涉及到在51單片機(jī)上實(shí)現(xiàn)PLC規(guī)律的內(nèi)容,但是那些論文都是充數(shù)的,僅僅幾個(gè)IO規(guī)律,沒(méi)有什么定時(shí)器,計(jì)數(shù)器功能的體現(xiàn),哎!僅供參考!看來(lái)這個(gè)PLC系統(tǒng)還是需要自己寫(xiě)了!OK!既然打算自己重寫(xiě),那就開(kāi)工吧!利用春節(jié)休假時(shí)間,編制了如下ASM51匯編PLC代碼:代碼主要架構(gòu)如下:1、IO定義部
4、分:依據(jù)所使用的單片機(jī)IO口數(shù)量,任意指定多少個(gè)I多少個(gè)O,那幾個(gè)腳是I,哪幾個(gè)是O都可以任意指定,在這個(gè)51系統(tǒng)里面設(shè)計(jì)了最大32個(gè)I,32個(gè)O,占用64個(gè)位尋址區(qū)域,其有用不到那么多,也可以安排給其它需要的標(biāo)志位用,由于51系統(tǒng)總可位尋址地址只有128位,需要認(rèn)真安排.2、位尋址變量定義(包括各類標(biāo)志位,臨時(shí)變量寄存器等等)目前設(shè)計(jì)了8個(gè)計(jì)時(shí)器的Timer DN, Timer EN,共16位,8個(gè)計(jì)數(shù)器的counter reset 和counter DN 標(biāo)志位共16個(gè),專用于上升沿下降沿檢測(cè)的標(biāo)志位4對(duì),占用8個(gè),剩余用于臨時(shí)變量,這些地址安排在這塊變量定義區(qū)域可以依據(jù)需要任意調(diào)整。 3
5、、內(nèi)存規(guī)劃,包括堆棧區(qū)的設(shè)置,定時(shí)器,計(jì)數(shù)器的累加值和預(yù)設(shè)值地址等等,目前初步定義8個(gè)計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值和預(yù)設(shè)值,8個(gè)計(jì)時(shí)器的當(dāng)前計(jì)數(shù)值和預(yù)設(shè)值,共占用32個(gè)內(nèi)存地址,也可依據(jù)需要調(diào)整,51單片機(jī)片內(nèi)總的用戶可用內(nèi)存地址包括堆棧區(qū)只有128個(gè),實(shí)際去除位尋址區(qū)和堆棧區(qū)可用的估量只有80個(gè)左右,不過(guò)對(duì)于小程序應(yīng)當(dāng)夠用的。沒(méi)必要去增加成本擴(kuò)展RAM。 4、上電初始化,包括0.01秒微定時(shí)器設(shè)置,內(nèi)存清零,中斷設(shè)置,假如想增加串口功能也是可以的,51原來(lái)就有兩個(gè)定時(shí)器,無(wú)非多寫(xiě)一個(gè)串口中斷服務(wù)程序就是了。 5、微定時(shí)器中斷服務(wù)程序編寫(xiě),單片機(jī)每0.01秒定時(shí)中斷時(shí)執(zhí)行,進(jìn)行內(nèi)存時(shí)基標(biāo)志位刷新,用于提
6、示主程序相應(yīng)時(shí)間到了,基本的時(shí)基設(shè)計(jì)了0.01秒,0.1秒,1秒,10秒,1分鐘,1小時(shí),1天,1周八個(gè)時(shí)間標(biāo)志位,其實(shí)真沒(méi)必要,不過(guò)自己編寫(xiě)架構(gòu)就是好玩,想設(shè)計(jì)幾個(gè)就設(shè)計(jì)幾個(gè)哈哈! 6、下面是主要PLC規(guī)律,執(zhí)行時(shí)是不停掃描循環(huán)執(zhí)行的,與真實(shí)的PLC運(yùn)行結(jié)構(gòu)是一樣的,當(dāng)然咱們編的就要簡(jiǎn)潔很多了,沒(méi)有那么多的功能。而且用匯編編寫(xiě)執(zhí)行效率要比C高,目前1K代碼的匯編程序可以寫(xiě)好多,而假如用C寫(xiě)再編譯就會(huì)大很多,許多時(shí)候廉價(jià)小單片機(jī)就裝不下了。 7、掃描開(kāi)頭是對(duì)定時(shí)器計(jì)數(shù)器處理,假如某計(jì)時(shí)器的相應(yīng)時(shí)基標(biāo)志位置位,則處理對(duì)應(yīng)程序用定時(shí)器的狀態(tài)推斷與設(shè)置,計(jì)數(shù)器內(nèi)存累加,狀態(tài)推斷與設(shè)置,用于主規(guī)律執(zhí)行
7、部分執(zhí)行;對(duì)于計(jì)數(shù)器主要是推斷是否有計(jì)數(shù)器復(fù)位懇求以及進(jìn)行當(dāng)前計(jì)數(shù)值與預(yù)設(shè)值是否相等推斷,置位相應(yīng)標(biāo)志位. 8、輸入掃描,這塊很簡(jiǎn)潔,就是把輸入IO口復(fù)制到內(nèi)存相應(yīng)區(qū)域內(nèi); 9正式規(guī)律執(zhí)行:這塊直接就是根據(jù)梯形圖行的概念,每一個(gè)梯形圖行,就是一段匯編代碼,為了翻譯時(shí)候便利,直接把規(guī)律就在解釋行內(nèi)形象的用符號(hào)畫(huà)出來(lái)。規(guī)律的翻譯還是有點(diǎn)技巧,實(shí)現(xiàn)了基本IO輸入,與或非規(guī)律,定時(shí)器以及計(jì)數(shù)器功能,外加上升沿下降沿推斷等功能,這些基本的PLC功能都能在這個(gè)小架構(gòu)里面實(shí)現(xiàn),盡管不是非常完善例如定時(shí)器狀態(tài)更新的時(shí)效性由于架構(gòu)問(wèn)題還不能達(dá)到每次掃描更新,對(duì)于上升下降沿的推斷需要更多的內(nèi)存和語(yǔ)句實(shí)現(xiàn)等等,但是
8、對(duì)于簡(jiǎn)潔的應(yīng)用還是沒(méi)有問(wèn)題的. 10規(guī)律輸出,這塊也很簡(jiǎn)潔,就是把對(duì)應(yīng)的規(guī)律運(yùn)算結(jié)果輸出到單片機(jī)的IO口即可. 11后期操作部分,也就是每次掃描運(yùn)算結(jié)束后還有余力進(jìn)行其它需要功能的輸出,這塊在真正PLC里面也是很重要的,應(yīng)當(dāng)會(huì)進(jìn)行規(guī)律效驗(yàn),遠(yuǎn)程通訊等功能,咱這個(gè)就都簡(jiǎn)化掉了,僅僅為了測(cè)試掃描時(shí)間對(duì)一個(gè)內(nèi)存變量進(jìn)行增一操作而已,可以調(diào)用看看掃描周期時(shí)間是否超過(guò)了最小定時(shí)器時(shí)間等等幫助功能. 實(shí)測(cè)12M時(shí)鐘0.01秒執(zhí)行了這個(gè)小規(guī)律多達(dá)70多遍!架構(gòu)有了,詳細(xì)規(guī)律要怎么寫(xiě),最好還是在PLC模擬器上先試著編寫(xiě)一下,功能沒(méi)問(wèn)題了再抄到我們的單片機(jī)里面來(lái),進(jìn)行逐句翻譯,由于單片機(jī)匯編語(yǔ)言的調(diào)試還是很麻煩
9、的,究竟不直觀,還是在PLC模擬器里面做好了再搬進(jìn)來(lái)比較好。 Keil里面編譯成HEX文件后可以直接刷寫(xiě)進(jìn)單片機(jī)使用了,真正用之前最好還是要依據(jù)單片機(jī)的晶振時(shí)鐘,再調(diào)整一下微定時(shí)器的定時(shí)參數(shù),盡量符合0.01秒的要求,不要偏差太大,還有一種方法是利用proteus軟件仿真硬件運(yùn)行也是不錯(cuò)的。 通過(guò)反復(fù)修改匯編程序,通過(guò)仿真測(cè)試到目前為止我們只是完成了PLC芯片規(guī)律的軟件編寫(xiě),下面就可以燒寫(xiě)進(jìn)51內(nèi)核的單片機(jī)內(nèi)實(shí)際運(yùn)行了,這里我使用的是STC的國(guó)產(chǎn)單片機(jī),15W408系列,DIP20替換AT89C2051還能多增加幾個(gè)IO腳,僅僅幾元,價(jià)格廉價(jià),1T內(nèi)核,性能強(qiáng)勁(之前寫(xiě)的0.01秒掃描70多次
10、是在仿真環(huán)境下,12T的89C2051達(dá)到的性能,假如使用STC的1T系列要留意實(shí)際運(yùn)行速度會(huì)增加12倍,達(dá)到0.01秒掃700多次,有時(shí)候太快了也會(huì)引起苦惱呵呵),IO可以設(shè)定為強(qiáng)推挽,驅(qū)動(dòng)力強(qiáng),串口直接下載程序,編程便利,對(duì)于非專業(yè)應(yīng)用,給DIYer做點(diǎn)小東西還是很合適的.使用STC專用下載線(僅僅十幾塊,比別的芯片下載編程器可廉價(jià)多了,甚至使用5元的USB轉(zhuǎn)TTL串口線也能用,只是需要手動(dòng)斷電一次而已,專用的下載線增加了自動(dòng)斷電功能,使下載更便利些)下載進(jìn)芯片,得到一只帶程序的芯片. 利用面包板搭建測(cè)試電路實(shí)際驗(yàn)證規(guī)律功能,假如規(guī)律不滿足或者定時(shí)時(shí)間不合適還可以回去修改程序,重新編譯下裝
11、,直到滿足為止,為了能夠應(yīng)用到實(shí)際環(huán)境中,還需要為它配上電源電路,輸入按鍵開(kāi)關(guān),輸出驅(qū)動(dòng)三極管或繼電器等硬件才能和實(shí)際的應(yīng)用環(huán)境協(xié)作使用,發(fā)揮預(yù)想的作用。 實(shí)際應(yīng)用中對(duì)于抗干擾還是需要花費(fèi)一些心思的,干擾來(lái)自一下幾個(gè)方面:1電磁閥動(dòng)作時(shí)候產(chǎn)生的電磁脈沖和反電動(dòng)勢(shì),這個(gè)可以使用二極管做續(xù)流,來(lái)消退電磁閥斷電反電動(dòng)勢(shì)脈沖,通過(guò)增加光耦進(jìn)行輸出隔離,也可以提高抗干擾性能;2 對(duì)于開(kāi)關(guān)輸入通道要考慮單片機(jī)輸入電阻是比較高的,長(zhǎng)線簡(jiǎn)單引入外部干擾,這個(gè)問(wèn)題可以通過(guò)在輸入引腳外加1K上拉電阻的方法來(lái)降低輸入阻抗,達(dá)到抗干擾的目的;3 電源也是干擾源,由于大功率電機(jī)和電磁閥的動(dòng)作都會(huì)造成24V電源的瞬間猛烈波動(dòng),盡管單片機(jī)的電源消耗不大但是很簡(jiǎn)單因干擾而復(fù)位或者造成輸入輸出不正常等現(xiàn)象,因此電源濾波也很重要,通過(guò)示波器可以觀看到當(dāng)電機(jī)或電磁閥動(dòng)作時(shí),單片機(jī)5V電源的波動(dòng)狀況,通過(guò)實(shí)行增加型LC濾波,可以極大降低電源引起的干擾.4 電磁輻射也要考慮,單片機(jī)掌握板本體最好增加金屬外殼并接地,反抗電機(jī)電磁閥或廚房用電設(shè)備的外部干擾,這就是為什么我喜愛(ài)收集金屬糖果糕點(diǎn)盒的緣
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司戰(zhàn)略反饋機(jī)制試題及答案
- 2025年計(jì)算機(jī)軟件考試題及答案詳解
- 廣西壯族自治區(qū)玉林市陸川縣2025屆數(shù)學(xué)七下期末復(fù)習(xí)檢測(cè)試題含解析
- 2025屆江蘇省南京師范大附屬中學(xué)七下數(shù)學(xué)期末質(zhì)量檢測(cè)模擬試題含解析
- VB與SQL結(jié)合的題庫(kù)及答案
- 網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)原則試題及答案
- 河南省鄭州一八聯(lián)合2025屆數(shù)學(xué)七下期末質(zhì)量跟蹤監(jiān)視試題含解析
- 風(fēng)險(xiǎn)管理的指標(biāo)體系與實(shí)務(wù)操作試題及答案
- 2025年中國(guó)超凈工作服市場(chǎng)調(diào)查研究報(bào)告
- 海膽餃子測(cè)試題及答案
- 游泳館安全運(yùn)營(yíng)管理措施
- (統(tǒng)編版2025新教材)歷史八下期末復(fù)習(xí)考點(diǎn)講解(1-19課)
- 750t履帶吊安裝拆卸安裝方案
- 2025年基層醫(yī)療衛(wèi)生機(jī)構(gòu)信息化建設(shè)與醫(yī)療信息化人才培養(yǎng)與引進(jìn)報(bào)告
- 北京市東城區(qū)2025年高三二模生物學(xué)試卷(有答案)
- 【課件】2025年中考地理復(fù)習(xí)課件:廣西鄉(xiāng)土地理
- 2025年高考政治三輪沖刺:短評(píng)類主觀題練習(xí)題(含答案)
- 人教版八年級(jí)英語(yǔ)下冊(cè)Unit 9 Section A單詞詞匯課件
- 2024統(tǒng)編版七年級(jí)歷史下冊(cè) 第18課《清朝的邊疆治理》教學(xué)設(shè)計(jì)
- 2025年初級(jí)消防員試題及答案
- 2025年四川省成都市錦江區(qū)中考數(shù)學(xué)二診試卷(含部分答案)
評(píng)論
0/150
提交評(píng)論