国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2025年01月31日(星期五)

2021年01月31日 | 51單片機(jī)DIY做PLC編程

發(fā)布者:數(shù)據(jù)小巨人 來源: eefocus關(guān)鍵字:51單片機(jī)  DIY  PLC編程 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

簡介:有朋友想定制一個凈水機(jī)控制器,有一些獨(dú)特的功能要增加,但是商品控制板沒有這樣的功能,問我能否做一個,我覺得單片機(jī)完全能滿足這種簡單的控制需要,上手開始編程序時候突然感到,用PLC邏輯編這種功能是非常簡單輕松的,而如果用匯編或C編卻感覺有點(diǎn)棘手,編程效率不高,所以想為何不在單片機(jī)上實(shí)現(xiàn)PLC的邏輯呢?


上網(wǎng)搜索嘗試看能否找到合適的程序下載來稍微改改就能用的呢?方案幾年前就有了,實(shí)際上是利用三菱的低檔plc編程軟件編輯好梯形圖,存盤后用專用的格式轉(zhuǎn)換工具轉(zhuǎn)換成HEX單片機(jī)燒寫文件燒進(jìn)去,嘗試下載三菱plc工具軟件,但是在我的WIN7-64位系統(tǒng)上不能正常工作,好容易換了系統(tǒng)裝好開發(fā)工具,但是初次上手這款開發(fā)工具,界面挺復(fù)雜的,懶得研究各個按鈕的使用,由于是單片機(jī)的硬件,對于程序的編制和轉(zhuǎn)換有很多限制條件,否則是轉(zhuǎn)換不成功的,嫌麻煩,放棄!某寶倒是有百元PLC板出售,但是為了這么個簡單的東西專門買個全功能板子有點(diǎn)浪費(fèi),而且其編程軟件仍然是三菱的盜版軟件,算了,再想辦法把。


由于工作中經(jīng)常接觸PLC程序,對其工作原理也略知一二,網(wǎng)上也有相關(guān)的說明介紹,其實(shí)就是三個主要步驟,第一步掃描IO輸入,第二步執(zhí)行邏輯,第三步輸出邏輯到IO,很簡單的,最早PLC也是用單片機(jī)實(shí)現(xiàn)的,我為何不用匯編在51上搭建一個架構(gòu),簡單的邏輯編制進(jìn)去就能運(yùn)轉(zhuǎn)呢?


其中邏輯執(zhí)行步驟還是有點(diǎn)意思的,需要把PLC邏輯翻譯成單片機(jī)的


匯編語言


執(zhí)行,這塊開始也沒有把握,后來搜索到一篇百度文章,介紹了一下三菱PLC邏輯是如何翻譯成匯編的,我看了下估計(jì)其實(shí)是利用反匯編工具把HEX反編譯成的ASM代碼,并不清晰明了,而且還帶著反匯編時候的行號,僅供參考了。


搜索結(jié)果中也有幾篇論文,涉及到在51單片機(jī)上實(shí)現(xiàn)PLC邏輯的內(nèi)容,但是那些論文都是充數(shù)的,僅僅幾個IO邏輯,沒有什么定時器,計(jì)數(shù)器功能的體現(xiàn),哎!僅供參考!


看來這個PLC系統(tǒng)還是需要自己寫了!OK!既然決定自己重寫,那就開工吧!利用春節(jié)休假時間,編制了如下ASM51匯編PLC代碼:


代碼主要架構(gòu)如下:


1、IO定義部分:根據(jù)所使用的單片機(jī)IO口數(shù)量,任意指定多少個I多少個O,那幾個腳是I,哪幾個是O都可以任意指定,在這個51系統(tǒng)里面設(shè)計(jì)了最大32個I,32個O,占用64個位尋址區(qū)域,其實(shí)用不到那么多,也可以分配給其它需要的標(biāo)志位用,因?yàn)?1系統(tǒng)總可位尋址地址只有128位,需要仔細(xì)分配.



