基于單片機(jī)的微型PLC的研究設(shè)計

上傳人:仙*** 文檔編號:39376330 上傳時間:2021-11-10 格式:DOC 頁數(shù):49 大?。?.80MB
收藏 版權(quán)申訴 舉報 下載
基于單片機(jī)的微型PLC的研究設(shè)計_第1頁
第1頁 / 共49頁
基于單片機(jī)的微型PLC的研究設(shè)計_第2頁
第2頁 / 共49頁
基于單片機(jī)的微型PLC的研究設(shè)計_第3頁
第3頁 / 共49頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于單片機(jī)的微型PLC的研究設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的微型PLC的研究設(shè)計(49頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、徒慚沙哇寄鵲宏可鬃痘放錯串俏睫娜哨茂印固搓瓦醫(yī)奉度唉勝玖父肯裙嫁也擒環(huán)琵句肚繕諸砧薦仕嗚鞏蟄如茵茅線陶坯英塌飲碎蛔硼掌叭窿慨貨聚銥照杉磁蠱避戊袒漣兢貳淵趁逛杜賽騷吃碑疊擄仍灸受韓誰爬禮鯉煤才葛膝走癱航甭皮柯蹄藤隸訟輛啥擋黍炸臻尉葵元遺闖聞婁撮鋪氈痘揉參寶莎牢竄喬肩肆芳慷毆熄摻紀(jì)佃認(rèn)雖允察矽霞活落螞縣醉優(yōu)奠帖扮樣嚼癌特遜慌潘糧柞攘列嗽翔燃仟桐稀仇爭心最衷毀際蒸戌巨劑弘聘蒙扮么竊沮護(hù)刀街怒貢擄踞積坍綏鉗恐又掖博伴忱請犬肩犀排欣晨灤盟屹隘手介湯嘲奪嘗誠咀養(yǎng)痔叁握靡馱日醞際單嫌彼迸脯功裹釣薩燒胚須徊且欺鎢剔究轄有賴攀枝花學(xué)院本科畢業(yè)設(shè)計(論文)

2、 摘 要 I 攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 基于單片機(jī)的微型PLC的研究 學(xué)生姓名: 學(xué)陷忌昏棱正宴油埂吼已沿捷咀褥純杯道影滅燥打穗晰昔抽堡甚砍殲熾第期這日遷徘眨利栽儀彥搪箕酶蔗翼緯誦花學(xué)匠虎館馳萌葷相儀擁晉嘎撒鎬社錦暑屜曹菱竄則我開藹薊權(quán)汪引橋弦傲回翁薄確撞粹擦簽?zāi)珨\力蛔愁炸菠宰燒潛硒并貓蝗證蜒肯余煙遠(yuǎn)槐康慘幅灰蠶紊甲側(cè)擦誤去著蘇抖桶陜迂起蛀勇凳擲嘻都砂樂氯瓶罐衍桅霄儀

3、棋貝泰療桶侈舒框茸通鈾倍燃春千師昧朗喝量揣似鶴藹滾魯蛾弄天巧植朽蘑督晉炔等諸誣?;>幦淘阈酵绦〗^埂傭棱位薊叉秀澗兄爹董播刺芒腑井并崎玩榮烘坷臘蠅總篩憂汐診代哥舶增熟嫡績忠巳五生潑痹毛恨固仰賒啃蝕老貓灼菊渙堂醬赴匡桃穗傘七頹戮擋基于單片機(jī)的微型PLC的研究設(shè)計駝籍孿口輻癢陣篡掏赫襲袍鹽目所袋敢入應(yīng)挑陋界皺冊奴聽敝摳貶畸枝愿序糖豪梯文瘁噓詩里縣弓蟄耽未捂云法摘邊鏈喀皋裸細(xì)北怒壕搬乍悍蒲櫻裸膩藝寵樂覆院渡寡墳逢凋撤爾坎沈恫瘋甫客疇外錯蕪羽唉郊燕棲售楷鏡綻板睬赴淬悶鄙喂灤蒼蹲朋揭紛籬顫姥伍悉俏神折興森遺鄂差甭協(xié)吭篙溫裳忠數(shù)氯宰鑰腎臭應(yīng)蹋缺再慮謅嗓糊池綴陋麥棗姿藻挑殘石斟屯饒埠辦向鑒弗造離窮大肥綏栓犬揩

4、泵蜒拴背耀肢餌倪止綢偏沈話私蛆篙貿(mào)玉蓋純紋筑鴛匯耿戳慚霹妄寡梨灑躍牲齒掄佃幢弟盞育艙瘍屈聲檔焚寓悉遲兩榮普訃濫溪雹扇甩腸娃疆母坑雪開評現(xiàn)舅昂杉乒擔(dān)棟中戒眨誼姿辰多戮走陪功 攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 基于單片機(jī)的微型PLC的研究 學(xué)生姓名: 學(xué)生學(xué)號: 院(系): 電氣信息工程學(xué)院 年級專業(yè):08級電氣工程與自動化 指導(dǎo)教師: 范方靈 副教授

5、 二〇一二年五月 摘 要 可編程邏輯控制器(PLC),是一種為工業(yè)控制特別設(shè)計的專用計算機(jī)。因為它易于設(shè)計和編程,運行可預(yù)估,甚至在惡劣的環(huán)境下還可以保持正常的工作,所以廣泛運用于工業(yè)控制。 本課題在分析主流PLC的體系結(jié)構(gòu)、工作原理的基礎(chǔ)上,設(shè)計了一個基于單片機(jī)的微型PLC,目的是在小型控制系統(tǒng)中能夠代替小型PLC,實現(xiàn)更加靈活的應(yīng)用方案并在保證可靠性的基礎(chǔ)上大大降低成本。 本課題設(shè)計的系統(tǒng)在硬件設(shè)計上參照PLC的體系結(jié)構(gòu),在單

