欒亮亮
PLC(Programmable Logic Controller)—可編程邏輯控制器是設備控制柜中的核心部件,用于控制設備工藝與采集儀表測量數據。其中,儀表測量數據是設備使用狀況評估、故障預判、生產運行情況分析的重要依據。隨著PLC的廣泛應用,其控制系統的設計越來越復雜,所需要采集和記錄的測量數據量不斷增加,有些基于PLC的設備控制系統,需要存儲一年甚至幾年的運行數據。因此,如何長期、可靠地通過PLC采集和記錄儀表測量數據,是控制柜設計和使用過程中需要解決的重要問題。
目前,采集和記錄設備生產數據的方法主要有以下幾種:
單片機雖然成本相對較低,但其運算速度慢,硬件抗干擾能力差,可靠性低,信號采集過程濾波能力有限。
觸摸屏的數據記錄功能局限性較大,主要體現在:存儲容量低,只適合記錄較少的數據,無法長時間大規模記錄數據;查閱不便,屏幕畫面較小,記錄讀取速度慢,調閱不方便;可靠性較低,斷電引起的設備關閉可能會造成數據丟失。因此,觸摸屏更適于作為就地實時顯示使用。
上位機的數據記錄功能強,存儲容量大,但其綜合成本高,一般只有大型控制系統才會配備上位機,小型控制系統僅采用觸摸屏做為人機界面。
PLC——可編程邏輯控制器,是一種用于工業自動化的控制裝置,功能強大,集成度、可靠性高,使用靈活等,已廣泛應用于各行業。利用PLC的相關功能進行編程組態,直接記錄儀表測量數據,有以下幾方面特點:成本低,存儲容量大;數據安全有保障,斷電后數據不會丟失;記錄讀取、上傳方便,與PC采用網線連接,通過網絡瀏覽器即可讀取數據,不需安裝編程軟件,操作簡便。
基于此,我們設計了一種以PLC作為數據記錄裝置的自動控制系統,實現了對數據的長期、可靠記錄。
PLC數據記錄控制系統主要由觸摸屏、PLC模塊(包括CPU模塊與模擬量輸入擴展模塊)、變送器、測量儀表組成。測量儀表的輸出信號通過變送器轉換成標準4~20mA信號,送至PLC的擴展模塊,經過A/D轉換,變為數字量傳送給PLC的CPU模塊;CPU將數據以相應格式存儲在閃存(CPU或存儲卡)中,并為觸摸屏顯示提供數據,對觸摸屏的輸入信息進行相應的處理;觸摸屏通過以太網口與CPU通訊,實現參數設置、數據實時觀察、報警信息處理等功能。
我們選用了西門子S7-1200系列PLC,其價格低廉,但功能強大,具有集成以太網接口、集成工藝功能強大和可擴展性靈活等特點,可為各種工藝任務提供簡單的通信和有效的解決方案,尤其可滿足多種應用中完全不同的自動化需求。與S7-300/400系列相比,在能夠實現相應功能的前提下,S7-1200的價格優勢及簡單易用性十分明顯,而且其組態軟件操作簡便、功能強、集成度高。因此,S7-1200 PLC是系統控制器的最佳選擇。
如圖1所示,PLC硬件配置采用CPU1214C+SM1231(8×13Bit)+SM1231(4×13Bit)。