2、位尋址變量定義(包括各類標(biāo)志位,臨時變量寄存器等等)目前設(shè)計(jì)了8個計(jì)時器的Timer DN, Timer EN,共16位,8個計(jì)數(shù)器的counter reset 和counter DN 標(biāo)志位共16個,專用于上升沿下降沿檢測的標(biāo)志位4對,占用8個,剩余用于臨時變量,這些地址分配在這塊變量定義區(qū)域可以根據(jù)需要任意調(diào)整。







3、內(nèi)存規(guī)劃,包括堆棧區(qū)的設(shè)置,定時器,計(jì)數(shù)器的累加值和預(yù)設(shè)值地址等等,目前初步定義8個計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值和預(yù)設(shè)值,8個計(jì)時器的當(dāng)前計(jì)數(shù)值和預(yù)設(shè)值,共占用32個內(nèi)存地址,也可根據(jù)需要調(diào)整,51單片機(jī)片內(nèi)總的用戶可用內(nèi)存地址包括堆棧區(qū)只有128個,實(shí)際去除位尋址區(qū)和堆棧區(qū)可用的估計(jì)只有80個左右,不過對于小程序應(yīng)該夠用的。沒必要去增加成本擴(kuò)展RAM。






4、上電初始化,包括0.01秒微定時器設(shè)置,內(nèi)存清零,中斷設(shè)置,如果想增加串口功能也是可以的,51本來就有兩個定時器,無非多寫一個串口中斷服務(wù)程序就是了。






5、微定時器中斷服務(wù)程序編寫,單片機(jī)每0.01秒定時中斷時執(zhí)行,進(jìn)行內(nèi)存時基標(biāo)志位刷新,用于提醒主程序相應(yīng)時間到了,基本的時基設(shè)計(jì)了0.01秒,0.1秒,1秒,10秒,1分鐘,1小時,1天,1周八個時間標(biāo)志位,其實(shí)真沒必要,不過自己編寫架構(gòu)就是好玩,想設(shè)計(jì)幾個就設(shè)計(jì)幾個哈哈!






6、下面是主要PLC邏輯,執(zhí)行時是不停掃描循環(huán)執(zhí)行的,與真實(shí)的PLC運(yùn)行結(jié)構(gòu)是一樣的,當(dāng)然咱們編的就要簡單許多了,沒有那么多的功能。而且用匯編編寫執(zhí)行效率要比C高,目前1K代碼的匯編程序可以寫好多,而如果用C寫再編譯就會大許多,很多時候廉價(jià)小單片機(jī)就裝不下了。






7、掃描開始是對定時器計(jì)數(shù)器處理,如果某計(jì)時器的相應(yīng)時基標(biāo)志位置位,則處理對應(yīng)程序用定時器的狀態(tài)判斷與設(shè)置,計(jì)數(shù)器內(nèi)存累加,狀態(tài)判斷與設(shè)置,用于主邏輯執(zhí)行部分執(zhí)行;對于計(jì)數(shù)器主要是判斷是否有計(jì)數(shù)器復(fù)位請求以及進(jìn)行當(dāng)前計(jì)數(shù)值與預(yù)設(shè)值是否相等判斷,置位相應(yīng)標(biāo)志位.






8、輸入掃描,這塊很簡單,就是把輸入IO口復(fù)制到內(nèi)存相應(yīng)區(qū)域內(nèi);9正式邏輯執(zhí)行:這塊直接就是按照梯形圖行的概念,每一個梯形圖行,就是一段匯編代碼,為了翻譯時候方便,直接把邏輯就在注釋行內(nèi)形象的用符號畫出來。邏輯的翻譯還是有點(diǎn)技巧,實(shí)現(xiàn)了基本IO輸入,與或非邏輯,定時器以及計(jì)數(shù)器功能,外加上升沿下降沿判斷等功能,這些基本的PLC功能都能在這個小架構(gòu)里面實(shí)現(xiàn),盡管不是十分完美例如定時器狀態(tài)更新的時效性由于架構(gòu)問題還不能達(dá)到每次掃描更新,對于上升下降沿的判斷需要更多的內(nèi)存和語句實(shí)現(xiàn)等等,但是對于簡單的應(yīng)用還是沒有問題的.










