在PLC監(jiān)控系統(tǒng)中海量數(shù)據(jù)現(xiàn)場采集存儲(chǔ)方案
隨著計(jì)算機(jī)控制技術(shù)的不斷發(fā)展,可編程控制器PLC的功能越來越強(qiáng)大,不僅具有各種各樣的控制功能,還具有與其他設(shè)備通信聯(lián)網(wǎng)的功能。與之相應(yīng),PLC的應(yīng)用也日益普及,不僅被廣泛應(yīng)用于傳統(tǒng)的邏輯控制、PID控制和變頻調(diào)速等領(lǐng)域,還逐漸被用于數(shù)據(jù)采集、環(huán)境監(jiān)控等領(lǐng)域。
本方案介紹的分布式PLC監(jiān)控系統(tǒng)采用分布式的構(gòu)建方案,利用基于西門子PLC的實(shí)時(shí)測量技術(shù)對各設(shè)備的監(jiān)控點(diǎn)數(shù)據(jù)進(jìn)行采集、監(jiān)測,以達(dá)到分散連接、集中監(jiān)控的目的。在自由口模式下實(shí)現(xiàn)PLC與LCW系列數(shù)據(jù)存儲(chǔ)器的通信,將監(jiān)控?cái)?shù)據(jù)完整的保存到存儲(chǔ)器的SD卡中,彌補(bǔ)了PLC存儲(chǔ)、管理大量數(shù)據(jù)能力不足的缺陷。通過此方案,用戶可對各設(shè)備的監(jiān)控?cái)?shù)據(jù)和PLC的工作狀態(tài)進(jìn)行長期、有效的存儲(chǔ)。
系統(tǒng)結(jié)構(gòu)
PLC采用西門子S7-200 PLC,是串行通訊方式最為豐富的小型PLC,支持多種通信協(xié)議,如點(diǎn)對點(diǎn)接口協(xié)議(PPI協(xié)議)、多點(diǎn)接口協(xié)議(MPI協(xié)議)和PROFIBUS協(xié)議以及自由通信協(xié)議等。其中自由通信協(xié)議又叫用戶定義協(xié)議,利用自由端口模式,可以實(shí)現(xiàn)用戶定義的通信協(xié)議,連接多種智能設(shè)備,使用起來非常方便,在第三方工程接入中取得了巨大的成功。
PLC具有一定的數(shù)據(jù)存儲(chǔ)功能,可防止因通信錯(cuò)誤而出現(xiàn)數(shù)據(jù)丟失的情況,然而PLC存儲(chǔ)、管理大量數(shù)據(jù)能力不足; 另外在電源掉電或內(nèi)存丟失后,PLC的系統(tǒng)時(shí)間會(huì)被初始化,這會(huì)使數(shù)據(jù)保存時(shí)間與實(shí)際時(shí)間不符,無法對監(jiān)測數(shù)據(jù)進(jìn)行長期有效的保存。
數(shù)據(jù)存儲(chǔ)器采用廣州樂誠電子科技有限公司提供的LCW-S數(shù)據(jù)存儲(chǔ)器, 是一款可以替代PC機(jī)的便攜式串口數(shù)據(jù)記錄儀。采用嵌入式系統(tǒng)控制芯片,將串口RS-232/485輸入的數(shù)據(jù)透明存儲(chǔ)在SD卡中。數(shù)據(jù)存儲(chǔ)器采用模塊化設(shè)計(jì),不需要用戶對現(xiàn)有設(shè)備進(jìn)行改造,實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)存儲(chǔ)。該產(chǎn)品已廣泛使用于系統(tǒng)集成設(shè)備、自動(dòng)化采集設(shè)備、高校、研究所重要實(shí)驗(yàn)裝置“黑匣子”,是具有高度集成,高可靠性,低成本優(yōu)勢的數(shù)據(jù)存儲(chǔ)產(chǎn)品。 有如下功能:
a 采用工業(yè)級(jí)高性能32位處理器,運(yùn)用獨(dú)特的動(dòng)態(tài)內(nèi)存分配管理算法,提高數(shù)據(jù)的處理能力,實(shí)現(xiàn)實(shí)時(shí) 高速數(shù)據(jù)采集、持續(xù)數(shù)據(jù)記錄和大容量數(shù)據(jù)存儲(chǔ)的便攜式數(shù)據(jù)存儲(chǔ)記錄儀。其高達(dá)100Kb/s的數(shù)據(jù)接收及存儲(chǔ)能力,完全適應(yīng)傾角傳感器高速的,海量的數(shù)據(jù)存儲(chǔ)。
b 超低功耗設(shè)計(jì),支持鋰電池供電適用野外和移動(dòng)狀態(tài)下的數(shù)據(jù)存儲(chǔ)環(huán)境。
c 具有時(shí)鐘功能,數(shù)據(jù)存儲(chǔ)文件以當(dāng)前的年月日自動(dòng)命名;可根據(jù)用戶的具體需要對接收到的每幀數(shù)據(jù)加入實(shí)時(shí)時(shí)間,方便后期數(shù)據(jù)處理。
d 中文配置軟件,通過串口可修改波特率、時(shí)鐘校準(zhǔn)等。
e 可對儀器儀表采集設(shè)備發(fā)送輪詢指令(根據(jù)用戶需求定制)。
f 存儲(chǔ)器工作用的參數(shù)可以固化到處理器內(nèi)的FLASH 存儲(chǔ)器中,不會(huì)發(fā)生參數(shù)丟失的問
題。固化的工作參數(shù)上電時(shí)自動(dòng)調(diào)出。
基本組成圖
LCW數(shù)據(jù)存儲(chǔ)器與PLC通訊
數(shù)據(jù)存儲(chǔ)器的串行口直接與S7-200 PLC的RS-232/485口進(jìn)行通訊,在自由端口模式下,PLC的串行通信接口由用戶來控制,PLC相當(dāng)于從站,數(shù)據(jù)存儲(chǔ)器相當(dāng)于主站。除了自發(fā)向數(shù)據(jù)存儲(chǔ)器發(fā)送報(bào)警信息和連接保持信息外,一般都是接收到數(shù)據(jù)返回請求后,再向數(shù)據(jù)存儲(chǔ)器發(fā)送數(shù)據(jù)。PLC接收完數(shù)據(jù)存儲(chǔ)器發(fā)送來的數(shù)據(jù)后,觸發(fā)端口0接收完成中斷對數(shù)據(jù)包進(jìn)行分析。如果是巡檢命令,則將實(shí)時(shí)采樣數(shù)據(jù)存儲(chǔ)到巡檢數(shù)據(jù)寄存器中,然后調(diào)用PackandSend子程序,設(shè)置好寄存器地址即可按照命令返回相應(yīng)數(shù)據(jù)。PLC發(fā)送完成后觸發(fā)端口0發(fā)送完成中斷,將各標(biāo)志位寄存器復(fù)位,為下一次通信做準(zhǔn)備。串口0的通信程序流程圖如所示。
a) 通信程序的實(shí)現(xiàn)
(1)根據(jù)用戶的具體需求,數(shù)據(jù)存儲(chǔ)器可主動(dòng)發(fā)送輪詢指令。采用串行口工作方式以數(shù)據(jù)存儲(chǔ)器作為主機(jī),向PLC進(jìn)行呼叫,定期讀取數(shù)據(jù)或者寫入數(shù)據(jù);將PLC返回的監(jiān)控?cái)?shù)據(jù)保存在SD卡中。其程序流程圖參見圖2。
單片機(jī)端通訊程序流程圖
(2)PLC端程序流程圖的實(shí)現(xiàn)。PLC端作為從機(jī),采用梯形圖或者STL編程,主要是先設(shè)置通訊協(xié)議,然后按照協(xié)議把采集到的數(shù)據(jù)進(jìn)行處理,再發(fā)送給主機(jī)數(shù)據(jù)存儲(chǔ)器,其具體的程序流程圖如圖3所示。
PLC端通訊程序流程圖
b) 通信協(xié)議設(shè)計(jì)
定義根據(jù)經(jīng)驗(yàn)和有關(guān)參考資料,定義協(xié)議結(jié)構(gòu)和參數(shù)。
(1)通信波特率為9.6kbps,無校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)可編程位,1位起始位,1位停止位。
(2)定義通信協(xié)議的數(shù)據(jù)流結(jié)構(gòu)的格式為起始碼、命令碼、元件首址、字節(jié)數(shù)、數(shù)據(jù)塊、BCC校驗(yàn)碼和結(jié)束碼。
● 起始碼:表示單片機(jī)與PLC開始發(fā)送數(shù)據(jù),是數(shù)據(jù)流第一個(gè)字符,告訴PLC開始進(jìn)行通信了,可以用00H表示
● 命令碼:表示單片機(jī)對PLC的各種操作:
40H:讀取目標(biāo)元件 I、Q、V、M、SM、L、T、C等的數(shù)據(jù)或狀態(tài);
41H:修改目標(biāo)元件 I、Q、V、M、SM、L、T、C等的數(shù)據(jù)或狀態(tài);
42H:強(qiáng)制目標(biāo)單元為ON;
43H:強(qiáng)制目標(biāo)單元為OFF;
● 元件首址:表示PLC內(nèi)部的元件類型以及寄存器的地址(但不能表示一個(gè)位地址)。前兩個(gè)字節(jié)表示寄存器類型,后兩個(gè)字節(jié)表示寄存器號(hào)。00 00(H):I寄存器區(qū) 01 00(H):Q寄存器區(qū)。02 00(H):M寄存器區(qū) 08 00(H):V寄存器區(qū);
● 字節(jié)數(shù):從元件首地址起,讀取或?qū)懭隤LC元件的數(shù)據(jù)個(gè)數(shù)數(shù)據(jù)塊:準(zhǔn)備讀取或者寫入PLC的數(shù)據(jù)或狀態(tài);
● BCC校驗(yàn)碼:在傳輸過程中,指令有可能受到任何的干擾而使原來的數(shù)據(jù)信號(hào)發(fā)生扭曲,此時(shí)的指令當(dāng)然是錯(cuò)誤的,為了偵測指令在傳輸過程中發(fā)生的錯(cuò)誤,接收方必須對指令作進(jìn)一步的確認(rèn)工作,以防止錯(cuò)誤的指令被執(zhí)行,最簡單的方法就是使用校驗(yàn)碼。BCC校驗(yàn)碼的方法就是將要傳送的字符串的ASCII碼以字節(jié)為單位作異或和,并將此異或和作為指令的一部分傳送出去;同樣地,接收方在接到指令后,以相同的方式對接收到的字符串作異或和,并與傳送方所送過來的值作對比,若其值相等,則代表接收到的指令是正確的,反之則是錯(cuò)誤的
● 結(jié)束碼:結(jié)束字符標(biāo)志著指令的結(jié)束,在本例中被定義為FFH,不同的PLC從站可以定義不同的結(jié)束字符以接收針對該P(yáng)LC的指令。
數(shù)據(jù)分析
通過讀卡器將SD卡中的監(jiān)測數(shù)據(jù)導(dǎo)入電腦軟件中,電腦軟件根據(jù)實(shí)際業(yè)務(wù)需要設(shè)計(jì)相應(yīng)的算法,對數(shù)據(jù)進(jìn)行分析,以數(shù)據(jù)報(bào)表,圖表等方式展現(xiàn)結(jié)果。
文中所述方案可以準(zhǔn)確、可靠地測量惡劣環(huán)境下的現(xiàn)場數(shù)據(jù)并存儲(chǔ)。數(shù)據(jù)存儲(chǔ)器和PLC的采用不僅增大了系統(tǒng)的穩(wěn)定性,而且還可以很方便地根據(jù)實(shí)際需要適當(dāng)?shù)卦黾踊蚋淖儽O(jiān)控對象,對系統(tǒng)功能進(jìn)行擴(kuò)展。由于都采用模塊化設(shè)計(jì),所以對系統(tǒng)進(jìn)行簡單修改后即可用于其他工業(yè)監(jiān)控應(yīng)用中。實(shí)驗(yàn)表明,該方法能夠穩(wěn)定可靠地采集和存儲(chǔ)數(shù)據(jù),為中小規(guī)模監(jiān)測系統(tǒng)的數(shù)據(jù)檢測提供了一個(gè)可供參考的解決方案。