文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)08-0031-03
可編程程序控制器(PLC)是綜合了計(jì)算機(jī)技術(shù)、自動(dòng)化控制技術(shù)和通信技術(shù)的一種自動(dòng)控制裝置,以其具有的功能強(qiáng)、可靠性高、操作靈活、編程簡(jiǎn)便等特性,成為了現(xiàn)代工業(yè)控制的三大支柱之一[1]。
隨著PLC的應(yīng)用范圍的不斷擴(kuò)展,其控制系統(tǒng)越來(lái)越復(fù)雜,需要處理儲(chǔ)存的數(shù)據(jù)量不斷增加。例如,有些PLC工業(yè)控制儀器需要保存一個(gè)月甚至一年的生產(chǎn)數(shù)據(jù),需要幾兆字節(jié)甚至幾百兆字節(jié)的數(shù)據(jù)存儲(chǔ)能力。由于一般的PLC數(shù)據(jù)存儲(chǔ)容量較小,不得不借助外部的數(shù)據(jù)存儲(chǔ)設(shè)備。因此,本文設(shè)計(jì)了一種基于單片機(jī)的PLC數(shù)據(jù)存儲(chǔ)系統(tǒng),可將PLC的數(shù)據(jù)以txt文件類(lèi)型的形式存入到U盤(pán)、移動(dòng)硬盤(pán)等大容量的數(shù)據(jù)儲(chǔ)存器里,擴(kuò)大PLC數(shù)據(jù)容量,亦可方便桌面計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步處理分析。
1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)由數(shù)據(jù)輸出終端為PLC、數(shù)據(jù)轉(zhuǎn)換模塊、數(shù)據(jù)接收終端(U盤(pán)、移動(dòng)硬盤(pán)等)三部分組成。其中數(shù)據(jù)轉(zhuǎn)換模塊的中央控制器為Atmega16L單片機(jī)。此外,還包括由RS232和RS485組成的串口通信模塊、CH376文件管理控制芯片、USB接口輸出模塊以及DS1302授時(shí)模塊。PLC通過(guò)RS232或RS485接口將數(shù)據(jù)上傳給單片機(jī),單片機(jī)發(fā)送識(shí)別信號(hào)給接USB口模塊,根據(jù)反饋信號(hào)判斷USB接口連接是否正常,若正常則根據(jù)DS1302授時(shí)模塊、利用CH376文件管理控制芯片在存儲(chǔ)設(shè)備中新建以時(shí)間信息為文件名主體的txt文件類(lèi)型或其他類(lèi)型的文件,再將數(shù)據(jù)存入其中。系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
2 硬件設(shè)計(jì)
2.1 Atmega16L與CH376的電路設(shè)計(jì)
Atmega16L是基于增強(qiáng)的AVR RISC結(jié)構(gòu)設(shè)計(jì)的低功耗8 位CMOS微控制器。其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間可以減小整個(gè)系統(tǒng)的功耗,且不會(huì)影響系統(tǒng)的處理速度[2]。
CH376是文件管理控制芯片,可用于單片機(jī)系統(tǒng)讀寫(xiě)U盤(pán)、SD卡中的文件,亦可用于與USB接口設(shè)備的數(shù)據(jù)傳輸與通信。CH376支持3種通信接口:8位并行、SPI接口和異步串口方式,單片機(jī)通過(guò)上述任何一種通信接口控制CH376芯片,將數(shù)據(jù)儲(chǔ)存在U盤(pán)、移動(dòng)硬盤(pán)等存儲(chǔ)設(shè)備,甚至可以與計(jì)算機(jī)相連進(jìn)行通信[3]。
面對(duì)工業(yè)控制中惡劣的工作環(huán)境,為了保證數(shù)據(jù)傳輸?shù)姆€(wěn)定性和精確性,單片機(jī)Atmega16L與CH376之間的通信接口選擇8位并行接口,連接電路如圖2所示。
圖2 Atmega16L與CH376的連接電路圖
2.2 串口通信模塊的電路設(shè)計(jì)
通常PLC可以提供RS232和RS485兩種通信接口類(lèi)型,但是Atmega16L單片機(jī)只提供一個(gè)串口接口。為了方便用戶接口選擇,設(shè)計(jì)了一種RS232和RS485兩個(gè)接口公用一個(gè)串口的接口電路,如圖3所示。
圖3 串口通信接口電路圖
當(dāng)RS232或RS485懸空未使用時(shí),兩二極管的負(fù)極均為高電平,所以當(dāng)采用一組通信方式時(shí)不會(huì)影響到另一組。而RS485通信采用非門(mén)實(shí)現(xiàn)了RS485的自動(dòng)接收與發(fā)送之間的切換[4]。Atmega16L的UART初始狀態(tài)為邏輯高電平,則:
(1)接收狀態(tài):TXD為高,MAX485使能端(DE/RE)為低,MAX485處于接收狀態(tài),如無(wú)數(shù)據(jù)輸入,由于偏置電阻R2、R3的作用,RXD為邏輯高電平;如果有數(shù)據(jù)輸入,則RXD電平與輸入電平一致,實(shí)現(xiàn)了接收功能。
(2)發(fā)送狀態(tài):TXD為高,MAX485使能端為低,MAX485處于接收狀態(tài),由于偏置電阻R2、R3的作用,輸出邏輯為高;TXD為低,MAX485使能端為高,MAX485處于發(fā)送狀態(tài),輸出邏輯為低[5]。這樣就實(shí)現(xiàn)了發(fā)送功能。RS485收發(fā)信號(hào)狀態(tài)如表1所示。
3 通信設(shè)計(jì)
3.1 PLC與單片機(jī)的通信
為了滿足不同的PLC使用,本系統(tǒng)選用工業(yè)中使用廣泛的ModBus通信協(xié)議。ModBus協(xié)議系統(tǒng)中有兩種傳輸模式:ASCII模式和RTU模式。本系統(tǒng)的數(shù)據(jù)格式為RTU模式,在同樣的波特率下,它可比ASCII方式傳送更多的數(shù)據(jù)[6]。ModBus信息以幀的方式傳輸,在RTU模式中,每幀開(kāi)始和結(jié)束都至少需要傳輸4 B數(shù)據(jù)的靜止時(shí)間,所傳輸?shù)膱?bào)文數(shù)據(jù)域依次為從機(jī)地址、功能代碼、數(shù)據(jù)和校驗(yàn),傳輸?shù)臄?shù)據(jù)都是十六進(jìn)制的[7]。RTU數(shù)據(jù)幀格式如圖4所示。
ModBus通信協(xié)議采用的是主從方式,本系統(tǒng)中以PLC為主機(jī),轉(zhuǎn)換模塊為從機(jī)。當(dāng)從機(jī)接收到地址信息時(shí)立即對(duì)它進(jìn)行解析判斷,如果地址相符合,則按指令要求修改其參數(shù),并發(fā)送應(yīng)答信息給主機(jī);否則對(duì)接收的報(bào)文信息不予理睬。一個(gè)幀的信息必須以連續(xù)的數(shù)據(jù)流進(jìn)行傳輸,如果在發(fā)送幀信息期間出現(xiàn)超過(guò)傳輸1.5 B數(shù)據(jù)的靜止時(shí)間時(shí),接收到的數(shù)據(jù)將被清除[8]。主機(jī)與從機(jī)通信示意圖如圖5所示。
圖5 主機(jī)與從機(jī)通信示意圖
為了實(shí)現(xiàn)單片機(jī)與PLC的精確通信,ATmega16L單片機(jī)的串口設(shè)置為以中斷響應(yīng)的通信方式進(jìn)行發(fā)送和接收數(shù)據(jù),通信波特率設(shè)定為9 600 b/s,輸出/輸入的數(shù)據(jù)格式為1 bit開(kāi)始位、8 bit數(shù)據(jù)位、1 bit停止位、1 bit校驗(yàn)位,奇偶校驗(yàn)方式設(shè)定為為偶校驗(yàn)[9]。主機(jī)PLC則以歐姆龍PLC為例,將串口1設(shè)置為RS-232C模式,數(shù)據(jù)格式與單片機(jī)相同,串口設(shè)置如圖6所示。
圖6 OMRON PLC的串口設(shè)置圖
3.2 單片機(jī)與CH376芯片的通信
上電延時(shí)50 ms,單片機(jī)發(fā)送 CMD_CHECK_EXIST(06H)命令,發(fā)送55H數(shù)據(jù),正常工作返回0AAH;再發(fā)送 CMD_SET_USB_MODE(15H)命令,后續(xù)數(shù)據(jù)為06H,設(shè)置為USB模式,返回狀態(tài)為CMD_RET_SUCESS(51H),設(shè)置成功;發(fā)送CMD_DISK_CONNECT(30H)命令,檢測(cè)U盤(pán)或移動(dòng)硬盤(pán)是否連接,返回中斷狀為USB_INT_CONNECT(15H),設(shè)備連接;發(fā)送 CMD_DISK_MOUNT(31H)命令,初始化U盤(pán)或移動(dòng)硬盤(pán),產(chǎn)生中斷返回USB_INT_SUCESS(14H),初始化完成。初始化完成即可對(duì)連接的U盤(pán)或移動(dòng)硬盤(pán)進(jìn)行創(chuàng)建新的文件、打開(kāi)已有文件、寫(xiě)入數(shù)據(jù)等操作。操作完成后,發(fā)CMD_DISK_CONNECT(30H)命令,檢測(cè)設(shè)備是否依然連接,產(chǎn)生中斷。如果返回中斷狀態(tài)為USB_INT_DISCONNECT(16H),則設(shè)備移除;如果返回中斷狀態(tài)為 USB_INT_CONNECT(15H),則繼續(xù)等待[3]。其流程如圖7所示。
單片機(jī)與CH376之間使用8位并口,它的寫(xiě)指令和數(shù)據(jù)的程序如下:
(1)往CH376命令端口寫(xiě)入命令
void WriteCH376Cmd( unsigned char mCmd )
{
CH376_DATA_DAT_OUT( mCmd ); //向CH376的并口輸出數(shù)據(jù)
CH376_DATA_DIR_OUT( ); //設(shè)置并口方向?yàn)檩敵?/p>
CH376_A0 = 1;
CH376_CS = 0;
CH376_WR = 0; //輸出有效寫(xiě)控制信號(hào),
寫(xiě)CH376芯片的命令端口
CH376_CS = 0; //該操作無(wú)意義,僅作延時(shí),
CH376要求讀寫(xiě)脈沖寬度大
CH376_WR = 1; //輸出無(wú)效的控制信號(hào),
完成操作CH376芯片
CH376_CS = 1;
CH376_A0 = 0;
CH376_DATA_DIR_IN( ); //禁止數(shù)據(jù)輸出
}
(2)往CH376數(shù)據(jù)端口寫(xiě)入數(shù)據(jù)
void WriteCH376Data(unsigned char mData )
{
CH376_DATA_DAT_OUT( mData );
//向CH376的并口輸出數(shù)據(jù)
CH376_DATA_DIR_OUT( ); //設(shè)置并口方向?yàn)檩敵?/p>
CH376_A0 = 0;
CH376_CS = 0;
CH376_WR = 0; //輸出有效寫(xiě)控制信號(hào),
寫(xiě)CH376芯片的數(shù)據(jù)端口
CH376_WR = 1; //輸出無(wú)效的控制信號(hào),
完成操作CH376芯片
CH376_CS = 1;
CH376_DATA_DIR_IN( ); //禁止數(shù)據(jù)輸出
}
本文介紹了一種基于單片機(jī)的PLC數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)方案,重點(diǎn)描述了系統(tǒng)的總體方案、硬件電路的設(shè)計(jì)及各模塊的相互通信。該系統(tǒng)與PLC通信采用了工業(yè)中廣泛應(yīng)用的ModBus通信協(xié)議標(biāo)準(zhǔn),實(shí)現(xiàn)了通信標(biāo)準(zhǔn)化,以適應(yīng)不同的應(yīng)用場(chǎng)合。單片機(jī)與CH376的通信中采用了8位并行通信接口,增強(qiáng)系統(tǒng)整體的抗干擾能力,保證數(shù)據(jù)的傳輸穩(wěn)定性和準(zhǔn)確性。系統(tǒng)提供了RS485和RS323兩種串口接口,滿足不同的接口需求;使用CH376文件管理芯片,在U盤(pán)等儲(chǔ)存設(shè)備里建立txt類(lèi)型文件儲(chǔ)存數(shù)據(jù),方便桌面計(jì)算機(jī)的查看。此外,還添加了DS1302實(shí)時(shí)授時(shí)系統(tǒng),使得系統(tǒng)可以依據(jù)時(shí)間創(chuàng)建以時(shí)間信息為命名主體的文件并存入數(shù)據(jù),方便后期對(duì)數(shù)據(jù)識(shí)別、查找與分析。實(shí)踐證明,該數(shù)據(jù)存儲(chǔ)系統(tǒng)功能穩(wěn)定,實(shí)用可靠,在PLC需要大數(shù)據(jù)存儲(chǔ)的工控領(lǐng)域有極大的應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 霍罡.歐姆龍CP1H PLC應(yīng)用基礎(chǔ)與編程實(shí)踐[M].北京: 機(jī)械工業(yè)出版社,2008.
[2] 汪煉,韓震宇.基于AVR單片機(jī)的串口通訊設(shè)計(jì)[J].中國(guó)測(cè)試技術(shù),2003(2):52-53.
[3] Nanjing Qinheng Electronics Co..The data sheet of CH372[Z]. 2008.
[4] 劉啟中,李榮正.PIC單片機(jī)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[5] 甘海峰,余奇志,吳興中.單片機(jī)與西門(mén)子變頻器的通信設(shè)計(jì)[J].四川兵工學(xué)報(bào),2012,33(3):65-68.
[6] MODICON Inc..Modicon ModBus protocol reference guide[Z]. 2008.
[7] 鄧元生.基于單片機(jī)的ModBus總線協(xié)議實(shí)現(xiàn)技術(shù)研究[D].長(zhǎng)沙:中南大學(xué),2009.
[8] 張榮華,王富東.單片機(jī)與U盤(pán)的接口技術(shù)[J].電工技術(shù), 2007(5):45-51.
[9] 唐洪富,張興波.基于STC系列單片機(jī)的智能溫度控制器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013,39(5):60-70.
(收稿日期:2014-04-17)
作者簡(jiǎn)介:
殷蘇民,男,1956年生,教授,碩士生導(dǎo)師,主要研究方向:微控技術(shù)、機(jī)電系統(tǒng)、機(jī)器視覺(jué)。