PLC串口及紅外控制裝置設(shè)計 doc_第1頁
PLC串口及紅外控制裝置設(shè)計 doc_第2頁
PLC串口及紅外控制裝置設(shè)計 doc_第3頁
PLC串口及紅外控制裝置設(shè)計 doc_第4頁
PLC串口及紅外控制裝置設(shè)計 doc_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、PLC串口及紅外控制裝置設(shè)計 2008-10-29 15:19:59 【文章字體:大 中 小】 推薦 收藏 打印 摘要:隨著自動化技術(shù)的不斷發(fā)展,作為工業(yè)控制的核心設(shè)備PLC這幾年得到了快速發(fā)展和廣泛運用。PLC的接口也各種各樣,而多數(shù)PLC都具有RS232接口,一般連接一些觸摸屏,作為人機接口。本文主要介紹一款基于新華龍單片機開發(fā)的RS232接口裝置,可以連接PLC作為人機界面,該裝置還配有紅外接收功能,可實現(xiàn)一定距離無線遙控PLC。 關(guān)鍵詞:新華龍單片機,人機接口,紅外遙控 Abstract : With the development of automation te

2、chnology Keywords: NewDragon microprocessor, Human machine interface, infrared remote control 1 引言        HMI、SCADA作為PLC的主要人機接口設(shè)備,具有外觀簡潔,可靠性高,功能強大,用戶界面友好,程序二次開發(fā)簡單等優(yōu)點,并向著網(wǎng)絡(luò)化、智能化方向不斷發(fā)展。而在一些特殊情況下,比如數(shù)據(jù)安全要求高,控制空間小的場合,就較難實現(xiàn)。基于單片機開發(fā)的PLC串口裝置,憑借單片機優(yōu)良的數(shù)據(jù)處理能力和低廉的價格有著一定的應用范圍。 本文通過運

3、用新華龍的C8051F33X系列的單片機開發(fā)了一款可編程RS232接口控制面板,本文主要介紹其電路設(shè)計和基本控制原理。 2 控制面板的控制方案 控制面板的外型如圖2-1所示,具體功能鍵可參閱注釋 圖2-1 *注: RS232C口-串口通訊口; JTAG口-程序下載口; 紅外接收頭-可接受紅外信號源; 電源燈-接上電源后點亮; 通訊燈-通訊正常情況下閃爍; 蜂鳴器-每次按下按鈕后發(fā)出“嘀“聲,并在有故障發(fā)生時連續(xù)報警; 復位按鈕-可復位單片機; 故障清除鍵-清除故障代碼; 模式選擇鍵-可切換自動,手動,檢修模式; 正,反轉(zhuǎn)鍵-在手動和檢修模式時,可點動控制對應控制號的電機正反轉(zhuǎn); 0-9-輸入最

4、多兩位數(shù)的控制號; 確定鍵-確定并發(fā)送信號鍵; 刪除鍵-刪除所顯示的控制號; 控制號LED顯示燈-顯示兩位控制號; 故障代碼LED顯示燈-顯示兩位故障代碼; 自動、手動和檢修燈-顯示當前控制模式; 預留燈-預留; 2.1 面板控制原理 該面板可以運用于皮帶運輸系統(tǒng)、自動車庫系統(tǒng)、存儲系統(tǒng)等作為操作面板。用戶可以根據(jù)需要切換各種模式。在自動模式時,可通過按鈕選擇控制號(控制號可以理解為控制電機號),并按確定鍵將信號發(fā)送給PLC; 在手動和檢修模式時,選擇控制號并按下確定鍵后,可通過正反轉(zhuǎn)按鈕點動控制相應控制號的電機正反轉(zhuǎn)。PLC定時發(fā)送信號給控制面板,為用戶提供各種信息,當有故障發(fā)生時,故障蜂鳴

5、器報警并顯示故障代碼,待故障排除后,通過清除故障鍵清除故障代碼。 在自動模式下,可通過紅外發(fā)生器(本次設(shè)計沒有自行研發(fā)紅外發(fā)生器,而是采用標準的電視遙控器作為紅外發(fā)生器。)發(fā)射紅外信號來選擇控制號,控制面板上的控制號LED燈會跟隨變化,按確定鍵(可自定義遙控器上的一個鍵為確定鍵)發(fā)送給PLC控制器。 2.2 通訊信號說明 本次設(shè)計中的通訊信號涉及兩種信號:單片機與PLC的通訊信號和紅外發(fā)射器(這里為電視遙控器)與單片機的通訊信號 單片機與PLC的通訊信號是雙向的,分發(fā)送和接受信號。發(fā)送信號有兩個字節(jié)。前8位包含控制模式、正反轉(zhuǎn)和清除故障信號的信息,后8位包含控制號的信息;接受信號也是兩個字節(jié),

