段春艷(湖南交通職業(yè)技術(shù)學(xué)院,湖南長沙 410132)
多通道I/O裝置的設(shè)計(jì)與實(shí)現(xiàn)
段春艷
(湖南交通職業(yè)技術(shù)學(xué)院,湖南長沙 410132)
由于目前市場上普遍使用的多I/O裝置端口數(shù)量有限,且端口模式固定,這與功能越來越強(qiáng)大的工業(yè)控制系統(tǒng)相矛盾。本文主要針對工業(yè)控制領(lǐng)域低成本、高可靠性、高穩(wěn)定性的要求,設(shè)計(jì)了一套基于STC12C5A60S2單片機(jī)的主從式多通道I/O裝置。該裝置由主板和分板組成,主板負(fù)責(zé)把分板傳來的信息送給上位機(jī),同時(shí)將上位機(jī)發(fā)來的指令傳給分板。分板只負(fù)責(zé)接收I/O端口信息,并將這些信息傳給主板,上位機(jī)不直接與分板通信。I/O端口的數(shù)量可以根據(jù)實(shí)際需要進(jìn)行擴(kuò)展,I/O端口模式通過程序可以任意設(shè)定。
多通道 I/O端口 主板 分板
隨著現(xiàn)代化工業(yè)的發(fā)展進(jìn)步,工業(yè)控制系統(tǒng)的功能越來越強(qiáng)大,連接的外設(shè)也越來越多。這些外設(shè)通過I/O裝置與計(jì)算機(jī)之間連接,計(jì)算機(jī)通過發(fā)送指令給I/O裝置來完成對其他設(shè)備的控制,I/O裝置起到橋梁的作用。因此要求I/O裝置的端口數(shù)量應(yīng)盡量多、輸入輸出端口能靈活配置、有較強(qiáng)的抗干擾能力、有標(biāo)準(zhǔn)的通信接口、性價(jià)比高。
目前市場上普遍采用多I/O卡或多I/O模塊。
它們具有體積小巧、攜帶方便、工作溫度范圍寬、功耗低等優(yōu)點(diǎn),但也有不容忽視的缺點(diǎn):
(1)端口數(shù)量不多,大部分產(chǎn)品為8、16、32個(gè)端口。若工業(yè)控制現(xiàn)場需要更多的I/O口,則只能通過組網(wǎng)來控制,這將使控制系統(tǒng)的結(jié)構(gòu)復(fù)雜,同時(shí)也會(huì)使系統(tǒng)的不穩(wěn)定性增加。(2)I/O端口模式固定,不能靈活配置。(3)價(jià)格昂貴,性價(jià)比不高。
為了解決上述問題,設(shè)計(jì)了一款端口數(shù)量能擴(kuò)展、且輸入輸出端口能靈活配置的多通道I/O裝置。它包括主板和分板,通過程序進(jìn)行控制。
考慮到STC12C5A60S2單片機(jī)自身的眾多優(yōu)點(diǎn),該裝置采用它作為主控芯片。但由于它只有40個(gè)I/O,如果端口數(shù)量成百上千的話,一片單片機(jī)顯而易見滿足不了。若采用多個(gè)單片機(jī)分開單獨(dú)控制,則每個(gè)單片機(jī)都要與上位機(jī)通信,這樣通信效率太低,而且結(jié)構(gòu)復(fù)雜,基于以上原因我們選擇了一種主從式的結(jié)構(gòu)設(shè)計(jì)方案,如圖1所示(以176個(gè)端口數(shù)量為例進(jìn)行說明)。
該結(jié)構(gòu)由1塊主板和11塊分板構(gòu)成,主板負(fù)責(zé)與上位機(jī)、分板通信,分板負(fù)責(zé)接收I/O端口信息,再將信息發(fā)送給主板。由于上位機(jī)只需與主板單獨(dú)通信,而無需理會(huì)分板,通信效率得到很大提升。
2.1主板
主板主要包括RS485通信電路、E2PROM擴(kuò)展電路和地址選擇電路,主板主要起到一個(gè)通信的作用。
2.2分板
分板主要包括I/O模塊電路、DA輸出電路、分板地址選擇電路、通信隔離保護(hù)電路。每一個(gè)多路I/O裝置包括11個(gè)分板,每一個(gè)分板電路都是一樣的,通過分板地址選擇電路來設(shè)定分板的地址。
多通道I/O裝置的軟件設(shè)計(jì)以Keil C51為軟件開發(fā)平臺(tái),分為主板程序和分板程序。主板程序主要完成和上位機(jī)、分板的通信。分板程序完成I/O口的輸入和輸出模式選擇以及和主板的通信。
3.1主板程序設(shè)計(jì)
主板程序主要完成和上位機(jī)、分板的通信以及對分板的每個(gè)I/O口功能進(jìn)行配置。主要包括主板主程序設(shè)計(jì)、I/O口配置程序設(shè)計(jì)、主板串口初始化程序、主板串口發(fā)送數(shù)據(jù)程序、主板接受分板數(shù)據(jù)程序等。
3.1.1主板主程序設(shè)計(jì)
多通道I/O裝置的主板主程序主要是完成通信功能,包括和上位機(jī)、分板通信。主板上電后初始化串口1和串口2,然后清空接受數(shù)據(jù)緩沖區(qū),接著發(fā)送分板I/O口模式配置信息,最后接受和解析上位機(jī)發(fā)送來的指令。
3.1.2I/O口配置程序設(shè)計(jì)
通過主板程序可以配置每個(gè)I/O口為輸入或輸出端口,當(dāng)作為輸入端口時(shí)可以作為開關(guān)按鍵和計(jì)數(shù)按鍵。配置表信息以一個(gè)二維數(shù)組的形式在主程序中建立。具體代碼如下:
uchar code Tab[11][33]={
{0x01,0x03,0x04,0x01,0x02,0x03,0x04,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,
//板1端口模式選擇 0x00,0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07},//板1關(guān)聯(lián)通道選擇
{0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x03,0x04,0x03,0x04,0x01,0x02,0x01,0x02,
//板2端口模式選擇 0x00,0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07}
//板2關(guān)聯(lián)通道選擇
……
{0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//板11端口模式選擇 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; //板11關(guān)聯(lián)通道選擇
端口模式選擇表示定義每一個(gè)端口的功能,功能碼與其對應(yīng)的
……
……功能如表1所示。
3.1.3主板串口初始化程序
由于主板既要與上位機(jī)通信,又要與分板通信,所以它有兩個(gè)串口,串口1與分板通信,串口2與上位機(jī)通信。每個(gè)串行口可以同時(shí)發(fā)送和接受數(shù)據(jù)。由于它們通信時(shí)不會(huì)發(fā)生數(shù)據(jù)沖突,可以共用一個(gè)地址碼。
3.2分板程序設(shè)計(jì)
分板負(fù)責(zé)采集各個(gè)I/O端口的信息,并將采集的信息發(fā)送給主板,同時(shí)完成主板發(fā)送的命令。每個(gè)分板的程序都是完全相同的,通過撥碼開關(guān)設(shè)定每個(gè)分板的地址。
分板程序主要包括分板I/O口模式選擇程序、分板PWM程序設(shè)計(jì)、與主板通信程序等。
(1)分板I/O口模式選擇程序。分板根據(jù)主板發(fā)來的I/O配置信息后確定每個(gè)I/O口模式,包括開關(guān)量輸入模式、按鍵計(jì)數(shù)輸入模式和輸出模式。(2)分板PWM程序設(shè)計(jì)。每個(gè)分板帶有一個(gè)DA通道,采用STC12C5A60S2單片機(jī)的兩路PWM實(shí)現(xiàn)DA輸出。(3)與主板通信程序。分板通過主板接收來自上位機(jī)的數(shù)據(jù),每塊板根據(jù)自己的地址,獲取自己板的I/O配置命令,同時(shí)分板將I/O的信息發(fā)送給主板,由主板傳給上位機(jī)。具體程序如下:
將研制的主板、分板通過RS485線與PC機(jī)相連,下載程序,用串口調(diào)試助手運(yùn)行測試。經(jīng)測試證明該裝置能通過程序任意配置各端口為輸入或輸出模式,滿足設(shè)計(jì)需求。
[1]陳鐵軍,謝春萍.PC機(jī)與RS485總線多機(jī)串行通信的軟硬件設(shè)計(jì).現(xiàn)代電子技術(shù),2007.
[2]李巖.工業(yè)控制現(xiàn)場總線技術(shù).技術(shù)與市場,2011.
[3]李陽春.自動(dòng)控制理論在火電廠熱工自動(dòng)化中的應(yīng)用.中國科技投資,2013.
段春艷(1979—),女,湖南郴州人,漢族,碩士,湖南交通職業(yè)技術(shù)學(xué)院,研究方向:電子技術(shù)。