久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

SCL訪問DB

 紫殿 2012-05-05
  • 可以在塊中訪問數據塊號,輸入管腳填起始地址,。如果使用的是BLOCK_DB數據類型,,也可以直接連接數據塊,。優(yōu)點是,CFC中可以直接顯示符號名,。

  • 可以將數據塊與一個ANY指針相連,。優(yōu)點是,可以連接數據塊中的某個變量,,這個變量可以作為訪問數據的起始點,。

例程包括這兩種情況的SCL代碼。以下是程序中使用的數據塊,。

通過數據塊號訪問:

FUNCTION FC601 : VOID

VAR_INPUT

  DB_NO     : BLOCK_DB;         // Number of the Data-Block

  STRT_ADD  : INT;              // Start address in the DB

END_VAR

VAR_OUTPUT

    Q_DB : INT;

    Q_INT1 : INT;

    Q_REAL1 : REAL;

    Q_WORD1 : WORD;

    Q_BOOL1 : BOOL;

END_VAR

    Q_DB := WORD_TO_INT (BLOCK_DB_TO_WORD (DB_NO));

    // absolute addressing from start address

    Q_INT1 := WORD_TO_INT (DB_NO.DW[STRT_ADD + 0]);

    Q_REAL1 := DINT_TO_REAL (DWORD_TO_DINT (DB_NO.DD[STRT_ADD + 2]));

    Q_WORD1 := DB_NO.DW[STRT_ADD + 6];

    Q_BOOL1 := DB_No.DX[STRT_ADD + 8, 0];

END_FUNCTION

請注意,,BLOCK_DB數據類型僅針對于輸入參數。如果要使用輸出參數或者輸入輸出參數,,必須使用不同的數據類型,,

并通過轉換功能塊后再訪問數據。(比如 INT_TO_BLOCK_DB),。

過ANY指針訪問:

ANY指針格式在STEP 7在線幫助中有具體說明(標題: "Format of the ANY parameter type"),。

FUNCTION_BLOCK FB602
 
VAR_INPUT
  DB_ANY : ANY;                 // Any-Pointer of the Data-Block
 
  AnyPointer AT DB_ANY : STRUCT
        BYTE0   :BYTE;          // Byte 0
        TYP     :BYTE;          // Byte 1 Data-/Parametertype
        ANZ     :WORD;          // Byte 2+3 Lenth of data
        DBNO    :WORD;          // Byte 4+5 DB-Number
        BZ      :DWORD;         // Byte 6 to 10 Pointer
  END_STRUCT;
 
  tmpAnyPointer AT DB_ANY : ARRAY [0..9] OF BYTE;
  
END_VAR
 
VAR_OUTPUT
    Q_DB : INT;
   
    Q_INT1 : INT;
    Q_REAL1 : REAL;
    Q_WORD1 : WORD;
    Q_BOOL1 : BOOL;
END_VAR
 
VAR_TEMP
    MEM_AREA : BYTE;
    Offset : INT;