6、前8位包含控制模式及控制號反饋信息,后8位包含故障代碼信息。 紅外發(fā)射器與單片機的信號為單向信號,只有發(fā)送信號。標準的紅外線發(fā)送信號為32位二進制碼,即兩個字。第一個字為用戶識別碼(能區(qū)別不同設(shè)備,防止不同機種遙控碼互相干擾),第二個字為用戶信息碼。并且每一個字的第一個字節(jié)和第二個字節(jié)互為反碼。在按下電視遙控器按鍵后,其發(fā)射頭會連續(xù)周期性地發(fā)出32位二進制碼的信號。 2.3 PCB面板電路圖 圖2-2 圖2-2是控制面板的電路原理圖,本次設(shè)計采用的芯片為新華龍的C8051330D單片機,并采用周立功單片機發(fā)展有限公司的ZLG7289B數(shù)碼管顯示驅(qū)動及鍵盤掃描管理芯片。 圖2-3 單片機的時鐘脈

7、沖由外部晶震提供,為12MHz,如圖2-3。單片機的UART0(I/O口P0.4和P0.5)連接串口RS232。10針接口為JTAG程序下載口,并配有硬件復位電路。蜂鳴器由I/O口P0.1控制。 I/O口P0.0(SPI總線片選)P0.1(SPI數(shù)據(jù)信息)P0.6(SPI總線時鐘信號),P0.7(鍵盤輸入中斷信號)與數(shù)碼管顯示驅(qū)動及鍵盤掃描管理芯片ZLG7289B實現(xiàn)通訊,如圖2-4。ZLG7289B的工作原理可參考相關(guān)資料。 圖2-4 紅外線接收頭如圖2-5所示,兩個接頭為電源5V直流電壓街頭,另一個接頭為信號接頭與I/O口P0.7連接。單片機通過PCA計數(shù)/計時器捕捉電平信號。 圖2-5

8、圖2-6 2.4 PCB面板實物圖 圖2-6為PCB控制面板實物,大小為100x180mm.該裝置仍處于研發(fā)階段,故沒有封裝。在其正常工作時,需配有+15V直流電壓,面板需被固定起來,切誤拿在手上防止其電路短路。 3控制程序軟件設(shè)計 新華龍C8051F33X系列的單片機可通過JTAG口連接PC打印機口直接下載程序。U-EC5仿真器可接入JTAG口提供在線模擬仿真。美國Keil Software研發(fā)的KEIL uvision3是最新的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),具有友好的操作界面,并且程序有良好的可讀性,被廣大電子工程師所使用。本次程序設(shè)計采用其集成開發(fā)環(huán)境。 不同的控制工藝有著不同的

9、控制邏輯,在這里我們著重討論通訊部分的程序編寫,對其他功能邏輯不做過多講解。 3.1 串口數(shù)據(jù)處理程序 C8051330D單片機芯片的UART0是一個異步、全雙工串口,UART0具有增強的波特率發(fā)生器電路,有多個時鐘源可用于產(chǎn)生標準波特率,本次設(shè)計我們采用的波特率為9600。 UART提供兩種方式的標準8051串行口,8位串行口和9位串行口。我們采用的是前者。在 8 位 UART 方式中,每個數(shù)據(jù)字節(jié)共使用 10 位:一個起始位、8 個數(shù)據(jù)位(LSB 在先) 和一個停止位。數(shù)據(jù)從 TX0 引腳發(fā)送,在 RX0 引腳接收。在接收時,8 個數(shù)據(jù)位存入 SBUF0, 停止位進入 RB80(SCON0

10、.2)。當軟件向SBUF0寄存器寫入一個字節(jié)時開始數(shù)據(jù)發(fā)送。在發(fā)送結(jié)束時(停止位開始)發(fā)送中斷標志TI0(SCON0.1)被置1。在接收允許位REN0(SCON0.4)被置1后,數(shù)據(jù)接收可以在任何時刻開始。收到停止位后,如果滿足下述條件則數(shù)據(jù)字節(jié)將被裝入到接收寄存器SBUF0:RI0必須為邏輯0;如果MCE0為邏輯1,則停止位必須為1。在發(fā)生接收數(shù)據(jù)溢出的情況下,先接收到的8位數(shù)據(jù)被鎖存到SBUF0,而后面的溢出數(shù)據(jù)被丟棄。 如果這些條件滿足,則8位數(shù)據(jù)被存入SBUF0,停止位被存入RB80,RI0標志被置位。如果這些條件不滿足,則不裝入SBUF0和RB80,RI0標志也不會被置1。如果中斷被

11、允許,在TI0或RI0置位時將產(chǎn)生一個中斷。 具體的程序如下: *串口數(shù)據(jù)處理中斷程序* void UART_ISR(void) interrupt 4 if(TI0) /當一個字節(jié)發(fā)送成功后,TI0被置位 TI0=0; /復位TI0 if(sendtime=first) /發(fā)送數(shù)據(jù)一共有兩個字節(jié),如果發(fā)送了第一個字節(jié),需再發(fā)送第二個字節(jié) sendtime=second; SBUF0=senddata1; /將待傳送的數(shù)據(jù)放入串行數(shù)據(jù)緩沖器SBUF0 if(RI0) /有數(shù)據(jù)傳送過來時,RI0置位 RI0=0; /復位RI0. DATA=SBUF0; /從串行數(shù)據(jù)緩沖器SBUF0讀取數(shù)據(jù) if

