S7-1200 如何通過編程判斷程序是否發生過改動
配方相關指令介紹
配方功能主要使用4個指令,READ_DBL和WRIT_DBL用于對配方數據塊的讀寫,RecipeExport和RecipeImport用于配方數據塊和CSV文件之間的轉化,下面分別介紹這4個指令的使用。
READ_DBL
指令的目的是將數據塊變量中的裝載存儲器部分的值,傳送到數據塊變量中的工作存儲器部分中。如圖1所示。
通常用于配方中,將僅存儲在裝載存儲器的配方數據讀取到活動配方。

圖1 READ_DBL與WRIT_DBL原理
表1 參數列表
| 參數 | 聲明 | 數據類型 | 說明 |
|---|---|---|---|
| REQ | Input | Bool |
REQ = 1:讀取請求,通常建議沿觸發 |
| SRCBLK | Input | Variant | 待讀取的數據塊變量 |
| RET_VAL | Return | Int | 狀態、錯誤信息 |
| BUSY | Output | Bool |
BUSY = 1:讀取中 |
| DSTBLK | Output | Variant | 待寫入的數據塊變量,和SRCBLK數據類型一致,優化屬性一致 |
以配方功能快速入門的例子程序為例

圖2 READ_DBL應用
如圖2所示,SRCBLK的實參為“DB1_蛋糕配方”.Static_1["DB3_操作".Index],其中DB1_蛋糕配方”.Static_1是UDT類型(蛋糕配方)的數組,而帶上后面的["DB3_操作".Index],就變成了數組中的一個元素,也就是說“DB1_蛋糕配方”.Static_1["DB3_操作".Index]是一個UDT類型(蛋糕配方)。
而DSTBLK的實參是“DB2_活動配方”,“DB2_活動配方”是基于UDT類型(蛋糕配方)建立的DB,也就是說“DB2_活動配方”可以看做UDT類型。
SRCBLK和DSTBLK的實參都是UDT類型,可以使用READ_DBL指令,是將“DB1_蛋糕配方”.Static_1["DB3_操作".Index]也就是配方中的一組讀取到活動配方中。
WRIT_DBL
指令的目的是將數據塊變量中的工作存儲器部分寫入到數據塊變量中的裝載存儲器部分。如圖1所示。
通常用于配方中,將活動配方寫入到僅存儲在裝載存儲器的配方數據。
表2 參數列表
| 參數 | 聲明 | 數據類型 | 說明 |
|---|---|---|---|
| REQ | Input | Bool |
REQ = 1:寫入請求,通常建議沿觸發 |
| SRCBLK | Input | Variant | 待讀取的數據塊變量 |
| RET_VAL | Return | Int | 狀態、錯誤信息 |
| BUSY | Output | Bool |
BUSY = 1:讀取中 |
| DSTBLK | Output | Variant | 待寫入的數據塊變量,和SRCBLK數據類型一致,優化屬性一致 |
以配方功能快速入門的例子程序為例

圖3 WRIT_DBL應用
如圖3所示,SRCBLK的實參是“DB2_活動配方”,“DB2_活動配方”是基于UDT類型(蛋糕配方)建立的DB,也就是說“DB2_活動配方”可以看做UDT類型。
而DSTBLK的實參為“DB1_蛋糕配方”.Static_1["DB3_操作".Index],其中“DB1_蛋糕配方”.Static_1是UDT類型(蛋糕配方)的數組,而帶上后面的["DB3_操作".Index],就變成了數組中的一個元素,也就是說“DB1_蛋糕配方”.Static_1["DB3_操作".Index]是一個UDT類型(蛋糕配方)。
SRCBLK和DSTBLK的實參都是UDT類型,可以使用WRIT_DBL指令,是將活動配方寫入到“DB1_蛋糕配方”.Static_1["DB3_操作".Index]也就是配方中的一組中。
RecipeExport
指令的目的是將僅存儲在工作存儲器中的配方數據(UDT數組)導出成為.csv文件,方便在電腦上的EXCEL或者ASCII編輯器編輯。
表3 參數列表
| 參數 | 聲明 | 數據類型 | 說明 |
|---|---|---|---|
| REQ | Input | Bool |
沿觸發:激活請求 |
|
RECIPE_DB |
InOut | Variant | 待導出的配方數據塊變量,通常是配方UDT的數組 |
| DONE | Output | Bool | DONE= 1:導出完成,只維持一個掃描周期 |
| BUSY | Output | Bool |
BUSY = 1:導出中 |
| ERROR | Output | Bool | ERROR= 1:導出錯誤,只維持一個掃描周期,錯誤代碼參見STATUS |
| STATUS | Output | Word | 狀態或錯誤代碼,錯誤代碼只維持一個掃描周期 |
以配方功能快速入門的例子程序為例

圖4 RecipeExport應用
“DB1_蛋糕配方”.Static_1是UDT類型(蛋糕配方)的數組,導出后生成DB1_蛋糕配方.csv文件。
RecipeImport
指令的目的是將在電腦上的EXCEL或者ASCII編輯器編輯過后的.csv文件導入成為僅存儲在工作存儲器中的配方數據(UDT數組)。
表4 參數列表
| 參數 | 聲明 | 數據類型 | 說明 |
|---|---|---|---|
| REQ | Input | Bool |
沿觸發:激活請求 |
|
RECIPE_DB |
InOut | Variant | 導入后的配方數據塊變量,通常是配方UDT的數組 |
| DONE | Output | Bool | DONE= 1:導入完成,只維持一個掃描周期 |
| BUSY | Output | Bool |
BUSY = 1:導入中 |
| ERROR | Output | Bool | ERROR= 1:導入錯誤,只維持一個掃描周期,錯誤代碼參見STATUS |
| STATUS | Output | Word | 狀態或錯誤代碼,錯誤代碼只維持一個掃描周期 |
以配方功能快速入門的例子程序為例

圖5 RecipeImport應用
需要將DB1_蛋糕配方.csv文件導入后,將“DB1_蛋糕配方”.Static_1這個UDT類型(蛋糕配方)的數組的值覆蓋。
審核編輯 :李倩
-
編程
+關注
關注
90文章
3716瀏覽量
97191 -
變量
+關注
關注
0文章
616瀏覽量
29506 -
S7-1200
+關注
關注
11文章
335瀏覽量
19553
原文標題:S7-1200 如何通過編程判斷程序是否發生過改動
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
在TIA Portal V21中基于S7-1200 G2使用SCL語言設計Modbus RTU輪詢程序
無需更換PLC!讓西門子S7-1200輕松驅動匯川EtherCAT伺服
使用PLCSIM Advanced V8仿真測試S7-1200 G2的Modbus TCP通信
西門子S7-1200 PLC與SINAMICS V90伺服驅動器PROFINET通信控制實例
西門子S7-1200 MODBUS RTU通訊溫度控制器和變頻器教程
天拓四方分享:什么事S7-1200 G2++?
西門子S7-200與S7-1200通過PPI以太網模塊通訊,賦能汽車制造行業發展
基于Modbus TCP的WinCC監控S7-1200/200SMT應用實例
老舊S7-300煥新生:MPI轉網口一網打盡S7-1200、觸摸屏、ModbusRTU變頻
依托PPI以太網模塊,西門子S7-200與S7-1200通訊助力食品加工行業進步
西門子PLC(S7-1200/1500/300/400)的數據采集與監控方案
西門子S7-1200 G2的7大亮點及最新功能
S7-200Smart與S7-1200通過Modbus協議對接到上位機
S7-1200如何通過編程判斷程序是否發生過改動
評論