西門(mén)子S7-1200/1500系列PLC提供Variant數(shù)據(jù)類(lèi)型用于對(duì)數(shù)據(jù)進(jìn)行引用,,有著比ANY類(lèi)型更強(qiáng)大的功能,。今天這篇文章,我們就來(lái)聊聊Variant類(lèi)型,,并使用SCL語(yǔ)言編寫(xiě)一個(gè)簡(jiǎn)單的例程。 本文包括如下幾個(gè)主題: 1,、認(rèn)識(shí)Variant類(lèi)型; 2,、Variant與ANY類(lèi)型的區(qū)別,; 3、Variant類(lèi)型使用示例 1,、認(rèn)識(shí)Variant類(lèi)型 Variant是西門(mén)子S7-1200/1500系列PLC支持的一種新數(shù)據(jù)類(lèi)型,它是一種可以指向基本數(shù)據(jù)類(lèi)型,、復(fù)雜數(shù)據(jù)類(lèi)型或者用戶(hù)自定義類(lèi)型的引用,。Variant的使用限于FB/FC/OB的形參,也就是說(shuō),,只能在FB/FC/OB的參數(shù)列表中聲明某個(gè)參數(shù)的類(lèi)型為Variant,但FB的靜態(tài)參數(shù)列表除外,,也不能聲明數(shù)據(jù)塊(DB)的元素為Variant類(lèi)型; 可以給FB/FC的Variant形參賦任何類(lèi)型的變量,,調(diào)用該FB/FC時(shí),,不僅會(huì)傳遞變量的值,,而且會(huì)傳遞變量的類(lèi)型,;可以使用SCL指令TypeOf識(shí)別變量的類(lèi)型并做相應(yīng)的處理; 2,、Variant與ANY類(lèi)型的區(qū)別 有兩點(diǎn): - 兩者支持的數(shù)據(jù)類(lèi)型不同
ANY可以指向輸入緩存區(qū)(I)、輸出緩存區(qū)(Q),、外設(shè)(PI/PO),、位存儲(chǔ)區(qū)(M),、數(shù)據(jù)塊(DB)等存儲(chǔ)區(qū),,支持基本數(shù)據(jù)類(lèi)型、字符串等,;但不支持?jǐn)?shù)組、用戶(hù)自定義類(lèi)型等復(fù)雜數(shù)據(jù)類(lèi)型,; Variant可以引用幾乎所有的數(shù)據(jù)類(lèi)型(數(shù)組,、結(jié)構(gòu),、UDT)的變量,,比ANY功能強(qiáng)大; 注:S7-300/400/1500支持ANY類(lèi)型 - 占用空間大小不同
ANY需要占用10個(gè)字節(jié)的存儲(chǔ)空間,,當(dāng)把一個(gè)變量定義為ANY類(lèi)型時(shí),無(wú)論其是否指向目標(biāo)變量,,都要占用10個(gè)字節(jié)的存儲(chǔ)空間; Variant不占用背景數(shù)據(jù)塊或者工作存儲(chǔ)器的空間,。Variant只是對(duì)另一個(gè)實(shí)例(可以理解為變量)的引用,,相當(dāng)于該實(shí)例的一個(gè)別名,。在使用Variant指向該實(shí)例時(shí),該實(shí)例已經(jīng)被創(chuàng)建了,;
3,、Variant類(lèi)型使用示例 舉個(gè)例子,創(chuàng)建一個(gè)功能,,名稱(chēng)為FC_VariantDemo,參數(shù)如下: 輸入: - oprand1,,Variant類(lèi)型;
- oprand2,,Variant類(lèi)型;
輸出: - ouput1,,INT類(lèi)型;
- ouput2,,TIME類(lèi)型,;
FC功能描述: - 若oprand1和oprand2的類(lèi)型為整數(shù),,將兩者相加,并將結(jié)果輸出到output1中,;
- 若oprand1和oprand2的類(lèi)型為T(mén)IME,將兩者相加,,并將結(jié)果輸出到output2中;
參數(shù)聲明如下圖: 代碼如下: 上述代碼中的TypeOf指令用來(lái)判斷變量的類(lèi)型,VariantGet指令可以訪(fǎng)問(wèn)一個(gè)Variant引用并獲取其真實(shí)的數(shù)值及類(lèi)型,;這兩個(gè)指令及其它與Variant操作的指令我們將在下一篇文章詳細(xì)介紹。 創(chuàng)建DB_VariantDemo,,添加元素如下: 在OB1中調(diào)用FC_VariantDemo的示例如下圖所示: 好了,關(guān)于Variant類(lèi)型就先介紹這么多,。 我的新書(shū)《西門(mén)子S7-200 SMART PLC應(yīng)用技術(shù)——編程,、通信,、裝調(diào)、案例》出版了,,歡迎點(diǎn)擊下面的鏈接查看詳細(xì)介紹: 新書(shū)《西門(mén)子S7-200 SMART PLC應(yīng)用技術(shù)》出版了!
|