12、(DATA&0x80)=0x80) /傳送一共有兩個字節(jié),判斷當前傳送的數(shù)據(jù)是不是第一個字節(jié) readdata0=DATA; receivetime=second; /為接受第二個字節(jié)做準備 if(receivetime=second) /接收第二個字節(jié) if(DATA&0x80)=0x80) /判斷當前傳送的數(shù)據(jù)是不是第二個字節(jié) readdata1=DATA; receivetime=first; /為下次接收第一個字節(jié)做準備 display_errornumber(); /顯示故障代碼 3.2 紅外線信號處理程序 標準的遙控編碼采用脈寬調(diào)制的串行碼,本次設(shè)計使用的紅外發(fā)生器

13、是一個萬能電視遙控器,通過示波器測試,得到如下的特征屬性,如圖3-1,以脈寬為0.56ms,間隔為1.125ms的脈寬信號為0;以脈寬為0.56ms,間隔為2.25ms的為1。一個完整的信號為32位二進制碼,當按下按鈕后,連續(xù)周期性發(fā)出同一種32位二進制碼。 圖3-1 通過紅外接收頭單片機接收信號, 當I/O口P0.7捕捉第一個電平信號時,PCA計時器捕捉該電平的脈寬,并觸發(fā)CCF0傳入中斷程序,根據(jù)脈寬長度來判斷輸入的位是0或者1,并清除中斷標志CCF0準備接收下一個位。直到接收完32位編碼后,再根據(jù)接收到的數(shù)據(jù)判斷控制號并通過LED 燈顯示出來,如果接收的信號是確定信號,則將控制

14、號傳送給PLC.具體程序如下: *紅外線信號中斷程序* void PCA_ISR (void) interrupt 11 unsigned cha r red_headh,red_headl,redh,redl,i; if(CCF0) CCF0 = 0; /清除中斷標志位 PCA0L=0; PCA0H=0; red_time=(unsigned int)PCA0CPH0*256+PCA0CPL0; /讀取捕捉到低電平的脈寬長度 if(red_time>15000) /32位編碼信號接收完成后 redl=(unsigned cha r)redVALUE&0xff; /讀取第一個字節(jié)

15、 redh=(unsigned cha r)(redVALUE>>8)&0xff; /讀取第二個字節(jié) red_headl=(unsigned cha r)(redVALUE>>16)&0xff; /讀取第三個字節(jié) red_headh=(unsigned cha r)(redVALUE>>24)&0xff; /讀取第四個字節(jié) if(choose=auto&&redh=redl&&red_headl=red_headh&&red_headh=0x02) /如果在自動模式下,并且信號正確識別,

16、則開始判斷接收信號 switch (redh) case 0: disp_valuei=0; /如果按下數(shù)字按鈕0的話,則接收為0 disp_flag=1; /LED顯示標志位置位 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ā)送中斷標志位。為發(fā)送數(shù)據(jù)做準備 sendtime=first;/為發(fā)送數(shù)據(jù)做準備 SBUF0=control_num; /發(fā)送數(shù)據(jù) break; i+; /循環(huán)改變個位,十位的數(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,則表示讀到一個1,并左移一位 redVALUE=(redVALUE<<1)+1; else if(red_time>1000) /如果脈寬在1ms2ms之間,則讀到一位0,并左移一位 redVALUE=(redVALUE<<1)+0; if(CF) /如果有溢出,清除溢出標志 CF = 0; 3.3 主程序 主程序的控制邏輯是,先初始化設(shè)置,包括晶震源及所有端口屬性,使能所有中斷源。當有

20、鍵按下的話,轉(zhuǎn)入按鍵中斷處理程序,顯示和發(fā)送數(shù)據(jù)給PLC,當有接受到紅外信號時,轉(zhuǎn)入紅外接收中斷處理程序,顯示和發(fā)送數(shù)據(jù)給PLC,PLC定時發(fā)送數(shù)據(jù)給單片機以顯示故障及其他信息,當有信號從PLC發(fā)出時,轉(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(); /刷新控制號顯示 if(key_pressed != 0) /有鍵按下時 key_process(key_value); /轉(zhuǎn)入按鍵處理程序 *?。簁ey_process():這個函數(shù)的功能是顯示數(shù)據(jù),并將數(shù)據(jù)處理后傳送給PLC 限于篇幅,這里省去了端口初始化程序,ZLg7289初始化程序,其他中斷程序,鍵盤輸入程序,LED顯示程序,通訊燈的功能程序,點動控制功能程序等等。本節(jié)主要是為了向讀者闡述如何實現(xiàn)PCB控制面板的通訊功能,其他程序可參閱相關(guān)資料。 4PLC調(diào)試程序 圖4-1 為了檢測PCB控制面板的功能,需要編寫PLC上位機程序調(diào)試。這里我們選用了omron的C200H PLC。不同的PLC的RS232串口接線是不一樣,如圖4-1提供了C200系列PLC與該控制面板的串口接線圖。 設(shè)置PLC的串口屬性為:8位數(shù)據(jù),一個起始位,一個停止位,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論