圖1 PLC硬件配置
S7-1200 PLC提供了數據日志功能,可以使用Data logging系列指令,將運行數據值存儲在永久性日志文件中。CPU將數據日志文件以標準CSV格式,存儲在S7-1200 CPU的裝載存儲器中。CPU按大小預定的循環日志文件形式組織數據記錄。
啟用S7-1200 CPU Web服務器功能管理數據日志文件,可以實現數據日志文件的下載、清除和刪除等操作;或將數據日志文件傳送到PC,使用標準電子表格工具(如Excel)分析數據。
S7-1200系列PLC中,數據日志與用戶程序、程序數據、PLC系統數據共享裝載存儲器空間。裝載存儲器又分為內部裝載存儲器與外部裝載存儲器,可根據情況需要選擇其中一個使用,但不可同時使用。
內部裝載存儲器,即CPU內部閃存。本文所使用的CPU 1214C以及更高級別的1215C、1217C,其內部裝載存儲器容量均只有4MB,如果所需存儲數據量較大,且要求長時間記錄,則無法滿足要求。
外部裝載存儲器,即西門子的SIMATIC存儲卡(可選件,非必需),可插入CPU代替內部裝載存儲器使用,目前有4MB、12MB、24MB、256MB、2GB五種規格。
數據日志文件中需要系統分配存儲空間的部分包括:記錄索引標頭(記錄文件中各行的序號);時間戳標頭(每條記錄形成的日期時間);數據日志標頭(所記錄數據的名稱,即文件中每列數據的標題);數據記錄(儀表數據測量值)。
為方便計算,我們把需要記錄的數據數量及類型設定為10個REAL型變量,每個變量的標題為2個字符,記錄頻率為1min/次,文件記錄時間為1年,由此,數據日志文件大小計算如下:
4.1.1 標頭部分
數據日志標頭字節=標頭字符字節+2字節
(1)
其中:
標頭字符字節=所有列數據標題文本(包括分隔符逗號)的字符字節數+21字節 (2)
10個變量共有10個標題,每個標題為2個字符,10個標題分隔逗號數量為9個,根據式(1)、(2)
計算,結果如下:
數據日志標頭字節=10×2+9+21+2=52字節(3)
4.1.2 數據部分
根據西門子PLC技術規范,數據日志數據字節計算公式如下:
數據日志數據字節=(一條記錄中的數據字節+時間戳字節+12字節)×記錄數 (4)
(1)一條記錄中的數據字節
將給出的數據類型的出現次數乘以該數據類型所需的字節數。
對一條記錄中的每個數據類型重復該過程,并對所有數據類型求和得到一條記錄中所有數據元素的總計字節。
本文中的數據類型為REAL,出現次數為10次,存儲REAL類型變量,每個變量需要16個字節,則:
一條記錄中的數據字節=10×16=160字節(5)
(2)數據日志文件中的記錄數
記錄數不能超過Data logging系列指令里用于設置數據日志文件中可存儲的最大可能數值4、294、967、295,實際最大值取決于單個記錄文件的大小、其他數據日志的大小及裝載存儲器的可用資源。此外,Excel對工作表中允許的行數及列數也有一定限制。
本文中,記錄頻率為1min/次,文件記錄時間為1年,則:
記錄數為60×24×365=525 600 (6)
(3)一個數據記錄中的時間戳字節
有時間戳的情況下,時間戳字節=20字節(7)
將式(5)~(7)計算所得3個參數值代入式(4),計算可得:
數據日志數據字節=(160+20+12)×525 600=100 915 200字節 (8)
由式(3)、(8)可得,數據日志總大小=100 915 200+52=100 915 252字節≈96MB。
西門子PLC技術規范中規定,單個數據日志文件的大小最大不可超過可用裝載存儲器大小或500MB(二者之中的較小值)。如果記錄條數達到程序參數設置的最大記錄數,寫入的下一條記錄將覆蓋最早的記錄,之后再寫入的記錄將覆蓋下一條最早的數據記錄,依此類推。
根據上文的計算結果,并參考技術規范可知,如果我們選擇2GB規格的外部裝載存儲器,即西門子的SIMATIC存儲卡,并且在程序中只生成1個數據日志文件,則至少可以保存從查詢之日起向前5年之內的數據記錄,并且不斷循環更新。
PLC程序的主要功能是初始化系統、控制設備工藝、采集儀表測量信息、記錄數據、故障報警等。我們利用西門子TIA Portal V13 SP1軟件,采用梯形圖語言進行編程,其中數據記錄是程序的關鍵部分。
4.2.1 創建數據日志名稱、標題和Data結構
先建立DB塊(圖2),數據日志的名稱、列標題文本和記錄的所有數據元素的數據類型,分別由Name、Header參數和Data分配。

圖2 創建DB塊
4.2.2 創建和初始化數據日志文件
執行DataLogCreate操作后,系統會自動打開數據日志文件(圖3)。
完成數據日志的創建需多個掃描周期,且DONE位僅在一個掃描周期內有效,因此可通過編程捕獲“DataLogCreate”指令的DONE信號位(圖4)。
如果日志創建過程中存在錯誤,則保存狀態輸出(圖5)。
4.2.3 以固定頻率觸發寫入指令(圖6)

圖3 日志文件的初始化

圖4“DatalogCreate”指令的DONE信號位

圖5 錯誤狀態的保存

圖6 定期觸發寫入指令
4.2.4 將新過程值存儲在MyDatalog結構中(圖7)
4.2.5 將數據寫入日志文件(圖8)何時開始執行寫入命令取決于何時完成Data?LogCreate操作。數據日志的創建操作將跨越多個掃描周期,并且必須在執行寫入操作之前完成。REQ輸入的上升沿信號是創建操作已完成的信號。
4.2.6 打開已有數據日志文件必須先將數據日志文件打開后,才能執行Dat?aLogWrite操作。執行DataLogCreate操作后,系統會自動打開數據日志文件。但如果PLC執行RUN-STOP切換或PLC循環,上電后會自動關閉數據日志文件,所以為保證系統每次上電后,可正常執行數據寫入操作,故采用了DataLogOpen命令(圖9)。
4.2.7 啟用PLC Web服務器功能(圖10)
4.2.8 通過S7-1200 CPU Web服務器查看所創建的數據日志文件(圖11)
我們采用西門子S7-1200系列PLC作為控制器,利用其數據日志功能,實現了對儀表測量數據的記錄,這種方法具有成本低、存儲容量大、記錄時間長、可靠性高等特點。

圖7 存儲新過程值

圖8 數據的寫入

圖9 打開已有數據日志

圖10 啟用Web服務器功能

圖11 查看日志文件