国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Variant類型的變量指令說明

機器人及PLC自動化應用 ? 來源:機器人及PLC自動化應用 ? 作者:機器人及PLC自動化 ? 2022-03-30 15:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

TIA V13SP1 開始,S7-1200 V4.0開始,支持以下處理Variant類型的變量的指令,如圖1-2所示。

圖1 LAD中Variant類型的變量比較操作指令

圖2 SCL中Variant類型的變量比較操作指令

注:EQ_TypeOfDB、NE_TypeOfDB、TypeOfDB指令參見DB_ANY。

EQ_Type、NE_Type、TypeOf

表1 LAD指令詳情

SCL指令:TypeOf(操作數),操作數是FC/FB的Input/Output/InOut/Temp中定義為Variant類型的參數,該語句輸出是數據類型,在程序中只能用在IF與CASE進行比較。

用法1:IF指令,操作數對應的實參的類型與一個變量類型的比較,例如:

IF (TypeOf(操作數1) = 變量類型(例如Byte))

。..

END_IF;

用法2:IF指令,兩個操作數對應的實參的類型比較,例如:

IF (TypeOf(操作數1) = TypeOf(操作數2))

。..

END_IF;

用法3:CASE OF指令,操作數對應的實參的類型與多個變量類型的比較,例如:

CASE (TypeOf(操作數)) OF

Byte:

。..

Int:

。..

ELSE

。..

END_CASE;

使用舉例:

編寫FC,檢查輸入Variant變量類型,Byte則輸出True,其它則輸出False,如圖3-6所示。

圖3 FC6參數定義

圖4 程序詳情

SCL的版本程序,如圖5所示。

圖5 SCL版本的程序

OB1多次調用該FC6,可以看到結果,“DB16”.Static_1是Byte類型,“DB16”.Static_3不是Byte類型。

圖6 OB1多次調用FC6

EQ_ElemType、NE_ElemType、TypeOfElements

表2 LAD指令說明

SCL指令:TypeOfElements(操作數),操作數是FC/FB的Input/Output/InOut/Temp中定義為Variant類型的參數,該語句輸出是數據類型,在程序中只能用在IF與CASE進行比較。

比較之前,通常先使用IS_ARRAY檢查操作數對應的實參是否是數組類型。

用法1:IF指令,操作數對應的實參為數組類型,對該數組元素的類型與一個變量類型的比較,例如:

IF (TypeOfElements(操作數1) = 變量類型(例如Byte))

。..

END_IF;

用法2:IF指令,兩個操作數對應的實參均為數組類型的類型,比較它們數組元素的類型,例如:

IF (TypeOfElements(操作數1) = TypeOfElements(操作數2))

。..

END_IF;

用法3:CASE OF指令,操作數對應的實參為數組類型,對該數組元素的類型與多個變量類型的比較,例如:

CASE (TypeOfElements(操作數)) OF

Byte:

。..

Int:

。..

ELSE

。..

END_CASE;

注意

1.如果上述三種用法操作數不是數組類型,但是數據類型和比較對象的數據類型相同,也會當做該數據類型的數組進行處理,相當于執行的TypeOf指令。

2.用法2,也可以是這樣的:

IF (TypeOfElements(操作數1) = TypeOf(操作數2))

。..

END_IF;

或者

IF (TypeOf(操作數1) = TypeOfElements(操作數2))

。..

END_IF;

即一邊是數組,一邊不是數組的比較。

使用舉例:

編寫FC,檢查輸入Variant變量類型,數組元素如果是Byte則輸出1為True,輸出2為False,數組元素如果是Int則輸出1為False,輸出2為True,其余情況輸出1為False,輸出2為False,如圖7-10所示。

圖7 FC7參數定義

圖8 程序詳情

SCL的版本程序,如圖9所示。

圖9 SCL版本的程序

OB1多次調用該FC7,可以看到結果,“DB17”.Static_1是Byte數組,“DB17”.Static_4是Int數組,“DB17”.Static_7不是以上兩種類型。

圖10 OB1多次調用FC7

IS_NULL、NOT_NULL

表3 LAD指令說明

對于SCL,雖然沒有相對應指令,但是可以在IF指令中,將Variant變量與NULL比較

IF (操作數 = NULL)

。..

END_IF;

理論上來說,對于每個參數出現了Variant的FC/FB,都應該檢查該Variant變量是否指向了空指針,此處的空指針不一定是形參填寫NULL,也有可能填寫沒有初始化的Temp中的Variant。

對于最新的S7-1200 V4.2版本,只有一種情況可以初始化Temp中的Variant,就是指令DB_ANY_TO_VARIANT(參見DB_ANY),同時運行沒有錯誤,否則Temp中的Variant就相當于NULL。

使用舉例:

程序架構:OB1調用FC9,FC9調用FC8,FC8中檢查3個輸入是否是NULL,是則輸出True,不是則輸出False,FC9的3個Temp變量作為FC8的3個輸入,Temp_1是不賦值的Int變量,Temp_2和Temp_3是通過DB_ANY_TO_VARIANT初始化的Variant變量,其中為Temp_2初始化的DB1是不滿足DB_ANY_TO_VARIANT條件的DB塊,為Temp_3初始化的DB19是不滿足DB_ANY_TO_VARIANT條件的DB塊,最終將FC8的3個輸出關聯FC9的3個輸出至OB1中顯示,如圖11-13所示。

