《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的PLC數(shù)據(jù)儲(chǔ)存系統(tǒng)
基于單片機(jī)的PLC數(shù)據(jù)儲(chǔ)存系統(tǒng)
來(lái)源:電子技術(shù)應(yīng)用2014年第8期
殷蘇民,張建明,李正陽(yáng),汪偉力,萬(wàn) 翔
(江蘇大學(xué) 機(jī)械工程學(xué)院,江蘇 鎮(zhèn)江212000)
摘要: 為了解決PLC數(shù)據(jù)儲(chǔ)存量低、查閱不便的問(wèn)題,設(shè)計(jì)了一種基于單片機(jī)的PLC數(shù)據(jù)存系統(tǒng),實(shí)現(xiàn)了PLC與U盤(pán)、移動(dòng)硬盤(pán)等儲(chǔ)存設(shè)備的數(shù)據(jù)傳輸與存儲(chǔ)。設(shè)計(jì)了RS232和RS485共用同一串口的通信接口;基于ModBus通信協(xié)議實(shí)現(xiàn)了單片機(jī)與PLC的數(shù)據(jù)傳輸;使用CH376文件管理芯片,在U盤(pán)等儲(chǔ)存設(shè)備里建立txt、doc等類(lèi)型文件儲(chǔ)存數(shù)據(jù),方便桌面計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行分析處理;利用DS1302實(shí)時(shí)時(shí)鐘系統(tǒng),以時(shí)間信息命名數(shù)據(jù)文件,實(shí)現(xiàn)了數(shù)據(jù)的長(zhǎng)時(shí)間有序儲(chǔ)存。
中圖分類(lèi)號(hào): TP335
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)08-0031-03
PLC data storage system based on SCM
Yin Sumin,Zhang Jianming,Li Zhengyang,Wang Weili,Wan Xiang
School of Mechanical Engineering,Jiangsu University,Zhenjiang 212000,China
Abstract: In order to solve the issue of low data storage capacity and data view inconvenience of PLC, a method based on SCM had been proposed to store data for PLC. It had been realized about the transmission and storage of data between PLC and U disk, hard disk or other storage devices. A serial communication interface had been designed for RS232 and RS485 to share the same serial port. SCM and PLC had been connected based on ModBus communication protocol. Data was been stored in the form of txt , doc or other files classes to make it easier for desk computer to analyze and process data. The long-term orderly storage of data had been solved by using time information to name data files based on DS1302 real time clock system.
Key words : SCM;PLC;data storage;ModBus;CH376

    可編程程序控制器(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é)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。