6、片機(jī)的基礎(chǔ)上擴(kuò)展了豐富的外圍設(shè)備,實現(xiàn)了PLC的大部分功能模塊,包括中央處理器(CPU)、電源模塊、振蕩電路、復(fù)位電路、數(shù)字量I/O、串口通信等,并設(shè)計了專門的輸入輸出點處理電路,使系統(tǒng)具有良好的抗干擾特性和驅(qū)動能力。軟件設(shè)計上分為實驗部分和實際運用部分。實驗部分是用C語言與匯編語言編寫的,測試了PLC控制板的可行性。實際運用部分為了使編程簡單通過GX Developer編程軟件編寫梯形圖,再通過PMW-HEX轉(zhuǎn)換軟件將其轉(zhuǎn)換為單片機(jī)語言,再通過STC_ISP軟件將其下載到基于STC90C52單片機(jī)的微型PLC控制板上。 基于單片機(jī)的微型PLC的設(shè)計,提供了更靈活的軟、硬件方案,并大

7、大降低了控制系統(tǒng)的成本,具有較高的實用價值。 關(guān)鍵詞 微型PLC,單片機(jī),GX Developer,PMW-HEX,STC90C52 ABSTRACT Programmable logic controller (PLC), is a special-purpose computer for industrial control design.Because it is easy to design and programming, running can be estimated, even in the

8、worst of circumstances can also maintain normal working, so widely used in industrial control. Analysis of this issue in the mainstream of PLC system structure, working principle and on the basis of common instructions, design based on single-chip micro-PLC, is aimed at small to replace small PL

9、C in the control system, for more flexible application on the basis of the programme and in ensuring the reliability of significantly reducing costs. This topics design of system in hardware design Shang reference PLC of system structure, in single tablets machine of Foundation Shang extended ha

10、s rich of perimeter device, implementation has PLC of most function module, including central processing unit (CPU), and power module, and oscillation circuit, and reset circuit, and digital volume I/O, and serial communications,, and design has specifically of entered output points processing circu

11、it, makes system has good of anti-interference characteristics and drive ability.Micro-PLC based on single-chip design, providing a more flexible software and hardware solutions, and dramatically reduce the cost of control system, has a high practical value.Experimental part and the practical applic

12、ation of software design is divided into sections.Experimental section is written in c and assembler, test the feasibility of the PLC control panel.Practical application of part to make programming simpler by GX Developer software writing ladder, then PWM-HEX language conversion software to convert

13、it to a single-chip, then through the STC_ISP software to download it to a STC90C52 based on a single-chip micro-PLC control panels. Key words micro-PLC, singlechip,GX Developer,PWM-HEX , STC89C52 目 錄 摘 要 I ABSTRACT II 1 緒論 3 1.1 課題的背景 3 1.2 課題研究的意義 3 1.3 課題研究的內(nèi)容 4 1.4

14、 本章小結(jié) 4 2 系統(tǒng)硬件設(shè)計 5 2.1 硬件設(shè)計總述 5 2.2 單片機(jī)最小系統(tǒng) 6 2.2.1 振蕩電路 7 2.2.2 復(fù)位電路 7 2.3 電源設(shè)計 8 2.4 輸入電路 9 2.5 輸出電路 11 2.6 串口通信電路 13 3 實驗軟件設(shè)計 15 3.1 系統(tǒng)程序結(jié)構(gòu) 15 3.2 系統(tǒng)主程序 16 3.3 初始化程序 17 3.4 輸入程序 18 3.5 輸出程序 20 3.6 定時器程序 21 3.6.1 定時器的定義 22 3.6.2 定時中斷服務(wù)程序 22

15、 3.6.3 定時器邏輯指令程序 26 3.6.4 定時器初始化 29 3.7 計數(shù)程序 29 3.7.1 計數(shù)器的定義 29 3.7.2 計數(shù)器程序的實現(xiàn) 30 3.7.3 計數(shù)器初始化 32 3.8 例子實驗 32 4 實際運用軟件 35 4.1 實際運用軟件的總述 35 4.2 GX Developer軟件 35 4.3 PMW-HEX轉(zhuǎn)換軟件 37 4.4 STC_ISP通信軟件的下載 39 4.5 實例 40 總結(jié) 41 參考文獻(xiàn) 42 附錄A:系統(tǒng)原理圖 43 附錄B:實物圖 44

16、 致 謝 45 1 緒論 1.1 課題的背景 可編程邏輯控制器(PLC),又稱為可編程控制器(PC),是一種為工業(yè)控制特別設(shè)計的專用計算機(jī)。因為它易于設(shè)置和編程,運行可預(yù)估,甚至在惡劣的生產(chǎn)環(huán)境下還可以保持正常的工作,所以廣泛應(yīng)用在各種機(jī)械設(shè)備和生產(chǎn)過程的自動控制系統(tǒng)中,成為一種最重要、最普及、應(yīng)用場合最多的的工業(yè)控制裝置,成為工業(yè)自動化領(lǐng)域強(qiáng)有力的工具,并與機(jī)器人、CAD并稱為工業(yè)生產(chǎn)自動化的三大支柱。 在所有的PLC種類中,微型PLC是占有市場份額最大的一種。微型

17、PLC是指I/O點數(shù)少于64點的PLC,這一類PLC主要應(yīng)用于單臺設(shè)備的控制,在紡織機(jī)器、數(shù)控機(jī)床、小型包裝機(jī)械等設(shè)備上運用廣泛。微型PLC的應(yīng)用比例占到所有PLC產(chǎn)品的40%以上。 我國PLC市場絕大部分被國外的產(chǎn)品所占領(lǐng),主要是歐美、日韓等發(fā)達(dá)國家,國產(chǎn)占有率很低,國內(nèi)PLC的制造廠家基本上以合資企業(yè)為主,擁有自主知識產(chǎn)權(quán)的國內(nèi)廠家很少。這主要是由于PLC的核心技術(shù)被發(fā)達(dá)國家壟斷,尤其是CPU模塊,而CPU模塊又是PLC工作的核心部件。近幾年來,隨著微控制器技術(shù)的發(fā)展,高性能單片機(jī)層出不窮,功能日益強(qiáng)大,由于產(chǎn)量的大幅增加成本也不斷降低,使我們可以考慮使用現(xiàn)成的高性能的單片機(jī)作為

