S7-1500 要訪問聲明變量內的數據區域,可以通過附加聲明來覆蓋所聲明的變量。其優勢在于無需指令即可根據需要實現變量的拆分,拆分后的變量可在程序中直接使用。例如,可以通過 Array of Bool 尋址數據類型為 Byte、Word 或 DWord 變量的各個位。
支持AT 訪問的變量如下:
? 標準訪問的FC/FB的接口數據區中的變量;
? 優化訪問的FB的接口數據區中保持性設置為“在IDB中設置”的變量。
AT變量的聲明:要覆蓋一個參數,可以在待覆蓋的參數后直接聲明一個附加參數,然后選擇數據類型"AT"。編輯器隨即創建該覆蓋,然后選擇將用于該覆蓋的數據類型、結構或數組。
以下使用TIA V17 Por軟件,以一個簡單實例講述AT覆蓋變量使用,具體如下;
1. AT 覆蓋變量使用-標準訪問的FB/FC
(1) 創建一個 S7-1500 的項目,在程序塊中添加一個 FB (或者 FC ),右擊FB 進入該塊的屬性中,將 FB 屬性中的"優化的塊訪問"取消,改為標準FB,如圖 1 所示。
圖1. 創建非優化的 FB 塊
(2) 雙擊進入 FB 塊, 展開 FB 塊的"塊接口",如圖 2 所示。
圖2. 展開 FB 塊的"塊接口"
(3)在FB"塊接口"中,在 Input 添加一個變量,變量名為 "InData",數據類型為 Word;然后緊跟在變量 “InData” 下一行,數據類型處輸入"AT"數據類型,如圖 3 所示。
圖3. 輸入"AT"數據類型
(4)Input 中會生成一個新變量,變量名可自由定義此處定義為“AtInData”,然后把變量的數據類型修改成 Array[0..15] of Bool,并編譯該 FB 塊。可以看到變量 "InData" 和覆蓋變量 “AtInData” 的偏移量都是 0.0,表示這兩個變量是相同地址,只是以不同的數據類型顯示,如圖 4 所示。
圖4. 創建AT覆蓋變量
(5)同樣方法新建 Output 的變量 “OutData” 和AT覆蓋變量 “AtOutData”,如圖 5 所示。
圖5. 定義輸出AT覆蓋變量
(6) FB中編程使用(程序無實際意義僅為應用示例),此時輸入和輸出的WORD變量均可按拆分成的Bool數據類型使用,如圖 6 所示。
圖6. FB中使用AT覆蓋變量編程
(7) 在OB1中調用FB時,接口管腳上是不會顯示AT覆蓋變量的,如圖 7 所示。
圖7. OB1中調用FB
2. AT 覆蓋變量使用-優化訪問的FB
若FB為優化程序塊,需要在"保持"一列中選擇"在 IDB 中設置",才能使用 AT 變量覆蓋,如圖 8 所示。
圖8. FB 塊的優化訪問處理
3. 注意事項和規則
注意事項:
S7-1500/1200:在 FC 中使用 AT,對于 S7-1500/1200 中的 FC,覆蓋變量和被覆蓋變量的數據長度必須相同。如果無法通過程序實現,請檢查是否可以使用片段訪問來代替 AT 結構。
規則:
對于變量覆蓋可適用以下通用規則:
1.在 STL、LAD、FBD 和 GRAPH 中,S7-1200 和 S7-1500 允許變量覆蓋。
2.SCL 支持在所有 CPU 系列中覆蓋。
3.可以在以下塊中覆蓋變量:
在標準訪問的代碼塊中;
在可優化訪問具有保留設置"在 IDB 中設置"的變量的代碼塊中。
4.覆蓋變量數據寬度必須小于等于被覆蓋變量的數據寬度。
5.不可以覆蓋 VARIANT 和 INSTANCE 數據類型的變量。
6.如果被覆蓋變量的數據類型為字符串、字節數組、字符數組等,那么其長度應與偶數個字節數對應。
7.無法覆蓋庫中聲明為接口中參數的塊。
8.無法覆蓋接口中聲明為參數的結構化 PLC 變量。
9.無法通過片段訪問對覆蓋變量進行尋址。
下列組合規則也適用,如下圖9所示。
圖9. FB 塊的優化訪問處理
上圖9來在TIA V17幫助文件,圖中標注的“X**”應該和“√”對調。測試驗證如下圖10 所示。“Input_1”為被覆蓋的變量,數據類型為基本類型;“Input_2”為覆蓋變量,數據類型為結構體;不符合幫助文件備注的例外情況。
圖10. AT覆蓋的例外情況
-
數據
+關注
關注
8文章
7073瀏覽量
89147 -
程序
+關注
關注
117文章
3789瀏覽量
81138 -
編輯器
+關注
關注
1文章
806瀏覽量
31201
原文標題:S7-1500 使用AT覆蓋變量
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論