10邏輯輸出,這塊也很簡單,就是把對應(yīng)的邏輯運(yùn)算結(jié)果輸出到單片機(jī)的IO口即可.







11后期操作部分,也就是每次掃描運(yùn)算結(jié)束后還有余力進(jìn)行其它需要功能的輸出,這塊在真正PLC里面也是很重要的,應(yīng)該會進(jìn)行邏輯效驗(yàn),遠(yuǎn)程通訊等功能,咱這個就都簡化掉了,僅僅為了測試掃描時間對一個內(nèi)存變量進(jìn)行增一操作而已,可以調(diào)用看看掃描周期時間是否超過了最小定時器時間等等輔助功能. 實(shí)測12M時鐘0.01秒執(zhí)行了這個小邏輯多達(dá)70多遍!架構(gòu)有了,具體邏輯要怎么寫,最好還是在PLC模擬器上先試著編寫一下,功能沒問題了再抄到我們的單片機(jī)里面來,進(jìn)行逐句翻譯,因?yàn)閱纹瑱C(jī)匯編語言的調(diào)試還是很麻煩的,畢竟不直觀,還是在PLC模擬器里面做好了再搬進(jìn)來比較好。



11后期操作部分,也就是每次掃描運(yùn)算結(jié)束后還有余力進(jìn)行其它需要功能的輸出,這塊在真正PLC里面也是很重要的,應(yīng)該會進(jìn)行邏輯效驗(yàn),遠(yuǎn)程通訊等功能,咱這個就都簡化掉了,僅僅為了測試掃描時間對一個內(nèi)存變量進(jìn)行增一操作而已,可以調(diào)用看看掃描周期時間是否超過了最小定時器時間等等輔助功能. 實(shí)測12M時鐘0.01秒執(zhí)行了這個小邏輯多達(dá)70多遍!


架構(gòu)有了,具體邏輯要怎么寫,最好還是在PLC模擬器上先試著編寫一下,功能沒問題了再抄到我們的單片機(jī)里面來,進(jìn)行逐句翻譯,因?yàn)閱纹瑱C(jī)匯編語言的調(diào)試還是很麻煩的,畢竟不直觀,還是在PLC模擬器里面做好了再搬進(jìn)來比較好。






Keil里面編譯成HEX文件后可以直接刷寫進(jìn)單片機(jī)使用了,真正用之前最好還是要根據(jù)單片機(jī)的晶振時鐘,再調(diào)整一下微定時器的定時參數(shù),盡量符合0.01秒的要求,不要偏差太大,還有一種方法是利用proteus軟件仿真硬件運(yùn)行也是不錯的。







通過反復(fù)修改匯編程序,通過仿真測試到目前為止我們只是完成了PLC芯片邏輯的軟件編寫,下面就可以燒寫進(jìn)51內(nèi)核的單片機(jī)內(nèi)實(shí)際運(yùn)行了,這里我使用的是STC的國產(chǎn)單片機(jī),15W408系列,DIP20替換AT89C2051還能多增加幾個IO腳,僅僅幾元,價(jià)格便宜,1T內(nèi)核,性能強(qiáng)勁(之前寫的0.01秒掃描70多次是在仿真環(huán)境下,12T的89C2051達(dá)到的性能,如果使用STC的1T系列要注意實(shí)際運(yùn)行速度會增加12倍,達(dá)到0.01秒掃700多次,有時候太快了也會引起煩惱呵呵),IO可以設(shè)定為強(qiáng)推挽,驅(qū)動力強(qiáng),串口直接下載程序,編程方便,對于非專業(yè)應(yīng)用,給DIYer做點(diǎn)小東西還是很合適的.使用STC專用下載線(僅僅十幾塊,比別的芯片下載編程器可便宜多了,甚至使用5元的USB轉(zhuǎn)TTL串口線也能用,只是需要手動斷電一次而已,專用的下載線增加了自動斷電功能,使下載更方便些)下載進(jìn)芯片,得到一只帶程序的芯片.