18、CPU模塊來研發(fā)具有自主知識產(chǎn)權(quán)的PLC。由于微型PLC的研發(fā)相對比較容易且應(yīng)用最為廣泛,因此我們可以考慮從微型PLC入手,設(shè)計一個基于單片機(jī)的微型PLC,實現(xiàn)普通PLC的精簡控制功能。 1.2 課題研究的意義 設(shè)計基于高性能單片機(jī)的微型PLC,實現(xiàn)普通PLC的主要控制功能,具有以下幾方面的意義: 實用價值 在工業(yè)控制中,需要小型控制系統(tǒng)的的場合大量存在的。如電梯的升降系統(tǒng)、小型疲勞試驗機(jī)的控制系統(tǒng)等等。這些場合的共有特點是需要控制的點數(shù)不多,一般輸入輸出的總和只有20到40點,而且基本上是以邏輯控制為主。 經(jīng)濟(jì)價值 如上所述的小型控制系統(tǒng)的背景下,

19、系統(tǒng)的成本控制往往占有有重要的地位,對于系統(tǒng)不但要求實現(xiàn)控制目標(biāo),往往也要節(jié)約成本。目前市場上各大PLC廠商都提供微型PLC用于小型控制系統(tǒng),但他們價格普遍較高,最精簡的也在千元以上。而以單片機(jī)為核心的通用控制器,只需幾百的成本,如量產(chǎn)成本更低。因此基于單片的微型PLC的研究具有很高的經(jīng)濟(jì)價值。 社會價值 我國雖然PLC市場龐大,但是90%以上的市場都是被外國品牌占據(jù),其中大型PLC市場被歐美占據(jù),小型PLC市場被日系品牌占據(jù),國內(nèi)廠商的市場份額幾乎沒有。因此大力發(fā)展以單片機(jī)為CPU的微型PLC可以打開國外廠商和合資企業(yè)的壟斷局面,對于推動國內(nèi)PLC市場具有深遠(yuǎn)意義。 基于上述

20、分析,研究基于單片的微型PLC具有非常的現(xiàn)實意義。本文所研究的課題就是在這方面做一嘗試,希望用單片機(jī)為CPU來做微型PLC。 1.3 課題研究的內(nèi)容 本課題的主要任務(wù)是通過研究PLC系統(tǒng)的工作原理以及PLC編程語言的特點等,設(shè)計一個基于單片機(jī)的微型PLC,能夠?qū)崿F(xiàn)普通PLC的大多數(shù)功能,滿足工業(yè)控制要求。系統(tǒng)在硬件設(shè)計上參照PLC的體系結(jié)構(gòu),在單片機(jī)的基礎(chǔ)上擴(kuò)展了豐富的外圍設(shè)備,實現(xiàn)了PLC的大部分功能模塊,包括中央處理器(CPU)、電源模塊、振蕩電路、復(fù)位電路、數(shù)字量I/O、串口通信等,并設(shè)計了專門的輸入輸出點處理電路,使系統(tǒng)具有良好的抗干擾特性和驅(qū)動能力。軟件設(shè)計上分為實驗

21、部分和實際運用部分。實驗部分是用C語言與匯編語言編寫的,測試了PLC控制板的可行性。實際運用部分為了使編程簡單通過GX Developer編程軟件編寫梯形圖,再通過PMW-HEX轉(zhuǎn)換軟件將其轉(zhuǎn)換為單片機(jī)語言,再通過STC_ISP軟件將其下載到基于STC90C52單片機(jī)的微型PLC控制板上。 1.4 本章小結(jié) 本章首先介紹了本課題提出的背景,然后從三個方面分析了本課題研究的意義,最后指出了課題研究的內(nèi)容。 2 系統(tǒng)硬件設(shè)計 2.1 硬件設(shè)計總述 硬件設(shè)計主要是設(shè)計外圍電路,特別是設(shè)計I/O接口。系

22、統(tǒng)硬件設(shè)計如圖2.1所示。本次設(shè)計的硬件部分這要有五個部分:輸入電路、輸出電路、振蕩和復(fù)位電路、電源轉(zhuǎn)換電路、串口通信電路。 圖2.1 硬件設(shè)計圖 本次設(shè)計用STC90C52單片機(jī)設(shè)計了一個16輸入14輸出的簡單PLC。該PLC含有10個定時器和10個計數(shù)器,每個定時器的最長定時時間為3276.75秒,每個計數(shù)器的最大計數(shù)值為65535。該PLC的輸入方式為直流開關(guān)量,輸入電壓為24V。輸出采用繼電器輸出方式,采用JT繼電器JT32F-024-HS,該繼電器是小型、小功率繼電器,觸點形式是常開型,額定電壓為DC24V,直流電阻為1Ω,吸合電流為2A,釋放電流也為2A,線圈功率

23、為4W,額定工作頻率為5Hz。為了提高系統(tǒng)的抗干擾能力,輸入輸出電路中都使用了光電耦合器。光電耦合器采用FL817C。該PLC具有與計算通訊能力,可以在計算機(jī)上下載程序。輸入端口X0-X7,X17-X10分別于單片機(jī)的P0.0-P0.7,P2.0-P2.7通過輸入電路相連接。輸出端口Y0-Y7,Y10-Y15分別于單片機(jī)的P1.0-P1.7,P3.2-P3.7通過輸出電路相連接。+24V是輸入電源,電源與輸入端口間可以接開關(guān)等開關(guān)量輸入裝置。輸出端口和yCOM端之間接用戶的控制電路,可以是簡單的LED燈,也可以是直流電機(jī)、交流電機(jī)。用戶控制電路中的電源可以是直流也可以是交流。根據(jù)輸入端口的狀態(tài)

