什么是“AT”指令,如何使用?
AT指令是S7-SCL中特有的一個指令,初學者可能會忽略此指令,或者對其理解不夠深刻。AT指令在S7-SCL中有著非常重要的地位,很多應用程序都必須使用此指令。下面將對此指令進行詳細講解。
AT指令可以使用戶能夠以不同的數據類型來訪問一個已經聲明的變量。此指令類似于高級編程語言中的“繼承”概念。此指令有如下特點:
· 特點二:在塊中可以使用其它數據類型的視圖
· 特點三:它只是讓另外一些變量繼承了某個變量的特性,僅僅數據類型是新的,其它特性相同。
下面將通過具體程序對以上三個特點進行說明,首先定義UDT100,UDT200,大小都為12個字節,但結構不同。UDT100包括一個DATE_AND_TIME數據類型(8個字節),還包括一個實數(4個字節);UDT200包括6個字(12個字節);在FC2定義輸入參數Buffer, Frame1,Frame2:
特點一:定義僅在塊內有效,在接口參數中不出現。塊內定以的輸入參數有3個,但僅在塊內有效,在接口參數僅出現Buffer輸入參數
特點三:它只是讓Frame1繼承了Buffer的特性,僅僅數據類型是新的,其它特性相同。此處的UDT100長度應小于等于所繼承的Buffer大小,否則編譯錯誤
注意:此處的UDT200長度應小于等于所繼承的Buffer大小,否則編譯錯誤
注意:UDT100,UDT200繼承了Buffer特性
在OB1中調用FC2,并將一個數組賦值給Buffer輸入參數
特點一:塊內定以的輸入參數有3個,但僅在塊內有效,在接口參數僅出現Buffer輸入參數
特點二:對于輸入參數Buffer得到的數據,可以按照Frame1,或Frame2的格式來尋址。例如可以將 Buffer 的前8 個字節認為是DATA_AND_TIME,送至臨時變量TEST_DT中
AT指令應用例子1:在STL中,用戶如果希望取得MB0的某一位的數值是非常容易的,例如第3位,直接尋址M0.2就可以了。而在S7-SCL中,由于其具備高級語言的特點,所以定義的變量的絕對地址一般是不顯現的。因此在STL中簡單的操作,在S7-SCL中卻復雜起來。但是通過使用AT指令即可解決這個問題。下圖中的例子中,當輸入的某個字節,其輸出依次為此字節的8個位。
AT指令應用例子2:在S7-SCL中,ANY數據類型的使用,經常會伴隨著AT指令的使用,下面的例子演示了如何拆分改寫ANY數據類型中的內容。程序執行結果相當于:
AT指令在使用當中,還有如下注意事項:
· AT指令用于對某個變量進行其它數據類型的聲明時,必須放在此變量的聲明語句后面
· AT指令生成的變量不可以初始化
· AT指令用于對某個變量其它數據類型的聲明時,占用內存大小要小于等于此變量的長度
· AT指令用于對某個變量其它數據類型的聲明時,如下的組合是允許的:
(1)AT指令用于ANY類型在VAR_OUT中是不允許的
Elementary (基本數據類型包括) :BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME,
S5TIME, CHAR Complex (復雜數據類型包括) :ARRAY, STRUCT, DATE_AND_TIME, STRING
在VASS標準中的應用實例:
pMeldFeldAT TempPointerMsys: STRUCT 變量格式是結構
BYTE0:BYTE; // Byte 0
TYP :BYTE; //Byte 1 Daten/Parametertyp
ANZ :WORD; //Byte 2+3 Laenge der Variablen
DBNR :WORD; //Byte 4+5 DB-Nummer
BZ :DWORD;// Byte 6 故障信息號
END_STRUCT;
程序中
TempPointerMsys := Msys; 故障信息號給入變量
故障報警信息
MeldSend(AufrufNr := 1
,Anz_Meld:= 27
,pMeldFeld:= pMeldFeld.BZ 故障信息號被用來發出
,pMeldAbb := pMeldAbb.BZ
,MeldDB:= WORD_TO_INT(pMeldDBNR.DBNR)
,AenderungsID := AenderungsID
,Integritaet:= Integritaet
,Neustart:= Neustart
); // VOID
-------------------------------END--------------------------
責任編輯:lq
-
參數
+關注
關注
11文章
1831瀏覽量
32195 -
數據類型
+關注
關注
0文章
236瀏覽量
13618 -
SCL
+關注
關注
1文章
239瀏覽量
17057
原文標題:SCL_什么是“AT”指令,如何使用?及其在VASS標準中的應用
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論