文獻(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è)串口接口。為了方便用戶(hù)接口選擇,,設(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ī)的通信
為了滿(mǎn)足不同的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兩種串口接口,,滿(mǎn)足不同的接口需求;使用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é),。