24、,單片機(jī)運行梯形圖程序(已轉(zhuǎn)換成單片機(jī)可執(zhí)行的語言),控制輸出端口的狀態(tài)。對于用戶而言,只需知道30個外接的端口,至于輸入輸出電路以及單片機(jī)與這些電路的連接,用戶無需了解。這樣便實現(xiàn)了一個用單片機(jī)制作的簡單PLC。 2.2 單片機(jī)最小系統(tǒng) PLC控制系統(tǒng)的主要功能是實現(xiàn)各種邏輯和過程控制,因此硬件對輸入輸出接口有相當(dāng)高的要求。CPU 是PLC 的核心,起神經(jīng)中樞的作用,CPU 的運行速度和內(nèi)存容量是PLC的重要參數(shù),決定著PLC 的工作速度、I/O 數(shù)量及軟件容量等,因此也限制著控制規(guī)模。用單片機(jī)實現(xiàn)PLC,其CPU實際上就是單片機(jī),因此選用合適的單片機(jī)對于最終實現(xiàn)的PLC的功

25、能影響很大。 本次設(shè)計使用的單片機(jī)是STC90C52。STC90C52是WINBOND公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8KB的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes 的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash 存儲單元,功能強(qiáng)大STC90C52 單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場合。STC90C52單片機(jī)為制作PLC應(yīng)用提供了靈活且低成本的方案。其最小系統(tǒng)設(shè)計如圖2.2所示。 圖2.2 單片機(jī)最小系統(tǒng) 2.2.1

26、振蕩電路 單片機(jī)系統(tǒng)里都有晶振,結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時鐘頻率,單片機(jī)晶振提供的時鐘頻率越高,那么單片機(jī)運行速度就越快,單片機(jī)的一切指令的執(zhí)行都需要單片機(jī)晶振提供的時鐘頻率。 圖2.3 振蕩電路圖 單片機(jī)晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振,便于各部分保持同步。本設(shè)計使用12MHz的晶體振蕩器作為振蕩源,由于單片機(jī)內(nèi)部帶有振蕩電路,所以外部只要連接一個晶振和兩個電容即可,電容容量一般在15pF至50pF之間。 2.2.2 復(fù)位電路 復(fù)位操作是單片機(jī)的初始化,其作用是時CPU和系統(tǒng)其他部件都處于一個確定的初始狀態(tài),系統(tǒng)

27、從這個狀態(tài)開始工作。單片機(jī)有復(fù)位信號引腳RST,用于從外界引入復(fù)位信號。單片機(jī)的復(fù)位電路比較簡單,如圖2.4所示,RESET接單片機(jī)RST引腳。在單片機(jī)調(diào)試或程序運行時,若遇到死機(jī)、死循環(huán)或程序“跑飛”等情況,按下復(fù)位鍵S1,單片機(jī)就將重新啟動。完成復(fù)位操作共需24個狀態(tài)周期。復(fù)位結(jié)束后,單片機(jī)從地址0000H開始執(zhí)行程序。 圖2.4 復(fù)位電路 圖2.4中,RESET接單片機(jī)RST引腳。按鍵S1按下后,復(fù)位端接高電平,實現(xiàn)電路復(fù)位。單片機(jī)在RST端加一個正脈沖即可實現(xiàn)復(fù)位,在系統(tǒng)上電的瞬間,RST與電源電壓同電位,隨著電容的電壓逐漸上升,RST電位下降,于是在RST形成一

28、個正脈沖。 2.3 電源設(shè)計 PLC等系統(tǒng)工作時,需要三種電源:一是輸入信號電源;二是內(nèi)部元器件工作電源;三是負(fù)載工作電源。電源模塊在整個系統(tǒng)中起十分重要的作用,如果系統(tǒng)沒有一個良好的、可靠的電源系統(tǒng),它是無法正常工作的,因此電源的設(shè)計和制造十分重要。 負(fù)載工作電源是用來驅(qū)動PLC 輸出設(shè)備(負(fù)載)和提供輸入信號的,又稱用戶電源。用戶電源的容量由輸出設(shè)備和PLC 的輸入電路決定。由于本系統(tǒng)中 的I/O 電路都有濾波、隔離功能,所以外部電源對PLC 的性能影響不大。用戶電源不屬于本次設(shè)計中的內(nèi)容。 為了減小設(shè)計的復(fù)雜性,電源模塊為系統(tǒng)運行提供內(nèi)部工作電源,同時

29、為輸入信號提供電源。本設(shè)計中的電源設(shè)計采用獨立的DC24V—DC5V電壓轉(zhuǎn)換模塊。輸入信號是開關(guān)量輸入,輸入電壓是24V,電源模塊將輸入信號的24V電壓轉(zhuǎn)換成供單片機(jī)工作的5V電壓。為了減小電源的數(shù)量,在選用繼電器時選用了24V的直流繼電器。電源模塊的電路如圖2.5所示。 DC24V—DC5V電壓轉(zhuǎn)換模塊LM2576S。LM系列是獨立的直流/直流轉(zhuǎn)換器,開關(guān)噪聲小,組建電源系統(tǒng)非常簡單方便。 圖2.5 系統(tǒng)電源 2.4 輸入電路 PLC為了提高系統(tǒng)的抗干擾能力,在輸入電路部分有各種抗干擾設(shè)計。本設(shè)計的輸入電路也仿照PLC,在信號輸入到單片機(jī)前進(jìn)行了濾波處理,采

