




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PLC串口及紅外控制裝置設(shè)計(jì) 2008-10-29 15:19:59 【文章字體:大 中 小】 推薦 收藏 打印 摘要:隨著自動(dòng)化技術(shù)的不斷發(fā)展,作為工業(yè)控制的核心設(shè)備PLC這幾年得到了快速發(fā)展和廣泛運(yùn)用。PLC的接口也各種各樣,而多數(shù)PLC都具有RS232接口,一般連接一些觸摸屏,作為人機(jī)接口。本文主要介紹一款基于新華龍單片機(jī)開發(fā)的RS232接口裝置,可以連接PLC作為人機(jī)界面,該裝置還配有紅外接收功能,可實(shí)現(xiàn)一定距離無(wú)線遙控PLC。 關(guān)鍵詞:新華龍單片機(jī),人機(jī)接口,紅外遙控 Abstract : With the development of automation te
2、chnology Keywords: NewDragon microprocessor, Human machine interface, infrared remote control 1 引言 HMI、SCADA作為PLC的主要人機(jī)接口設(shè)備,具有外觀簡(jiǎn)潔,可靠性高,功能強(qiáng)大,用戶界面友好,程序二次開發(fā)簡(jiǎn)單等優(yōu)點(diǎn),并向著網(wǎng)絡(luò)化、智能化方向不斷發(fā)展。而在一些特殊情況下,比如數(shù)據(jù)安全要求高,控制空間小的場(chǎng)合,就較難實(shí)現(xiàn)?;趩纹瑱C(jī)開發(fā)的PLC串口裝置,憑借單片機(jī)優(yōu)良的數(shù)據(jù)處理能力和低廉的價(jià)格有著一定的應(yīng)用范圍。 本文通過(guò)運(yùn)
3、用新華龍的C8051F33X系列的單片機(jī)開發(fā)了一款可編程RS232接口控制面板,本文主要介紹其電路設(shè)計(jì)和基本控制原理。 2 控制面板的控制方案 控制面板的外型如圖2-1所示,具體功能鍵可參閱注釋 圖2-1 *注: RS232C口-串口通訊口; JTAG口-程序下載口; 紅外接收頭-可接受紅外信號(hào)源; 電源燈-接上電源后點(diǎn)亮; 通訊燈-通訊正常情況下閃爍; 蜂鳴器-每次按下按鈕后發(fā)出“嘀“聲,并在有故障發(fā)生時(shí)連續(xù)報(bào)警; 復(fù)位按鈕-可復(fù)位單片機(jī); 故障清除鍵-清除故障代碼; 模式選擇鍵-可切換自動(dòng),手動(dòng),檢修模式; 正,反轉(zhuǎn)鍵-在手動(dòng)和檢修模式時(shí),可點(diǎn)動(dòng)控制對(duì)應(yīng)控制號(hào)的電機(jī)正反轉(zhuǎn); 0-9-輸入最
4、多兩位數(shù)的控制號(hào); 確定鍵-確定并發(fā)送信號(hào)鍵; 刪除鍵-刪除所顯示的控制號(hào); 控制號(hào)LED顯示燈-顯示兩位控制號(hào); 故障代碼LED顯示燈-顯示兩位故障代碼; 自動(dòng)、手動(dòng)和檢修燈-顯示當(dāng)前控制模式; 預(yù)留燈-預(yù)留; 2.1 面板控制原理 該面板可以運(yùn)用于皮帶運(yùn)輸系統(tǒng)、自動(dòng)車庫(kù)系統(tǒng)、存儲(chǔ)系統(tǒng)等作為操作面板。用戶可以根據(jù)需要切換各種模式。在自動(dòng)模式時(shí),可通過(guò)按鈕選擇控制號(hào)(控制號(hào)可以理解為控制電機(jī)號(hào)),并按確定鍵將信號(hào)發(fā)送給PLC; 在手動(dòng)和檢修模式時(shí),選擇控制號(hào)并按下確定鍵后,可通過(guò)正反轉(zhuǎn)按鈕點(diǎn)動(dòng)控制相應(yīng)控制號(hào)的電機(jī)正反轉(zhuǎn)。PLC定時(shí)發(fā)送信號(hào)給控制面板,為用戶提供各種信息,當(dāng)有故障發(fā)生時(shí),故障蜂鳴
5、器報(bào)警并顯示故障代碼,待故障排除后,通過(guò)清除故障鍵清除故障代碼。 在自動(dòng)模式下,可通過(guò)紅外發(fā)生器(本次設(shè)計(jì)沒有自行研發(fā)紅外發(fā)生器,而是采用標(biāo)準(zhǔn)的電視遙控器作為紅外發(fā)生器。)發(fā)射紅外信號(hào)來(lái)選擇控制號(hào),控制面板上的控制號(hào)LED燈會(huì)跟隨變化,按確定鍵(可自定義遙控器上的一個(gè)鍵為確定鍵)發(fā)送給PLC控制器。 2.2 通訊信號(hào)說(shuō)明 本次設(shè)計(jì)中的通訊信號(hào)涉及兩種信號(hào):?jiǎn)纹瑱C(jī)與PLC的通訊信號(hào)和紅外發(fā)射器(這里為電視遙控器)與單片機(jī)的通訊信號(hào) 單片機(jī)與PLC的通訊信號(hào)是雙向的,分發(fā)送和接受信號(hào)。發(fā)送信號(hào)有兩個(gè)字節(jié)。前8位包含控制模式、正反轉(zhuǎn)和清除故障信號(hào)的信息,后8位包含控制號(hào)的信息;接受信號(hào)也是兩個(gè)字節(jié),
6、前8位包含控制模式及控制號(hào)反饋信息,后8位包含故障代碼信息。 紅外發(fā)射器與單片機(jī)的信號(hào)為單向信號(hào),只有發(fā)送信號(hào)。標(biāo)準(zhǔn)的紅外線發(fā)送信號(hào)為32位二進(jìn)制碼,即兩個(gè)字。第一個(gè)字為用戶識(shí)別碼(能區(qū)別不同設(shè)備,防止不同機(jī)種遙控碼互相干擾),第二個(gè)字為用戶信息碼。并且每一個(gè)字的第一個(gè)字節(jié)和第二個(gè)字節(jié)互為反碼。在按下電視遙控器按鍵后,其發(fā)射頭會(huì)連續(xù)周期性地發(fā)出32位二進(jìn)制碼的信號(hào)。 2.3 PCB面板電路圖 圖2-2 圖2-2是控制面板的電路原理圖,本次設(shè)計(jì)采用的芯片為新華龍的C8051330D單片機(jī),并采用周立功單片機(jī)發(fā)展有限公司的ZLG7289B數(shù)碼管顯示驅(qū)動(dòng)及鍵盤掃描管理芯片。 圖2-3 單片機(jī)的時(shí)鐘脈
7、沖由外部晶震提供,為12MHz,如圖2-3。單片機(jī)的UART0(I/O口P0.4和P0.5)連接串口RS232。10針接口為JTAG程序下載口,并配有硬件復(fù)位電路。蜂鳴器由I/O口P0.1控制。 I/O口P0.0(SPI總線片選)P0.1(SPI數(shù)據(jù)信息)P0.6(SPI總線時(shí)鐘信號(hào)),P0.7(鍵盤輸入中斷信號(hào))與數(shù)碼管顯示驅(qū)動(dòng)及鍵盤掃描管理芯片ZLG7289B實(shí)現(xiàn)通訊,如圖2-4。ZLG7289B的工作原理可參考相關(guān)資料。 圖2-4 紅外線接收頭如圖2-5所示,兩個(gè)接頭為電源5V直流電壓街頭,另一個(gè)接頭為信號(hào)接頭與I/O口P0.7連接。單片機(jī)通過(guò)PCA計(jì)數(shù)/計(jì)時(shí)器捕捉電平信號(hào)。 圖2-5
8、圖2-6 2.4 PCB面板實(shí)物圖 圖2-6為PCB控制面板實(shí)物,大小為100x180mm.該裝置仍處于研發(fā)階段,故沒有封裝。在其正常工作時(shí),需配有+15V直流電壓,面板需被固定起來(lái),切誤拿在手上防止其電路短路。 3控制程序軟件設(shè)計(jì) 新華龍C8051F33X系列的單片機(jī)可通過(guò)JTAG口連接PC打印機(jī)口直接下載程序。U-EC5仿真器可接入JTAG口提供在線模擬仿真。美國(guó)Keil Software研發(fā)的KEIL uvision3是最新的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),具有友好的操作界面,并且程序有良好的可讀性,被廣大電子工程師所使用。本次程序設(shè)計(jì)采用其集成開發(fā)環(huán)境。 不同的控制工藝有著不同的
9、控制邏輯,在這里我們著重討論通訊部分的程序編寫,對(duì)其他功能邏輯不做過(guò)多講解。 3.1 串口數(shù)據(jù)處理程序 C8051330D單片機(jī)芯片的UART0是一個(gè)異步、全雙工串口,UART0具有增強(qiáng)的波特率發(fā)生器電路,有多個(gè)時(shí)鐘源可用于產(chǎn)生標(biāo)準(zhǔn)波特率,本次設(shè)計(jì)我們采用的波特率為9600。 UART提供兩種方式的標(biāo)準(zhǔn)8051串行口,8位串行口和9位串行口。我們采用的是前者。在 8 位 UART 方式中,每個(gè)數(shù)據(jù)字節(jié)共使用 10 位:一個(gè)起始位、8 個(gè)數(shù)據(jù)位(LSB 在先) 和一個(gè)停止位。數(shù)據(jù)從 TX0 引腳發(fā)送,在 RX0 引腳接收。在接收時(shí),8 個(gè)數(shù)據(jù)位存入 SBUF0, 停止位進(jìn)入 RB80(SCON0
10、.2)。當(dāng)軟件向SBUF0寄存器寫入一個(gè)字節(jié)時(shí)開始數(shù)據(jù)發(fā)送。在發(fā)送結(jié)束時(shí)(停止位開始)發(fā)送中斷標(biāo)志TI0(SCON0.1)被置1。在接收允許位REN0(SCON0.4)被置1后,數(shù)據(jù)接收可以在任何時(shí)刻開始。收到停止位后,如果滿足下述條件則數(shù)據(jù)字節(jié)將被裝入到接收寄存器SBUF0:RI0必須為邏輯0;如果MCE0為邏輯1,則停止位必須為1。在發(fā)生接收數(shù)據(jù)溢出的情況下,先接收到的8位數(shù)據(jù)被鎖存到SBUF0,而后面的溢出數(shù)據(jù)被丟棄。 如果這些條件滿足,則8位數(shù)據(jù)被存入SBUF0,停止位被存入RB80,RI0標(biāo)志被置位。如果這些條件不滿足,則不裝入SBUF0和RB80,RI0標(biāo)志也不會(huì)被置1。如果中斷被
11、允許,在TI0或RI0置位時(shí)將產(chǎn)生一個(gè)中斷。 具體的程序如下: *串口數(shù)據(jù)處理中斷程序* void UART_ISR(void) interrupt 4 if(TI0) /當(dāng)一個(gè)字節(jié)發(fā)送成功后,TI0被置位 TI0=0; /復(fù)位TI0 if(sendtime=first) /發(fā)送數(shù)據(jù)一共有兩個(gè)字節(jié),如果發(fā)送了第一個(gè)字節(jié),需再發(fā)送第二個(gè)字節(jié) sendtime=second; SBUF0=senddata1; /將待傳送的數(shù)據(jù)放入串行數(shù)據(jù)緩沖器SBUF0 if(RI0) /有數(shù)據(jù)傳送過(guò)來(lái)時(shí),RI0置位 RI0=0; /復(fù)位RI0. DATA=SBUF0; /從串行數(shù)據(jù)緩沖器SBUF0讀取數(shù)據(jù) if
12、(DATA&0x80)=0x80) /傳送一共有兩個(gè)字節(jié),判斷當(dāng)前傳送的數(shù)據(jù)是不是第一個(gè)字節(jié) readdata0=DATA; receivetime=second; /為接受第二個(gè)字節(jié)做準(zhǔn)備 if(receivetime=second) /接收第二個(gè)字節(jié) if(DATA&0x80)=0x80) /判斷當(dāng)前傳送的數(shù)據(jù)是不是第二個(gè)字節(jié) readdata1=DATA; receivetime=first; /為下次接收第一個(gè)字節(jié)做準(zhǔn)備 display_errornumber(); /顯示故障代碼 3.2 紅外線信號(hào)處理程序 標(biāo)準(zhǔn)的遙控編碼采用脈寬調(diào)制的串行碼,本次設(shè)計(jì)使用的紅外發(fā)生器
13、是一個(gè)萬(wàn)能電視遙控器,通過(guò)示波器測(cè)試,得到如下的特征屬性,如圖3-1,以脈寬為0.56ms,間隔為1.125ms的脈寬信號(hào)為0;以脈寬為0.56ms,間隔為2.25ms的為1。一個(gè)完整的信號(hào)為32位二進(jìn)制碼,當(dāng)按下按鈕后,連續(xù)周期性發(fā)出同一種32位二進(jìn)制碼。 圖3-1 通過(guò)紅外接收頭單片機(jī)接收信號(hào), 當(dāng)I/O口P0.7捕捉第一個(gè)電平信號(hào)時(shí),PCA計(jì)時(shí)器捕捉該電平的脈寬,并觸發(fā)CCF0傳入中斷程序,根據(jù)脈寬長(zhǎng)度來(lái)判斷輸入的位是0或者1,并清除中斷標(biāo)志CCF0準(zhǔn)備接收下一個(gè)位。直到接收完32位編碼后,再根據(jù)接收到的數(shù)據(jù)判斷控制號(hào)并通過(guò)LED 燈顯示出來(lái),如果接收的信號(hào)是確定信號(hào),則將控制
14、號(hào)傳送給PLC.具體程序如下: *紅外線信號(hào)中斷程序* void PCA_ISR (void) interrupt 11 unsigned cha r red_headh,red_headl,redh,redl,i; if(CCF0) CCF0 = 0; /清除中斷標(biāo)志位 PCA0L=0; PCA0H=0; red_time=(unsigned int)PCA0CPH0*256+PCA0CPL0; /讀取捕捉到低電平的脈寬長(zhǎng)度 if(red_time>15000) /32位編碼信號(hào)接收完成后 redl=(unsigned cha r)redVALUE&0xff; /讀取第一個(gè)字節(jié)
15、 redh=(unsigned cha r)(redVALUE>>8)&0xff; /讀取第二個(gè)字節(jié) red_headl=(unsigned cha r)(redVALUE>>16)&0xff; /讀取第三個(gè)字節(jié) red_headh=(unsigned cha r)(redVALUE>>24)&0xff; /讀取第四個(gè)字節(jié) if(choose=auto&&redh=redl&&red_headl=red_headh&&red_headh=0x02) /如果在自動(dòng)模式下,并且信號(hào)正確識(shí)別,
16、則開始判斷接收信號(hào) switch (redh) case 0: disp_valuei=0; /如果按下數(shù)字按鈕0的話,則接收為0 disp_flag=1; /LED顯示標(biāo)志位置位 break; case 0x80: disp_valuei=1; /如果按下數(shù)字按鈕1的話,則接收為1 disp_flag=1; break; case 0x40: disp_valuei=2; /如果按下數(shù)字按鈕2的話,則接收為2 disp_flag=1; break; case 0xc0: disp_valuei=3; /如果按下數(shù)字按鈕3的話,則接收為3 disp_flag=1; break; case 0x
17、20: disp_valuei=4; /如果按下數(shù)字按鈕4的話,則接收為4 disp_flag=1; break; case 0xa0: disp_valuei=5; /如果按下數(shù)字按鈕5的話,則接收為5 disp_flag=1; break; case 0x60: disp_valuei=6; /如果按下數(shù)字按鈕6的話,則接收為6 disp_flag=1; break; case 0xe0: disp_valuei=7; /如果按下數(shù)字按鈕7的話,則接收為7 disp_flag=1; break; case 0x10: disp_valuei=8; /如果按下數(shù)字按鈕8的話,則接收為8 di
18、sp_flag=1; break; case 0x90: disp_valuei=9; /如果按下數(shù)字按鈕9的話,則接收為9 disp_flag=1; break; case 0x3A: /如果按下確定鍵的話,則將接收的數(shù)據(jù)傳送到PLC control_num=(unsigned cha r)(disp_value0*10+disp_value1); Ti=0; /清除發(fā)送中斷標(biāo)志位。為發(fā)送數(shù)據(jù)做準(zhǔn)備 sendtime=first;/為發(fā)送數(shù)據(jù)做準(zhǔn)備 SBUF0=control_num; /發(fā)送數(shù)據(jù) break; i+; /循環(huán)改變個(gè)位,十位的數(shù)值 if(i>1) i=0; redVAL
19、UE=0; /清除變量 redh=0; redl=0; red_headl=0; red_headh=0; elseif(red_time>2000) /如果脈寬大于2ms,則表示讀到一個(gè)1,并左移一位 redVALUE=(redVALUE<<1)+1; else if(red_time>1000) /如果脈寬在1ms2ms之間,則讀到一位0,并左移一位 redVALUE=(redVALUE<<1)+0; if(CF) /如果有溢出,清除溢出標(biāo)志 CF = 0; 3.3 主程序 主程序的控制邏輯是,先初始化設(shè)置,包括晶震源及所有端口屬性,使能所有中斷源。當(dāng)有
20、鍵按下的話,轉(zhuǎn)入按鍵中斷處理程序,顯示和發(fā)送數(shù)據(jù)給PLC,當(dāng)有接受到紅外信號(hào)時(shí),轉(zhuǎn)入紅外接收中斷處理程序,顯示和發(fā)送數(shù)據(jù)給PLC,PLC定時(shí)發(fā)送數(shù)據(jù)給單片機(jī)以顯示故障及其他信息,當(dāng)有信號(hào)從PLC發(fā)出時(shí),轉(zhuǎn)入串口通訊中斷處理程序接受數(shù)據(jù)。程序如下: void main (void) Init_Device(); /端口初始化 var_init(); /數(shù)值初始化 zlg7289_init(); /LED顯示初始化 IE|= 0x80; /使能中斷源 PCA0CN|= 0x40; /使能PCA中斷 SCON0|= 0x10; /設(shè)置UART0邊沿出發(fā) while(1) if(disp_flag=1
21、) display_controlnumber(); /刷新控制號(hào)顯示 if(key_pressed != 0) /有鍵按下時(shí) key_process(key_value); /轉(zhuǎn)入按鍵處理程序 *?。簁ey_process():這個(gè)函數(shù)的功能是顯示數(shù)據(jù),并將數(shù)據(jù)處理后傳送給PLC 限于篇幅,這里省去了端口初始化程序,ZLg7289初始化程序,其他中斷程序,鍵盤輸入程序,LED顯示程序,通訊燈的功能程序,點(diǎn)動(dòng)控制功能程序等等。本節(jié)主要是為了向讀者闡述如何實(shí)現(xiàn)PCB控制面板的通訊功能,其他程序可參閱相關(guān)資料。 4PLC調(diào)試程序 圖4-1 為了檢測(cè)PCB控制面板的功能,需要編寫PLC上位機(jī)程序調(diào)試。這里我們選用了omron的C200H PLC。不同的PLC的RS232串口接線是不一樣,如圖4-1提供了C200系列PLC與該控制面板的串口接線圖。 設(shè)置PLC的串口屬性為:8位數(shù)據(jù),一個(gè)起始位,一個(gè)停止位,
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 沙漠區(qū)橋梁防曬措施技術(shù)方案
- 卸貨流程培訓(xùn)
- 德佑房屋租賃合同
- 秘書工作總結(jié)
- 急診科出科護(hù)理查房
- 求職簡(jiǎn)歷教育模塊設(shè)計(jì)要點(diǎn)
- 中職學(xué)校心理健康教育
- 結(jié)石患者術(shù)前術(shù)后護(hù)理
- 幼兒園健康標(biāo)志趣味認(rèn)知課程
- 文案策劃新人培訓(xùn)
- 公安院校公安專業(yè)招生政治考察表(雙面打印)
- 充血性心力衰竭患者利尿劑抵抗
- 光纖研磨工藝
- (2023版)高中化學(xué)新課標(biāo)知識(shí)考試題庫(kù)大全(含答案)
- 水土保持工作情況匯報(bào)
- 裝飾裝修工程概況描述(參考)
- SJ2D雙微機(jī)自動(dòng)準(zhǔn)同期裝置說(shuō)明書
- 中國(guó)移動(dòng)熱線人工優(yōu)秀服務(wù)藍(lán)圖
- 義務(wù)教育英語(yǔ)課程標(biāo)準(zhǔn)(2022年版)知識(shí)點(diǎn)匯總
- 低應(yīng)變檢測(cè)技術(shù)原理講義圖文豐富
- 普通貨物運(yùn)輸安全管理制度(全套)
評(píng)論
0/150
提交評(píng)論