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