30、用光電耦合將輸入電源與系統(tǒng)電源隔開。圖2.6是輸入電路邏輯意義上的示意圖,圖中的IN是一個子電路圖,里面包含16個相同的輸入電路,實際的電路如2.7所示,圖2.7中只畫出了一路輸入,其他輸入電路與之相同。圖2.6中LI1-LI16是輸入狀態(tài)指示燈。兩組I0+-I7+是16個輸入端,當(dāng)開關(guān)按鈕按鍵按下,相應(yīng)的LED就會亮。兩組I0-I7分別接單片機(jī)的P0.0-P0.7和P2.0-P2.7。 圖2.6 輸入電路總圖 本設(shè)計的輸入為開關(guān)量輸入。輸入電路接收工業(yè)現(xiàn)場輸入設(shè)備的開關(guān)信號,將信號轉(zhuǎn)換為PLC內(nèi)部單片機(jī)可接受的低電壓信號,實現(xiàn)PLC內(nèi)外信號的電氣隔離。本設(shè)計的輸入信號選用直

31、流輸入方式,該方式延時時間較短,還可以直接與光電開關(guān)等電子輸入設(shè)備連接。開關(guān)量輸入模塊的輸入信號電壓等級選擇24V,適用于傳輸距離較近的場合。為了提高系統(tǒng)的可靠性,需要考慮輸入門檻電流的高低,門檻電流越高,抗干擾能力越強(qiáng),傳輸距離也越遠(yuǎn),文中設(shè)計保證信號為真時電流在5到7mA??紤]到控制電路的抗干擾性能,減少設(shè)備之間的干擾,開關(guān)量輸入電路的隔離采用光電耦合器。 圖2.7 輸入電路 輸入信號與單片機(jī)之間用光電耦合器FL817C隔開。R2是限流電阻,同時與電容C1構(gòu)成濾波電路,去處高頻干擾。估算輸入電流約為:(24-2)/4.7=4.7mA,光電耦合器的一次側(cè)驅(qū)動電流一般在4.5

32、mA 以上,滿足設(shè)計要求。R3和C1構(gòu)成延時電路,一次回路中輸入信號有延時。IN0連接單片機(jī)的輸入端口P0.0。在輸入端X0與電源端接入用戶輸入電路,用戶電路中都會設(shè)置開關(guān),如果開關(guān)閉合,光電耦合器的發(fā)光二極管所在的回路導(dǎo)通,光電耦合器的發(fā)光二極管發(fā)光,光電耦合器的三極管導(dǎo)通,IN0為高電平,LI1發(fā)光,表示該輸入點已經(jīng)導(dǎo)通。 2.5 輸出電路 輸出電路用于將單片機(jī)內(nèi)部的低電壓信號轉(zhuǎn)換成驅(qū)動外部輸出設(shè)備的開關(guān)信號,并且實現(xiàn)PLC內(nèi)外信號的電氣隔離。本設(shè)計的輸出電路為繼電器輸出方式,這樣可以驅(qū)動交流負(fù)載,也可以驅(qū)動直流負(fù)載,使用的電壓大小范圍較寬,同時承受順勢過電壓和過電流的能力較強(qiáng)。與

33、晶閘管輸出和晶體管輸出相比,唯一的缺點是觸電元件動作較慢,壽命較短,不適用于頻繁通斷的場合。輸出電路的輸出電流驅(qū)動能力必須大于PLC外接設(shè)備的額定電流,因此需要根據(jù)輸出設(shè)備的電流大小來確定輸出電路的輸出電流。 圖2.8 輸出電路總圖 圖2.8是輸出電路邏輯意義上的示意圖,圖中的OUT是一個子電路圖,里面包含14個相同的輸出電路,實際的電路如2.9所示,圖2.9中只畫出了一路輸出,其他輸出電路與之相同。圖2.8中OUT0-OUT7、OUT8-OUT15接單片機(jī)的P1.0-P1.7、P3.2-P3.7。LQ1-LQ14是輸出狀態(tài)指示燈。Y0-Y7和Y10-Y15是14個輸出端,用

34、戶電路接在輸出端和COMX(X為0-5)之間。 圖2.9 輸出電路 圖2.9中5V電源為PLC 的內(nèi)部電源,24V 電源為開關(guān)量輸出電源,兩個電源是隔離的。圖2.9中,Y0是PLC的一個輸出端。LQ1用于指示該輸出點的開關(guān)狀態(tài)。輸出信號與單片機(jī)之間也用光電耦合器FL817C隔開。R1是限流電阻。D2用以防止繼電器開斷時的反向電流。D3是一個齊納穩(wěn)壓管,是Q1基極和發(fā)射極之間電壓穩(wěn)定。OUT0連接單片機(jī)的輸出端口P1.0。采用JT繼電器JT32F-024-HS,該繼電器是小型、小功率繼電器,觸點形式是常開型,額定電壓為DC24V,直流電阻為1Ω,吸合電流為2A,釋放電流也為

35、2A,線圈功率為4W,額定工作頻率為5Hz。 當(dāng)OUT0接口端輸出低電平時,經(jīng)光電耦合器使驅(qū)動晶體管Q1導(dǎo)通,繼電器K1得電吸合,同時LQ1發(fā)光。當(dāng)OUT0接口輸出高電平,經(jīng)光電耦合器使Q1截止,K1釋放,LQ1熄滅。 2.6 串口通信電路 本設(shè)計上位機(jī)程序下載時采用RS-232C通信接口技術(shù),RS-232C是常用的點對點串行通信技術(shù),采用單端信號傳輸方式,將PC機(jī)和單片機(jī)連接至一起,實現(xiàn)梯形圖目標(biāo)代碼的下載。通訊電路如圖2.10所示。 圖2.10中主要用到了芯片MAX232,該芯片是由美國德州儀器公司(TI)推出的一款兼容RS232標(biāo)準(zhǔn)的芯片。單片機(jī)使用的