圖11 FC8程序詳情

圖12 FC9程序詳情

OB1調用FC9

圖13 OB1調用FC9

從圖13中可知,不滿足DB_ANY_TO_VARIANT條件的DB1初始化的Temp_2相當于NULL,其余兩個都可以視作有明確指向。

IS_ARRAY

表4 LAD指令說明

SCL指令:

IS_ARRAY(操作數),操作數是FC/FB的Input/Output/InOut/Temp中定義為Variant類型的參數,當操作數對應的實參為數組或者P#指針格式,IS_ARRAY(操作數) 為True,否則IS_ARRAY(操作數) 為False。

使用方法:

IF IS_ARRAY(操作數) THEN

。..

END_IF;

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 指令
    +關注

    關注

    1

    文章

    623

    瀏覽量

    37529
  • 數據類型
    +關注

    關注

    0

    文章

    237

    瀏覽量

    14185

原文標題:S7-1200 比較操作 - 變量 指令說明

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于凌羽派的OpenHarmony北向應用開發:ArkTS語法-數據類型變量聲明

    /master/samples/C02_DataTypeAndVariableDeclaration 二、基礎知識 ArkTS通過聲明引入變量、常量、類型和函數。 2.1 變量聲明 使用關鍵字let聲明的
    發表于 02-26 14:24

    C語言全局變量重點使用

    ,test1必須在每次增加操作時加載并存儲全局變量errs的值,而test2存儲localerrs于寄存器并且只需要一個計算機指令
    發表于 12-12 06:58

    第7章 變量進階與點陣LED(7.1 7.2)

    走在馬路上的時候,經常會看到馬路兩側有一些LED點陣的廣告牌,這些廣告牌看起來絢爛奪目,非常吸引人,而且還會變化很多種不同的顯示方式。本章就會學習到點陣LED的控制方式,同時也會學習C語言變量的進階
    的頭像 發表于 12-10 16:25 ?353次閱讀

    C語言自動類型轉換

    是通過定義類型轉換運算來實現的。其一般形式為: (數據類型) (表達式) 其作用是把表達式的運算結果強制轉換成類型說明符所表示的類型
    發表于 11-25 08:04

    什么是??volatile

    volatile是一個類型修飾符(type specifier)。 volatile的作用是作為指令關鍵字,確保本條指令不會因編譯器的優化而省略,且要求每次直接讀值。 volatile變量
    發表于 11-25 06:36

    C語言強制類型轉換

    強制類型轉換是通過定義類型轉換運算來實現的。其一般形式為: (數據類型) (表達式) 其作用是把表達式的運算結果強制轉換成類型說明符所表
    發表于 11-24 06:32

    常用變量的介紹

    寄存器變量,一般較短的變量類型適合定義為寄存器變量,如short、char等; auto:c語言變量缺省存儲
    發表于 11-21 07:05

    關于協處理器自定義指令的實現

    是RISC-V的r型指令,協處理只能定義成r型,其他指令格式如下所示: 而0x7b表示的是哪一種custom,一種可以定義出4種類型,每種定義格式為: Custom-0 ———7‘b0001011
    發表于 10-31 06:36

    對浮點指令擴展中一些問題的解決與分享

    一、 在e203_exu_decode中,發現變量leg1_ops用于標識各種類型的運算指令,而我們由于沒有加上浮點指令,所以在浮點進入后,此處變量
    發表于 10-24 11:47

    蜂鳥自定義指令軟件講解和內聯匯編(一)

    變量不僅作為輸出,而且作為輸入。 (2)蜂鳥定義的匯編指令 此協處理器模塊為計算3行3列的矩陣值,首先加載矩陣每行的首個元素的地址,連續加載三次進行計算。lbuf為讀內存中的數據加載到緩存中;sbuf
    發表于 10-24 10:51

    利用蜂鳥內核來實現指令的仿真模擬

    介紹一下RISC-V的指令架構,在RSIC-V中主要有以下6種指令格式: 因此,我們在對于一條指令進行分析時,我們首先要知道其的指令類型
    發表于 10-24 08:17

    對浮點指令擴展中部分問題的解決與分享

    leg1_ops用于標識各種類型的運算指令,而我們由于沒有加上浮點指令,所以在浮點進入后,此處變量leg1_ops為0,導致后續指令執行出錯
    發表于 10-24 08:14

    Vector向量指令集簡介(一)

    RV32V將數據寄存器和長度與向量寄存器關聯而不是指令操作碼。程序在執行V指令之前會用數據類型和數據寬度來標記向量寄存器,因為每個V指令通常有8個整數版本和三個浮點版本。 這個編
    發表于 10-23 08:28

    PLC中Static和Temp變量的區別

    大家好,收到粉絲投稿,讓博主講下Static變量和Temp變量的區別,新入行的兄弟可能會對這兩個概念不太能理解。
    的頭像 發表于 09-24 14:51 ?1399次閱讀
    PLC中Static和Temp<b class='flag-5'>變量</b>的區別

    Ansible Playbook中的變量使用技巧

    在inventory中定義的連接變量(比如ansible_ssh_user);優先級第二。
    的頭像 發表于 04-15 10:26 ?982次閱讀