国产aaaa级全身裸体精油片_337p人体粉嫩久久久红粉影视_一区中文字幕在线观看_国产亚洲精品一区二区_欧美裸体男粗大1609_午夜亚洲激情电影av_黄色小说入口_日本精品久久久久中文字幕_少妇思春三a级_亚洲视频自拍偷拍

首頁 > 化工知識(shí) > 西門子SCL編程入門教程連載(12)-數(shù)組及其指令

西門子SCL編程入門教程連載(12)-數(shù)組及其指令

時(shí)間:2020-09-28 來源:方正智芯 瀏覽:

今天這篇文章我們來介紹下數(shù)組及數(shù)組的操作指令。

數(shù)組,英文名稱"array",是具有數(shù)目確定的、數(shù)據(jù)類型相同的變量集合。

數(shù)組中的變量稱為“元素”,元素的序號(hào)稱為“索引”。
數(shù)組具有如下一些特點(diǎn):
1、數(shù)組中的元素具有相同的數(shù)據(jù)類型;
2、數(shù)組中的元素個(gè)數(shù)是確定的,各元素可以索引的方式進(jìn)行訪問;
3、數(shù)組的定義要標(biāo)明其下限及上限,下限必須小于或等于上限;
4、數(shù)組可以定義成多維。SCL最多支持6維數(shù)組,但要注意,隨著維數(shù)的增加,數(shù)組占用的空間將成倍增加;

數(shù)組的聲明

可以在FB/FC的變量聲明區(qū)聲明數(shù)組。數(shù)組也要有一個(gè)名稱,其命名規(guī)則與普通變量相同,其數(shù)據(jù)類型要按照如下格式聲明:
Array [lo..hi] of type
其中:
1、Array表示要將該變量聲明為數(shù)組;
2、方括號(hào)中是數(shù)組的下限和上限("lo"表示下限,"hi"表示上限);
3、"of type" 用來表示數(shù)組變量的數(shù)據(jù)類型。支持布爾型、字節(jié)型、整型、字、雙字、雙整型等所有該CPU支持的數(shù)據(jù)類型;
舉個(gè)例子:要聲明一個(gè)100個(gè)字節(jié)的數(shù)據(jù)接收緩存區(qū),可以用如下的格式聲明:

與數(shù)組相關(guān)的幾個(gè)指令介紹如下:

1、MOVE_BLK

MOVE_BLK指令用來從一個(gè)存儲(chǔ)區(qū)地址拷貝一定數(shù)量的數(shù)據(jù)到另一個(gè)存儲(chǔ)區(qū),拷貝的數(shù)據(jù)必須是相同的數(shù)據(jù)類型。
可以在【基本指令(Basic instruction)】-【移動(dòng)操作(move operations)】中添加該指令,其初始添加狀態(tài)如下:

該指令有三個(gè)參數(shù),其含義如下:
1)IN:源數(shù)據(jù)中第一個(gè)元素;
2)COUNT:要拷貝的數(shù)據(jù)的個(gè)數(shù);
3)OUT:目標(biāo)數(shù)據(jù)中的第一個(gè)元素;
例如下面的代碼將臨時(shí)接收數(shù)據(jù)緩存區(qū)tmpDataRcv中的100個(gè)字節(jié)的數(shù)據(jù)拷貝到實(shí)際接收存儲(chǔ)區(qū)DataRcv:

2、MOVE_BLK_VARIANT

MOVE_BLK_VARIANT指令可以從源數(shù)組拷貝特定個(gè)數(shù)的元素到目標(biāo)數(shù)組,可以指定源數(shù)組的索引,目標(biāo)數(shù)組的索引及要拷貝的元素的個(gè)數(shù)。
與MOVE_BLK指令相比,MOVE_BLK_VARIANT指令提供更多的靈活性。它可以將一個(gè)數(shù)組中的全部或部分元素拷貝到另一個(gè)數(shù)組的指定位置,即使這兩個(gè)數(shù)組中的元素個(gè)數(shù)并不相同。
MOVE_BLK_VARIANT有五個(gè)參數(shù):
1)SRC:源數(shù)組,或者指向源數(shù)組的VARIANT指針;
2)COUNT:要拷貝的元素的個(gè)數(shù);
3)SRC_INDEX:源數(shù)組中要拷貝地址的起始索引;
4)DEST_INDEX:目標(biāo)數(shù)組中拷貝地址的起始索引;
5)DEST:目標(biāo)數(shù)組,或指向目標(biāo)數(shù)組的VARIANT指針;
MOVE_BLK_VARIANT執(zhí)行成功后會(huì)返回0。如果失敗,則會(huì)返回一個(gè)錯(cuò)誤代碼,可以通過手冊(cè)查看失敗的原因。
舉個(gè)例子:
假設(shè)我們要將數(shù)組tmpDataRcv中從索引0開始的10個(gè)數(shù)據(jù)拷貝到數(shù)組DataRcv中索引9開始的地址,則代碼如下:

3、UMOVE_BLK

UMOVE_BLK指令與MOVE_BLK的參數(shù)及用法都相同。唯一不同的地方是:UMOVE_BLK指令的執(zhí)行過程不會(huì)被中斷,這使它很適合用于一些重要的、不希望被中斷的數(shù)據(jù)拷貝。

UMOVE_BLK指令名稱中的U表示" Uninterruptible",即不能中斷的意思。
例如下面的代碼使用UMOVE_BLK指令將數(shù)組DataRcv中的100個(gè)元素拷貝到DB100(符號(hào)名:Data_G)的Rcv數(shù)組,整個(gè)拷貝過程不允許中斷:

4、FILL_BLK

FILL_BLK指令用指定的數(shù)據(jù)來填充存儲(chǔ)區(qū)中的某段區(qū)域(數(shù)組)。
指令的初始狀態(tài)如下:

FILL_BLK指令有三個(gè)參數(shù):
1)IN:用來填充的數(shù)據(jù),可以是整數(shù)、實(shí)數(shù)、字符、日期時(shí)間等數(shù)據(jù)類型;
2)COUNT:要填充的數(shù)據(jù)個(gè)數(shù),可以是USINT、UINT或者UDINT類型;
3)OUT:要填充的目標(biāo)地址(數(shù)組);
舉個(gè)例子:
假設(shè)要將數(shù)組tmpDataTest[0..19]從索引9開始的10個(gè)字節(jié)填充為16#FF,則代碼如下:

5、UFILL_BLK

UFILL_BLK指令與FILL_BLK的功能及用法相同。名稱中的U表示"Uninterruptible",它也是執(zhí)行過程不能被中斷的指令,不再贅述。

好了,關(guān)于西門子SCL語言中數(shù)組及其相關(guān)的指令就先介紹到這里。

版權(quán):如無特殊注明,文章轉(zhuǎn)載自網(wǎng)絡(luò),侵權(quán)請(qǐng)聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習(xí)使用,務(wù)必24小時(shí)內(nèi)刪除。
相關(guān)推薦