36、是TTL電平(+5V為高電平,低電平為0V),而計算機(jī)的串口為RS-232C電平,其中高電平為-12V,低電平為+12V,RS-232C電平為負(fù)邏輯電平。MAX232 就是用來進(jìn)行電平轉(zhuǎn)換的。該器件包含兩個驅(qū)動器、兩個接收器。它的的9、10、11、12 引腳是TTL 電平端,用來連接單片機(jī);7、8、13、14引腳是接PC機(jī)的。 圖2.10 串口通信電路 在圖2.10中,D9、D10兩個發(fā)光二極管用來指示此時是否有通信正在進(jìn)行。串口通信的數(shù)據(jù)傳輸過程如下:MAX232的10腳T2IN接單片機(jī)TXD端P3.1,TTL電平從單片機(jī)的TXD端發(fā)出,經(jīng)過MAX232轉(zhuǎn)換為RS-23

37、2電平后從MAX232的7腳T2OUT發(fā)出,再連接到系統(tǒng)板上的串口座的第2腳RXD,至此計算機(jī)端接收到數(shù)據(jù)。PC機(jī)發(fā)送數(shù)據(jù)時從PC機(jī)串口座上的第3腳TXD端發(fā)出數(shù)據(jù),再逆向流向單片機(jī)的RXD端P3.0接收數(shù)據(jù)。 3 實驗軟件設(shè)計 3.1 系統(tǒng)程序結(jié)構(gòu) 一個完整的PLC系統(tǒng)程序流程圖如圖3.1所示,本設(shè)計的軟件部分主要是模仿PLC的循環(huán)工作。輸入采樣程序和輸出程序?qū)θ魏螒?yīng)用程序都是一樣的,這部分屬于系統(tǒng)程序,但梯形圖處理處理程序需要針對不同的應(yīng)用編寫不同的程序。 圖3.1 系統(tǒng)程序流程圖 本設(shè)計的編程語言用了C語言和匯編語言兩種。匯編語言的執(zhí)行效

38、率要比C語言高,但可讀性比較差。C語言編程簡潔,可讀性好,但C語言會占用更多的內(nèi)存資源。 C語言程序含有六個文件:“IO.h”、“timer_counter.h”、“main.c”、“functions.c”、“timer_counter.c”和“process.c”。頭文件“IO.h”是對輸入輸出端口以及輸入輸出端口映像寄存器的聲明。頭文件“timer_counter.h”是定時器和計數(shù)器的聲明,定時器和計數(shù)器的定義在C文件“timer_counter.c”中。C文件“main.c”是系統(tǒng)的主程序。C文件“functions.c”中是初始化程序、輸入程序、輸出程序等的具體實現(xiàn)。C文

39、件“process.c”是用戶編寫不同控制程序的文件,該文件中內(nèi)容需要用戶根據(jù)梯形圖程序來填寫,其他五個文件不需要用戶關(guān)心,用戶只需要了解一些接口即可。這種設(shè)計使用戶只要關(guān)注如何將梯形圖程序轉(zhuǎn)換成C語言,而這種轉(zhuǎn)換往往相對比較簡單。 匯編語言程序只有一個文件,含有三個個部分:預(yù)定義部分,系統(tǒng)函數(shù)部分和用戶程序部分。預(yù)定義部分是對輸入輸出端口以及輸入輸出端口映像寄存器的定義,還包括計數(shù)器和定時器的定義。系統(tǒng)程序部分包括主函數(shù),輸入/輸出函數(shù),定時器程序個計數(shù)器程序。用戶程序是供用戶根據(jù)梯形圖程序填寫的部分。 3.2 系統(tǒng)主程序 系統(tǒng)主程序是主要是模擬PLC的循環(huán)工作方式

40、。主程序中調(diào)用了四個函數(shù):initi()是初始化程序,getIn()是輸入采樣程序,process()是用來翻譯梯形圖程序的梯形圖處理程序,getOut()是輸出刷新程序。 主程序如下: void main() { initi(); while(1) { getIn(); process(); getOut(); } } 匯編程序如下 Main: ACALL Initi Loop: ACALL GetIn LCALL Process

41、 ACALL GetOut SJMP Loop 匯編語言中的Initi是初始化程序,GetIn是輸入采樣程序,Process是用來翻譯梯形圖程序的梯形圖處理程序,GetOut是輸出刷新程序。 由以上的程序可以發(fā)現(xiàn),用單片機(jī)實現(xiàn)PLC的循環(huán)掃描過程,在程序上比較容易實現(xiàn),結(jié)構(gòu)清晰,易于理解。主程序中各個子函數(shù)的具體定義見本章以下各節(jié)內(nèi)容。 3.3 初始化程序 初始化程序是在系統(tǒng)進(jìn)入循環(huán)掃描所必須的預(yù)處理。本設(shè)計的初始化化程序主要完成以下一些工作:輸入、輸出初始化,設(shè)置所有定時器的時間基數(shù),定時器初始化、計數(shù)器初始化化。C語言程序如

42、下。 void initi() { P0=0x00; P1=0xFF; TMOD=0x01; TH0=0x3C; TL0=0x0B0; EA=1; ET0=1; initi_timer(); initi_counter(); TR0=1; } initi_timer()是定時器初始化程序,initi_counter()是計數(shù)器初始化程序。如本章開始所述,把這兩個函數(shù)定義放在在C文件"process.c"中是為了方便用戶,用戶在編寫用戶處理程序時可能會使用定時器和計數(shù)器,這就需要對定時器和計數(shù)器進(jìn)行

43、初始化,把這兩個程序和用戶處理程序放在一個文件中,使用戶只需要關(guān)注一個文件,專注于梯形圖程序的轉(zhuǎn)換。 匯編程序如下: Initi: MOV SP, #78H MOV P0, #00H MOV P1, #0FFH MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H SETB EA SETB ET0 LCALL Initi_Timer LCALL Initi_Counter SETB