END_VAR
 
    MEM_AREA := tmpAnyPointer[6];   // this Byte contains the memory area
   
    IF (MEM_AREA <> 16#84) THEN
        RETURN;     // quit block in case the area isn't DB
    END_IF;
    
    Offset := DWORD_TO_INT(SHR (IN:=AnyPointer.BZ, N:=3));    // Offset address
      
    Q_DB := WORD_TO_INT (AnyPointer.DBNO);
   
    // absolute addressing from Offset address
    Q_INT1 := WORD_TO_INT (WORD_TO_BLOCK_DB (AnyPointer.DBNO).DW[Offset + 0]);
    Q_REAL1 := DINT_TO_REAL (DWORD_TO_DINT(WORD_TO_BLOCK_DB (AnyPointer.DBNO).DD[Offset + 2]));
    Q_WORD1 := WORD_TO_BLOCK_DB (AnyPointer.DBNO).DW[Offset + 6];
    Q_BOOL1 := WORD_TO_BLOCK_DB (AnyPointer.DBNO).DX[Offset + 8,0];
 
END_FUNCTION_BLOCK

下圖是CFC圖表中的功能塊。


圖. 2: CFC中互連的功能塊


數據塊號在第一個塊中參數化,。STRT_ADD是定義了訪問數據塊的起始地址,,在此例中是第一個結構變量的起始地址。

數據塊與第二個功能塊相連接,。STRT_ADD參數定義了第二個結構變量作為起始地址,。在第三個塊中,ANY指針直接和第二個結構變量的起始地址相連,。

注意

在讀數據塊的時候,,注意沒有超出數據塊大小限制。

使用ANY指針時,,注意檢查程序中所需數據源是否正確,,因為在CFC中如果連接ANY指針,不會檢查數據類型,。

,、、,、,、、,、,、、、,、,、、,、,、、,、,、,、,、、,、,、、,、,、、,、,、、,、,、、,、,、、,、,、、,、,、、,、,、、,、,、、、,、,、、,、,、、,、,、、,、,、、,、,、、,、

編程過程中,,可以使用參數類型BLOCK_DB (. 01). 在編譯時,具體的數據塊是不確定的,,所以S7-SCL編譯器通過符號表和DB的變量聲明不能找到對應的數據類型,。如果使用絕對地址訪問DBS7-SCL假定該數據類型為BOOL, BYTE, WORDDWORD,。 

下面的例子,,通過絕對地址尋址,可以訪問DB數據中的變量。在FB中,,沒有確定DB塊(db_test)的數據DD0此時被讀,。

. 01

DB的數據DD0DINT數據格式。DD0被轉化為TIME類型變量,。

注意:

語句"WORD_TO_BLOCK_DB(Code_2).dw[Byte_Index]...;" 允許直接訪問 DB,。必須定義WORD類型的"Code_2"變量用于DB號和整型類型的變量"Byte_Index"用作DB數據索引。

如果DB號是"BLOCK_DB"類型的一個輸入變量類型,,可以間接地使用"dbnumber.dw0"變量訪問DB,。

更多的信息請參考S7-SCL在線幫助

Absolute access to data blocks

Indexed access to data blocks

Class B conversion functions

word_to_bolck_db(db_no).dw[dbb_no]

問題: 

S7-SCL中可以編程ANY指針嗎?使用該指針可以在指向的數據區(qū)設置任何位,。

解答:

可以,。下面的條目講述了如何在S7-SCL中編程或設定一個ANY指針:

如何使用AT函數在S7-SCL中構造一個ANY指針?-條目號:21946854

當調用SFC14/15時,,在SCL中支持ANY參數-條目號:10625180

關于ANY指針格式的更多信息和ANY數據類型,,可從STEP 7S7-SCL的在線幫助中找到:

“參數類型ANY的格式”(STEP 7的在線幫助中)

“數據類型ANY”和“數據類型ANY實例” (S7-SCL的在線幫助中),。

該條目包含帶有“SetBit”功能的S7-SCL程序。使用該“SetBit”功能,,可以在數據區(qū)中將由ANY指針標記的位設置為“1> e > > ,,該數據區(qū)中的其它位都設置為“0”。

可以在OB1中調用“SetBit”,,該OB1也是用S7-SCL語言編寫的,。然而,用戶也可以在LAD,、F BDSTL編程語言中使用該功能,。

1:在梯形圖編程中調用“SetBit”功能(FC1)的實例

在“SetBit”功能中聲明了下列輸入變量,使用這些變量在定義的數據區(qū)中設置位: 名稱 數據類型 說明

  整數在數據區(qū)中要設置的位的數目,。

在本例中:位12

起始位和范圍 ANY指針 指向數據區(qū)的已定義好的ANY指針,。

在本例中:在DB 1中,數據區(qū)DBX2.2DBX5.1 (23個位)

1:“SetBit”功能(FC1)的輸入變量

功能說明:

定義ANY指針的第一步是在S7-SCL程序中創(chuàng)建UDT1 (符號:AnyPoint),,該 S7-SCL程序包含要為ANY指針定義的數據類型,。

使用聲明“Data: ARRAY[1..10] OF BYTE”定義用于存儲數據的數據塊DB1,。

正如上文提到的條目中所描述的一樣,,通過使用臨時變量和AT功能,可以從S7-SCL訪問與聲明的ANY指針“ StartBitAndRange”相關的數據(本例中:UDT1),。

示例:

TempAny AT BufferANY,;//臨時變量“TempAny”和“Buffer (Buffer是類型AnyPoint = UDT1)

TempAny= StartBitAndRange

在本例中,,“TempAny”變量是用于調用“SetBit”功能的已計算的ANY指針:

RetVal:= SetBit(Value= BitNumber,,StartBitAndRange= TempAny)& amp; amp; lt; /li>

DB1中,,數據區(qū)中DBX2.2DBX5.1之間的第12個位現(xiàn)在設置為“1”,,此情況下為位DB1.DBX3.6。該 數據區(qū)中的其它位都設置為“0”,。位號12是第13個位,,因為位號是從位號0開始計算的。

為在“Monitor/control variable”中測試程序,,要 定義用于識別指針P#DBx.DBX(MW8).(MB6) DataType(MB7) MW4的下列標志字節(jié)或標志字,。& amp; amp; lt; /p> 操作數 符號 意義

MW8 OffsetInByte 記錄字節(jié)偏移量的存儲字

MB6 OffsetInBit 記錄位偏移量的存儲字節(jié)

MB7 DataType 記錄所選數據類型的存儲字節(jié)

MW4 DataCount 記錄數據類型數目或重復因子的存儲字

MW2  BitToSetInRange 記錄變量“Value”的存儲字

2:用于以“Monitor/control variable”測試的指針結構

因而,對于ANY指針P#DB1.DBX2.2 BOOL 23,,例如,, 以“Monitor/control variable”測試時,顯示:P#DB1.DBX(MW8).(MB6)DataTyp MB7 MW4,。

2:“Monitor/control variable”功能

通過MW8 (OffsetInByte=2)MB6 (OffsetInBits=2),,定義數據區(qū)的起始位置,,并使用MW4 (DataCount=23)定義數據區(qū)的長度。

使用MB7 (DataType=1 表示BOOL類型),,可以定義數據類型,。這對應于ANY指針P#DB1.DBX2.2 BOOL 23i i i i 要設置的位通過MW2 (BitToSetInRange=12)定義,。

本例中,,數據區(qū)從DB1.DBB2中的第2位開始。要設置的位是加上12(0 ... 12)后的結果,即直到DB1.DBB3中的第6位結束,。

3:要置位的位地址用數據區(qū)起點的偏移量的方式表示

通過RET_VAL (返回值),,如果功能沒有執(zhí)行,將輸出下列代碼:

W#16#0000  執(zhí)行了功能且沒有出錯,,并且設置了相關位,。

W#16#8001 指定了已定義的ANY指針不支持的數據類型。

W#16#8010 要設置的位大于數據區(qū),。

W#16#8011 要設置的位小于數據區(qū),。

更多示例:

4:帶ANY指針:P#DB1.DBX0.0 BYTE 4 的“Monitor/control variable”功能

在圖 4 顯示的示例中,數據類型為“BYTE (MB7=2),,長為4個字節(jié)(MW4=4),,字 節(jié)和位偏移量為0(MB6=0MW8=0)DBX0.0 BYTE 4.MW2存儲的值2,因此第2位的DB1.DBX0.2就被置位了,。& amp; amp; lt; /p>

5:帶ANY指針:P#DB1.DBX0.0 BOOL4 的“Monitor/control variable”功能

在圖 5 顯示的示例中,,位和字節(jié)偏移量為0,數據類型為BOOL,,長度為4個位,。然而,為DB1.DBX0.7 (MW2=7)設置的位已經輸入,,并且大于標志的數據區(qū)(4),。于是在RetVal中輸出故障代碼8010(MW10)

6:帶ANY指針:P#DB1.DBX0.1 WORD 2 的“Monitor/control variable”功能

在圖 6 顯示的示例中,,DBX0.4DB1中置位為“1”,。

下載:

附上的下載鏈接包含帶有上述塊的STEP 7項目以及在S7-SCL中調用的功能。在項目中有兩個獨立的站,,分 別用德語和英語進行了注釋,。< /p>

SetBit_SCL.exe ( 176 KB )

將“SetBit_scl.exe”文件復制到一個單獨的文件夾中,雙擊啟動該文件,。STEP 7 V5.2項目連帶相關的子目錄一起自動解壓縮后,,可以使用SIMATIC管理器打開和處理該項目。

可運行性和測試環(huán)境

本示例適用于SIMATIC S7-300S7-400系列的所有類型CPU,。

下表列出了用于創(chuàng)建該條目并校驗所述功能的組件: 測試環(huán)境 版本

PC平臺 PG 740 Pentium 3

PC操作系統(tǒng) Microsoft Windows 2000 SP3

STEP 7 STEP 7 Professional Edition 12/2002

(STEP 7 V5.2 SP1,,S7-SCL V5.1)

S7-CPU  CPU314C-2PtPS7-PLCSIM V5.2

http://support.automation./CN/llisapi.dll?func=cslib.csinfo&lang=zh&siteid=cseus&objid=19362106 

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多