S7-1500 使用AT覆蓋變量
S7-1500 要訪問聲明變量?jī)?nèi)的數(shù)據(jù)區(qū)域,可以通過附加聲明來(lái)覆蓋所聲明的變量。其優(yōu)勢(shì)在于無(wú)需指令即可根據(jù)需要實(shí)現(xiàn)變量的拆分,拆分后的變量可在程序中直接使用。例如,可以通過 Array of Bool 尋址數(shù)據(jù)類型為 Byte、Word 或 DWord 變量的各個(gè)位。

支持AT 訪問的變量如下:
? 標(biāo)準(zhǔn)訪問的FC/FB的接口數(shù)據(jù)區(qū)中的變量;
? 優(yōu)化訪問的FB的接口數(shù)據(jù)區(qū)中保持性設(shè)置為“在IDB中設(shè)置”的變量。
AT變量的聲明:要覆蓋一個(gè)參數(shù),可以在待覆蓋的參數(shù)后直接聲明一個(gè)附加參數(shù),然后選擇數(shù)據(jù)類型"AT"。編輯器隨即創(chuàng)建該覆蓋,然后選擇將用于該覆蓋的數(shù)據(jù)類型、結(jié)構(gòu)或數(shù)組。
以下使用TIA V17 Por軟件,以一個(gè)簡(jiǎn)單實(shí)例講述AT覆蓋變量使用,具體如下;
1. AT 覆蓋變量使用-標(biāo)準(zhǔn)訪問的FB/FC
(1) 創(chuàng)建一個(gè) S7-1500 的項(xiàng)目,在程序塊中添加一個(gè) FB (或者 FC ),右擊FB 進(jìn)入該塊的屬性中,將 FB 屬性中的"優(yōu)化的塊訪問"取消,改為標(biāo)準(zhǔn)FB,如圖 1 所示。

圖1. 創(chuàng)建非優(yōu)化的 FB 塊
(2) 雙擊進(jìn)入 FB 塊, 展開 FB 塊的"塊接口",如圖 2 所示。

圖2. 展開 FB 塊的"塊接口"
(3)在FB"塊接口"中,在 Input 添加一個(gè)變量,變量名為 "InData",數(shù)據(jù)類型為 Word;然后緊跟在變量 “InData” 下一行,數(shù)據(jù)類型處輸入"AT"數(shù)據(jù)類型,如圖 3 所示。

圖3. 輸入"AT"數(shù)據(jù)類型
(4)Input 中會(huì)生成一個(gè)新變量,變量名可自由定義此處定義為“AtInData”,然后把變量的數(shù)據(jù)類型修改成 Array[0..15] of Bool,并編譯該 FB 塊。可以看到變量 "InData" 和覆蓋變量 “AtInData” 的偏移量都是 0.0,表示這兩個(gè)變量是相同地址,只是以不同的數(shù)據(jù)類型顯示,如圖 4 所示。

圖4. 創(chuàng)建AT覆蓋變量
(5)同樣方法新建 Output 的變量 “OutData” 和AT覆蓋變量 “AtOutData”,如圖 5 所示。

圖5. 定義輸出AT覆蓋變量
(6) FB中編程使用(程序無(wú)實(shí)際意義僅為應(yīng)用示例),此時(shí)輸入和輸出的WORD變量均可按拆分成的Bool數(shù)據(jù)類型使用,如圖 6 所示。

圖6. FB中使用AT覆蓋變量編程
(7) 在OB1中調(diào)用FB時(shí),接口管腳上是不會(huì)顯示AT覆蓋變量的,如圖 7 所示。

圖7. OB1中調(diào)用FB
2. AT 覆蓋變量使用-優(yōu)化訪問的FB
若FB為優(yōu)化程序塊,需要在"保持"一列中選擇"在 IDB 中設(shè)置",才能使用 AT 變量覆蓋,如圖 8 所示。

圖8. FB 塊的優(yōu)化訪問處理
3. 注意事項(xiàng)和規(guī)則

注意事項(xiàng):
S7-1500/1200:在 FC 中使用 AT,對(duì)于 S7-1500/1200 中的 FC,覆蓋變量和被覆蓋變量的數(shù)據(jù)長(zhǎng)度必須相同。如果無(wú)法通過程序?qū)崿F(xiàn),請(qǐng)檢查是否可以使用片段訪問來(lái)代替 AT 結(jié)構(gòu)。

規(guī)則:
對(duì)于變量覆蓋可適用以下通用規(guī)則:
1.在 STL、LAD、FBD 和 GRAPH 中,S7-1200 和 S7-1500 允許變量覆蓋。
2.SCL 支持在所有 CPU 系列中覆蓋。
3.可以在以下塊中覆蓋變量:
在標(biāo)準(zhǔn)訪問的代碼塊中;
在可優(yōu)化訪問具有保留設(shè)置"在 IDB 中設(shè)置"的變量的代碼塊中。
4.覆蓋變量數(shù)據(jù)寬度必須小于等于被覆蓋變量的數(shù)據(jù)寬度。
5.不可以覆蓋 VARIANT 和 INSTANCE 數(shù)據(jù)類型的變量。
6.如果被覆蓋變量的數(shù)據(jù)類型為字符串、字節(jié)數(shù)組、字符數(shù)組等,那么其長(zhǎng)度應(yīng)與偶數(shù)個(gè)字節(jié)數(shù)對(duì)應(yīng)。
7.無(wú)法覆蓋庫(kù)中聲明為接口中參數(shù)的塊。
8.無(wú)法覆蓋接口中聲明為參數(shù)的結(jié)構(gòu)化 PLC 變量。
9.無(wú)法通過片段訪問對(duì)覆蓋變量進(jìn)行尋址。
下列組合規(guī)則也適用,如下圖9所示。

圖9. FB 塊的優(yōu)化訪問處理
上圖9來(lái)在TIA V17幫助文件,圖中標(biāo)注的“X**”應(yīng)該和“√”對(duì)調(diào)。測(cè)試驗(yàn)證如下圖10 所示?!癐nput_1”為被覆蓋的變量,數(shù)據(jù)類型為基本類型;“Input_2”為覆蓋變量,數(shù)據(jù)類型為結(jié)構(gòu)體;不符合幫助文件備注的例外情況。

圖10. AT覆蓋的例外情況