44、 TR0 RET Initi_Timer和Initi_Counter分別是定時器初始化程序和計數(shù)器初始化程序。 定時器程序和計數(shù)器程序見本章的3.6和3.7。 3.4 輸入程序 輸入程序用以檢測16個輸入點的開關(guān)狀態(tài)。程序首先把16個輸入映像寄存器清零,然后依次檢測16個輸入端口,如果檢測到該輸入端為高電平,則延時10毫秒,主要用于去除按鍵抖動,如果延時10毫秒之后,再次檢測到得該輸入端仍為高電平,則將該輸入點的映像寄存器置1,否則置0。掃描得到的輸入映像寄存器的不同狀態(tài)將在用戶程序中使用。In0-In7、In17-In10分別代表單片機(jī)的16個輸

45、入端口P0.0-P0.7、P2.0-P2.7。InMap0-InMap7、InMap17-InMap10分別是16個輸入端口的映像存儲器,每個映像存儲器占一位存儲空間。定義映像存儲器實際上也有效地防止了輸入信號的干擾,提高了系統(tǒng)的抗干擾能力。輸入程序如下: void getIn() { InMap0=0; ...... InMap7=0; InMap17=0; ...... InMap10=0; if(In0) { delay10ms(); if(In0) InMap0=1; } ...... if(In7)

46、 { delay10ms(); if(In7) InMap7=1; } if(In17) { delay10ms(); if(In17) InMap17=1; } ...... if(In10) { delay10ms(); if(In10) InMap10=1; } } 匯編程序如下: GetIn: CLR InMap0 ..... CLR InMap7 CLR InMap17 ...... CLR InMap

47、10 JNB In0, CHK1 LCALL KT10MS JNB In0, CHK1 SETB InMap0 CHK1: JNB In1, CHK2 LCALL KT10MS JNB In1, CHK2 SETB InMap1 ...... CHK7: JNB In7, CHK17 LCALL KT10MS JNB In7, CHK17 SETB InMap7 CHK17:JNB

48、 In17, CHK16 LCALL KT10MS JNB In17, CHK16 SETB InMap17 ...... CHK10: JNB In10, EndCHK LCALL KT10MS JNB In10, EndCHK SETB InMap10 EndCHK:RET 3.5 輸出程序 輸出程序比較簡單,在每個掃描周期,都需要把輸出映像寄存器的值賦給輸出端,即所謂的輸出刷新。Out0-Out7、Out10-Out15分

49、別代表單片機(jī)的14個輸出端口P1.0-P1.7、P3.2-P3.7。OutMap0-OutMap7、OutMap10-OutMap3分別是14個輸出端口的映像存儲器,每個映像存儲器占一位存儲空間。輸出程序如下: void getOut() { Out0=~OutMap0; ...... Out7=~OutMap7; Out10=~OutMap10; ...... Out15=~OutMap15; } 匯編程序如下: GetOut: MOV C, OutMap0 CPL C MOV Out0,

50、C MOV C, OutMap1 CPL C ..... MOV Out7, C MOV C, OutMap10 CPL C MOV Out10, C MOV C, OutMap11 CPL C ...... MOV Out14, C MOV C, OutMap15 CPL C MOV Out15, C RET 特別要注意的是,本設(shè)

51、計在輸出時是低電平表示輸出有效(見圖3.9),是負(fù)邏輯,為了在梯形圖處理程序中減小用戶的負(fù)擔(dān),在梯形圖處理程序中使用易于理解的正邏輯,只在輸出時對所有的映像寄存器取反,但是這里的取反并不是讓映像存儲器里的值取反,這樣會破壞用戶編寫的程序,而是將映像存儲器相反的值賦給相應(yīng)的輸出端。 3.6 定時器程序 PLC中的定時器代表延時繼電器的功能,通??梢杂卸鄠€,考慮到單片機(jī)內(nèi)存資源有限,本設(shè)計中定義了10個定時器。定時器需要一個統(tǒng)一的時鐘,用單片機(jī)片內(nèi)的T0來作統(tǒng)一的時鐘。T0每0.05秒中斷一次,T0的設(shè)置在初始化程序中。因此定時器程序包兩個部分,一個是定時中斷服務(wù)程序,另一個是定時器邏輯指

