配方數(shù)據(jù)文件按照標(biāo)準(zhǔn) CSV 格式存儲在 S7-1200 CPU 裝載存儲器或 S7-1200 SIMATIC 存儲卡“程序卡”中。
分別可通過 PLC Web 服務(wù)器或?qū)τ诖鎯ㄎ募僮鳎瑢?shù)據(jù)文件傳送到 PC 進(jìn)行管理和查看,。
也可將修改過后的配方數(shù)據(jù)文件上傳至PLC,,再通過“Recipeimport”配方導(dǎo)入指令更新PLC裝載存儲器中配方數(shù)據(jù)塊的數(shù)值,。
SIMATIC S7-1200 系列 CPU 使用配方數(shù)據(jù)功能,需要注意以下幾兩點:程序中創(chuàng)建一個配方數(shù)據(jù)塊,,此 DB 塊必須存儲在 CPU 裝載存儲器中,,可以使用 CPU 內(nèi)部裝載存儲器或程序卡程序中創(chuàng)建一個活動配方數(shù)據(jù)塊,,此 DB 塊必須在 CPU 工作存儲器中,,使用程序邏輯讀取或?qū)懭胍粋€活動配方記錄下面,舉例說明用 S7-1200 實現(xiàn)配方的寫入和讀取功能,。
為方便配方數(shù)據(jù)操作,,按照下圖思路進(jìn)行項目編程:圖1 配方項目框圖測試環(huán)境:操作系統(tǒng):Win 10 64bit Pro 1703軟件:TIA PORTAL V15 Update 4測試軟件:Notepad++ V7.5.8硬件:S7-1215C DC/DC/DC V4.2.3訂貨號:6ES7215-1AG40-0XB01.定義一個 PLC 數(shù)據(jù)類型(UDT)配方數(shù)據(jù)塊必須包含數(shù)組,可以是一維的也可以是多維的,,數(shù)組元素是 PLC 數(shù)據(jù)類型或結(jié)構(gòu),。
在這個配方實例中使用 PLC 數(shù)據(jù)類型創(chuàng)建配方數(shù)據(jù)塊。
在此,,創(chuàng)建一個 PLC 數(shù)據(jù)類型,,以定義一個配方記錄中的所有組成,以制造蛋糕為例,,建立UDT過程參見鏈接,,建好后如圖2所示。
圖2.定義 PLC 數(shù)據(jù)類型數(shù)據(jù)類型是一個數(shù)據(jù)模板,,它在每個配方數(shù)據(jù)塊以及活動配方數(shù)據(jù)塊中重復(fù)使用,。
輸入所有實例配方共用的成分名稱和數(shù)據(jù)類型,根據(jù)分配給配方成分的數(shù)值不同而產(chǎn)生不同的產(chǎn)品配方,。
2.使用 PLC 數(shù)據(jù)類型創(chuàng)建配方數(shù)據(jù)塊創(chuàng)建一個配方數(shù)據(jù)塊,為全局?jǐn)?shù)據(jù)塊,,并啟用數(shù)據(jù)塊屬性"僅存儲在裝載內(nèi)存中",,如圖3紅圈所示。
本例中,,配方數(shù)據(jù) DB 塊名稱為 "DB1_蛋糕配方”,,如圖4所示,插入一個數(shù)組類型變量,,數(shù)組元素的數(shù)據(jù)類型為"蛋糕配方",,本例中設(shè)置數(shù)組限值0..7,即可創(chuàng)建8個配方,,可根據(jù)實際情況調(diào)整,。
注意,如果需要使用RecipeExport和Recipeimport導(dǎo)入導(dǎo)出,,配方DB塊的名稱中盡量不出現(xiàn)中文字符,,否則在WEB頁面操作會略微麻煩一些,具體詳見配方數(shù)據(jù)的管理,。
本例為顯示直觀,,使用了“DB1_蛋糕配方”的名字。
圖3.定義數(shù)據(jù)塊屬性圖4.創(chuàng)建配方數(shù)據(jù)塊對于圖3的優(yōu)化的塊訪問選項,一般默認(rèn)激活,,因為從S7-1200 V4.2起,,對于僅存儲于裝載存儲器的優(yōu)化塊的大小限制為256kB,而僅存儲于裝載存儲器的非優(yōu)化塊僅有64kB,,顯然優(yōu)化塊可以存儲更多的配方記錄,,如果單個配方數(shù)據(jù)太多,需要放在多個DB中,,也可以減少DB塊個數(shù),。
3.在工作存儲器中創(chuàng)建活動配方 DB,并通過“READ_DBL”和“WRIT_DBL”指令實現(xiàn)對裝載存儲區(qū)配方數(shù)據(jù)塊的讀寫操作在工作存儲器中準(zhǔn)備一個活動配方數(shù)據(jù)塊,,用于配方數(shù)據(jù)的寫入和讀取,。
在本例中,在工作存儲器中創(chuàng)建了一個全局?jǐn)?shù)據(jù)塊,,名稱為 "DB2_活動配方”,,類型為“蛋糕配方”,如圖5所示,。
圖5.添加活動配方塊確定后,,就可以得到活動配方數(shù)據(jù)塊,該塊只由一組配方組成,,如圖6所示,。
圖6.活動配方數(shù)據(jù)塊注意,因為指令“READ_DBL”和“WRIT_DBL”的緣故,,要求活動配方數(shù)據(jù)塊與配方數(shù)據(jù)塊的優(yōu)化屬性必須相同,,即都是優(yōu)化數(shù)據(jù)塊,或者是非優(yōu)化數(shù)據(jù)塊,。
將這個 DB 塊作為與裝載存儲器中配方數(shù)據(jù)塊的接口,,分別通過指令“WRIT_DBL”能實時將存于工作存儲器的活動配方數(shù)據(jù)寫入至裝載存儲器的配方數(shù)據(jù)塊,或者通過指令“READ_DBL”實時讀取裝載存儲器的配方數(shù)據(jù)塊到工作存儲區(qū)中活動配方數(shù)據(jù),。
4.導(dǎo)出配方數(shù)據(jù)塊對于S7-1200 V4.0及其以后版本的CPU,,可以使用指令RecipeExport和Recipeimport對配方數(shù)據(jù)塊進(jìn)行導(dǎo)入和導(dǎo)出,在電腦上使用EXCEL,、ASCII編輯器等工具編輯,。
對于S7-1200 V4.0以前的版本,一般建議直接在配方數(shù)據(jù)塊的起始值輸入配方,,這一部分用戶可以直接跳過下面4-6步,,直接看第7步。
在本例中,,直接在OB1使用LAD語言調(diào)用RecipeExport和后面的Recipeimport塊,,實際使用時可以在FC/FB,,或者FB的多重背景中使用,語言也可以使用FBD,、SCL,。
新建DB塊,用于調(diào)用塊的請求與狀態(tài)位等,,名稱為"DB3_操作",,建立結(jié)構(gòu)體"Export",以及相關(guān)變量,,如圖7所示,。
圖7. 建立結(jié)構(gòu)體在 OB1 調(diào)用RecipeExport,以及捕捉是否完成及錯誤代碼等程序,,如圖8所示,。
圖8.調(diào)用RecipeExport指令5.配方csv文件的導(dǎo)入和導(dǎo)出可以使用Web服務(wù)器或者存儲卡的方式對csv文件進(jìn)行導(dǎo)入和導(dǎo)出,在電腦上的Excel等軟件上進(jìn)行配方數(shù)據(jù)的編輯,,具體操作詳見配方數(shù)據(jù)的管理,。
6.導(dǎo)入配方數(shù)據(jù)塊當(dāng)配方文件通過WEB上載完成,或通過存儲卡重新導(dǎo)入文件后,,就可以導(dǎo)入配方數(shù)據(jù)塊,。
和第4步類似,在DB塊"DB3操作",,中建立結(jié)構(gòu)體"import",,以及相關(guān)變量,結(jié)構(gòu)同"Export",,如圖9所示,,用于Recipeimport的請求與狀態(tài)位。
圖9. 建立結(jié)構(gòu)體