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