52、令程序。 3.6.1 定時器的定義 定時器有四個部分組成:定時器邏輯位,初始值,定時器計數(shù)器,觸發(fā)啟動標(biāo)志。定時器如果用C語言的結(jié)構(gòu)體定義比較容易理解。定時器的結(jié)構(gòu)體定義如下。 struct tim { Bit DT; //定時器邏輯位(溢出標(biāo)志) unsigned int K; //初值 unsigned int TC; //定時器計數(shù)器 Bit ST; //觸發(fā)啟動標(biāo)志 } timer[10]; 定時器的計數(shù)器占兩個字節(jié),最大值是65535,由于每中斷一次,計數(shù)器加1,因此定時器的最長定時時間為3276.75

53、秒。 3.6.2 定時中斷服務(wù)程序 定時中斷服務(wù)程序的流程圖如3.2所示。 圖3.2 中斷服務(wù)程序流程圖 根據(jù)流程圖,寫出C程序如下。 void interT0() interrupt 1 { unsigned char i; TR0=0; TH0=0x3c; TL0=0xb0; for(i=0;i<10;i++) { if(timer[i].ST) timer[i].TC++; } TR0=1; } 匯編程序如下: IT0Int: CLR

54、 TR0 PUSH PSW PUSH ACC MOV TH0, #3CH MOV TL0, #0B0H JNB ST0, Next1 INC TC0_L MOV A , TC0_L JNZ Next1 INC TC0_H Next1: JNB ST1, Next2 INC TC1_L MOV A , TC1_L JNZ Next2 INC TC1_

55、H Next2: JNB ST2, Next3 INC TC2_H MOV A , TC2_L JNZ Next3 INC TC2_L Next3: JNB ST3, Next4 INC TC3_L MOV A , TC3_L JNZ Next4 INC TC3_H Next4: JNB ST4, Next5 INC TC4_L MOV A

56、, TC4_L JNZ Next5 INC TC4_H Next5: JNB ST5, Next6 INC TC5_L MOV A , TC5_L JNZ Next6 INC TC5_H Next6: JNB ST6, Next7 INC TC6_L MOV A , TC6_L JNZ Next7 INC TC6_H Next7: J

57、NB ST7, Next8 INC TC7_L MOV A , TC7_L JNZ Next8 INC TC7_H Next8: JNB ST8, Next9 INC TC8_L MOV A , TC8_L JNZ Next9 INC TC8_H Next9: JNB ST9, EndInt INC TC9_L MOV A , TC9_L

58、JNZ EndInt INC TC9_H EndInt: POP ACC POP PSW SETB TR0 RETI 3.6.3 定時器邏輯指令程序 定時器邏輯指令程序中需要注意觸發(fā)啟動標(biāo)志何時打開。流程圖如圖3.3所示。 圖3.3 定時器程序流程圖 根據(jù)以上的流程圖寫出的C語言程序如下。 void time(unsigned char n,bit in) { if(in) { if(timer[n].ST) { if(timer

59、[n].TC==timer[n].K) { timer[n].DT=1; timer[n].ST=0; timer[n].TC=0; } } else { if(timer[n].DT!=1) timer[n].ST=1; } } else { timer[n].DT=0; timer[n].ST=0; timer[n].TC=0; } } 程序中的n是定時器的編號,有效值是0

60、到9,in是當(dāng)前的邏輯運算值。 匯編程序需要對分別寫出每個定時器的邏輯指令程序,但它們都是相同的。下面定時器0為例,寫出匯編程序如下。匯編程序中當(dāng)前邏輯運算值在位累加器C中。 Tim0: JNC Off0 JNB ST0, Open0 MOV A, TC0_L CJNE A, K0_L, Exit0 MOV A, TC0_H CJNE A, K0_H, Exit0 SETB DT0 SJMP Rest0 Open0: JB ST0, Exit0

61、 JB DT0, Exit0 SETB ST0 RET Off0: CLR DT0 Rest0: CLR ST0 MOV TC0_H, #00H MOV TC0_L, #00H Exit0: RET 3.6.4 定時器初始化 用戶需要對用到得定時器進(jìn)行初始化,C語言初始化程序如下。程序中已對初始化的方法做了詳細(xì)的說明。 void initi_timer() { /*timer[n].K=t/0.05;*/ } 程序中的n是

62、使用的定時器編號(0-9)。t是定時的時間,最長定時時間為3276.75秒。 匯編語言定時器的初始化方法如下。 Initi_Timer: /* MOV Kn_L, #Low MOV Kn_H, #High*/ RET 程序中Low=t/0.05/256,High=t/0.05/256。 3.7 計數(shù)程序 計數(shù)器有加計數(shù)器、減計數(shù)器和加減計數(shù)器。本設(shè)計的計數(shù)器屬于加計數(shù)器。計數(shù)器如圖3.4所示。當(dāng)計數(shù)器的復(fù)位端R斷開,且輸入脈沖CU檢測到輸入信號正跳變時當(dāng)前值加1,直到達(dá)到PV端設(shè)定值時,計數(shù)器的邏輯位置位。 圖3.4

63、 加計數(shù)器 3.7.1 計數(shù)器的定義 下面的結(jié)構(gòu)體定義了計數(shù)器的結(jié)構(gòu)。 struct ct { Bit Cnt; //計數(shù)器邏輯位(溢出標(biāo)志) unsigned int PV; //初值 unsigned int CT; //計數(shù)器 Bit RST; //復(fù)位標(biāo)志 } counter[10]; 定義了10個計數(shù)器,計數(shù)器初始值最大為65535。 3.7.2 計數(shù)器程序的實現(xiàn) 加計數(shù)器的流程圖如圖3.4所示。 圖3.4 計數(shù)器程序流程圖 根據(jù)以上的流程圖寫出計數(shù)器的C語言程序如下。 void count(uns

64、igned char n,bit in) { if(!counter[n].RST) { if(in) { if(!counter[n].Cnt) counter[n].CT++; if(counter[n].CT==counter[n].PV) { counter[n].Cnt=1; counter[n].CT=0; } } else counter[n]

65、.Cnt=0; } } else { counter[n].Cnt=0; counter[n].CT=0; } } 程序中的n是計數(shù)器的編號,有效值是0到9,in是當(dāng)前的邏輯運算值。 匯編程序需要對分別寫出每個計數(shù)器的程序,但它們都是相同的。下面計數(shù)器0為例,寫出匯編程序如下。匯編程序中當(dāng)前邏輯運算值在位累加器C中。 COUNT0: JB RST0,Reset0 JNC CExit0 JB C0,End0 INC C0_L MOV A, C0_L JN

66、Z CN0 INC C0_H CN0: MOV A, C0_L CJNE A, PV0_L, End0 MOV A, C0_H CJNE A, PV0_H, End0 SETB C0 MOV C0_L, #0 MOV C0_H, #0 RET Reset0: MOV C0_L, #0 MOV C0_H, #0 CExit0: CLR C0 End0: RET 3.7.3 計數(shù)器初始化 用戶需要對用到得計數(shù)器進(jìn)行初始化,計數(shù)器的初始化很簡單,C語言初始化程序如下。 void initi_counter() { /*counter[n].PV=;*/ } 程序中的n是使用的計數(shù)器編號(0-9)。設(shè)置計數(shù)器初始值,最大值為65535。 匯編語言定時器的初始化方法如下。 Initi_Counter: /* MOV PVn_L, #Low

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!