利用面包板搭建測試電路實(shí)際驗(yàn)證邏輯功能,如果邏輯不滿意或者定時時間不合適還可以回去修改程序,重新編譯下裝,直到滿意為止,為了能夠應(yīng)用到實(shí)際環(huán)境中,還需要為它配上電源電路,輸入按鍵開關(guān),輸出驅(qū)動三極管或繼電器等硬件才能和實(shí)際的應(yīng)用環(huán)境配合使用,發(fā)揮預(yù)想的作用。



利用面包板搭建測試電路實(shí)際驗(yàn)證邏輯功能,如果邏輯不滿意或者定時時間不合適還可以回去修改程序,重新編譯下裝,直到滿意為止,為了能夠應(yīng)用到實(shí)際環(huán)境中,還需要為它配上


電源


電路,輸入按鍵開關(guān),輸出驅(qū)動


三極管


繼電器


等硬件才能和實(shí)際的應(yīng)用環(huán)境配合使用,發(fā)揮預(yù)想的作用。











實(shí)際應(yīng)用中對于抗干擾還是需要花費(fèi)一些心思的,干擾來自一下幾個方面:1電磁閥動作時候產(chǎn)生的電磁脈沖和反電動勢,這個可以使用二極管做續(xù)流,來消除電磁閥斷電反電動勢脈沖,通過增加光耦進(jìn)行輸出隔離,也可以提高抗干擾性能;2 對于開關(guān)輸入通道要考慮單片機(jī)輸入電阻是比較高的,長線容易引入外部干擾,這個問題可以通過在輸入引腳外加1K上拉電阻的方法來降低輸入阻抗,達(dá)到抗干擾的目的;3 電源也是干擾源,因?yàn)榇蠊β孰姍C(jī)和電磁閥的動作都會造成24V電源的瞬間劇烈波動,盡管單片機(jī)的電源消耗不大但是很容易因干擾而復(fù)位或者造成輸入輸出不正常等現(xiàn)象,因此電源濾波也很重要,通過示波器可以觀察到當(dāng)電機(jī)或電磁閥動作時,單片機(jī)5V電源的波動情況,通過采取增加π型LC濾波,可以極大降低電源引起的干擾.4 電磁輻射也要考慮,單片機(jī)控制板本體最好增加金屬外殼并接地,抵抗電機(jī)電磁閥或廚房用電設(shè)備的外部干擾,這就是為什么我喜歡收集金屬糖果糕點(diǎn)盒的原因,呵呵!對于DIYer來講,有時候想法挺好,試驗(yàn)也成功,但是實(shí)際裝機(jī)后卻失敗了,這些可能不是我們做的不好,實(shí)際是沒有考慮到復(fù)雜的工作環(huán)境,真正的產(chǎn)品為什么比我們DIY的成本高,其主要方面就是考慮的實(shí)際工作現(xiàn)場的復(fù)雜性,真正的核心控制可能很簡單,但是周邊的各種保護(hù)很復(fù)雜,甚至接錯線了也要考慮到,成本和可靠性就成正比了,希望朋友們DIY快樂!



實(shí)際應(yīng)用中對于抗干擾還是需要花費(fèi)一些心思的,干擾來自一下幾個方面:


1電磁閥動作時候產(chǎn)生的電磁脈沖和反電動勢,這個可以使用


二極管


做續(xù)流,來消除電磁閥斷電反電動勢脈沖,通過增加光耦進(jìn)行輸出隔離,也可以提高抗干擾性能;


2 對于開關(guān)輸入通道要考慮單片機(jī)輸入電阻是比較高的,長線容易引入外部干擾,這個問題可以通過在輸入引腳外加1K上拉電阻的方法來降低輸入阻抗,達(dá)到抗干擾的目的;


3 電源也是干擾源,因?yàn)榇蠊β孰姍C(jī)和電磁閥的動作都會造成24V電源的瞬間劇烈波動,盡管單片機(jī)的電源消耗不大但是很容易因干擾而復(fù)位或者造成輸入輸出不正常等現(xiàn)象,因此電源濾波也很重要,通過


示波器


可以觀察到當(dāng)電機(jī)或電磁閥動作時,單片機(jī)5V電源的波動情況,通過采取增加π型LC濾波,可以極大降低電源引起的干擾.


4 電磁輻射也要考慮,單片機(jī)控制板本體最好增加金屬外殼并接地,抵抗電機(jī)電磁閥或廚房用電設(shè)備的外部干擾,這就是為什么我喜歡收集金屬糖果糕點(diǎn)盒的原因,呵呵!


對于DIYer來講,有時候想法挺好,試驗(yàn)也成功,但是實(shí)際裝機(jī)后卻失敗了,這些可能不是我們做的不好,實(shí)際是沒有考慮到復(fù)雜的工作環(huán)境,真正的產(chǎn)品為什么比我們DIY的成本高,其主要方面就是考慮的實(shí)際工作現(xiàn)場的復(fù)雜性,真正的核心控制可能很簡單,但是周邊的各種保護(hù)很復(fù)雜,甚至接錯線了也要考慮到,成本和可靠性就成正比了,希望朋友們DIY快樂!

關(guān)鍵字:51單片機(jī)  DIY  PLC編程 引用地址:51單片機(jī)DIY做PLC編程

上一篇:在51單片機(jī)系統(tǒng)中使用8155
下一篇:基于EDA的LED屏下位機(jī)系統(tǒng)設(shè)計(jì)

推薦閱讀

為提高亮度吸引消費(fèi)者,市面上3C產(chǎn)品一般采用高色溫的背光組件,但高色溫代表高藍(lán)光,最常見的就是你我每天都離不開的智慧手機(jī)或平板屏幕所散發(fā)的藍(lán)光。現(xiàn)代人每天長時間注視屏幕,藍(lán)光穿透力強(qiáng),對眼睛造成傷害時有所聞。根據(jù)研究眼睛長期暴露在高藍(lán)光環(huán)境容易導(dǎo)致黃斑部病變也容易破壞水晶體提早誘發(fā)白內(nèi)障,降低藍(lán)光傷害變成廣大低頭族們首要自保的選項(xiàng)...
美國司法部周一 (28 日) 正式向華為與其財(cái)務(wù)長孟晚舟提起總計(jì) 23 項(xiàng)的刑事指控,其中有 13 項(xiàng)主要是針對華為財(cái)務(wù)長孟晚舟與 3 家華為子公司,罪名包括電匯詐騙、詐欺銀行、妨礙司法公正、洗錢,與受制裁伊朗進(jìn)行業(yè)務(wù)。美國封殺華為,分析師開始討論,華為等中國大型電信設(shè)備商被禁止與美商交易的多空可能性,預(yù)期這四檔北歐電信設(shè)備廠 Adtran周...
1. 注冊軟中斷當(dāng)然是通過open_softirq例子如下:void __init init_timers(void) { int err = timer_cpu_notify(&timers_nb, (unsigned long)CPU_UP_PREPARE, (void *)(long)smp_processor_id()); init_timer_stats(); BUG_ON(err == NOTIFY_BAD); register_cpu_notifier(&timers_nb...
1月31日消息,本周摩托羅拉、小米先后展示了隔空充電技術(shù)。對于這項(xiàng)新技術(shù),有專家表示,實(shí)現(xiàn)隔空充電不存在技術(shù)難題,關(guān)鍵是習(xí)慣和價(jià)格。據(jù)小米介紹,小米隔空充電技術(shù)內(nèi)置5個相位干涉天線,可對手機(jī)進(jìn)行毫秒級空間定位,精準(zhǔn)探測手機(jī)位置,144個天線構(gòu)成的相位控制陣列,通過波束成形將毫米波定向發(fā)射給手機(jī),手機(jī)通過微型信標(biāo)天線接收,可實(shí)現(xiàn)數(shù)米內(nèi)5瓦...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved