位序列的組合與分解
位序列的組合與分解(LAD和SCL)包括如圖1所示4個(gè)指令:
圖1 指令位置
其中SCATTER(_BLK)是將位序列(數(shù)組)分解成若干Bool變量,GATHER(_BLK)是將若干Bool變量組合成位序列(數(shù)組)。
版本:
1. TIA 博途 V14SP1開(kāi)始,S7-1200 V4.2支持V1.0版本
2. TIA 博途 V15開(kāi)始,S7-1200 V4.2支持V1.1版本
SCATTER
圖2 SCATTER指令詳情
V1.0版本:SCATTER指令是將位序列(Byte、Word、DWord)分解成Bool數(shù)組,其中Byte分解成8Bool元素的數(shù)組,Word分解成16Bool元素的數(shù)組,DWord分解成32Bool元素的數(shù)組。LAD需要在下拉框“???”選擇輸入類型(Byte、Word、DWord),SCL無(wú)需選擇。IN是待分解的位序列變量,OUT是Bool數(shù)組名,元素?cái)?shù)量必須正好符合要求。
V1.1版本:OUT除Bool數(shù)組之外,可以是Struct、UDT類型的變量,變量?jī)?nèi)是連續(xù)的8Bool、16Bool、32Bool,OUT處填寫(xiě)Struct、UDT類型的變量名。
注:LAD版本的SCATTER,如果調(diào)用該塊的OBFBFC如果沒(méi)有激活I(lǐng)EC檢查,IN變量支持整數(shù)、字符、TIME、DATE、TOD類型。
使用舉例,如圖3-5所示:
1. 將Word變量"DB66".Static_1分解成Array[0..15] of Bool變量"DB66".Static_2,將Byte變量"DB66".Static_3分解成UDT中的連續(xù)8個(gè)Bool變量Tag_3
圖3 DB66的定義
圖4 Q點(diǎn)在PLC變量表的定義
圖5 程序詳情
SCATTER_BLK
圖6 SCATTER_BLK指令詳情
V1.0版本:SCATTER_BLK指令是將位序列(Byte、Word、DWord)數(shù)組分解成Bool數(shù)組。LAD需要在下拉框選擇輸入數(shù)組IN的類型(Byte、Word、DWord),COUNT_IN的類型(USInt、UInt、UDInt),SCL無(wú)需選擇。IN是待分解的位序列數(shù)組起始元素,COUNT_IN是待分解的位序列數(shù)組元素個(gè)數(shù),OUT是接收的Bool數(shù)組起始元素。
V1.1版本:OUT除Bool數(shù)組之外,可以是Struct、UDT類型的變量,變量?jī)?nèi)是連續(xù)的Bool變量,OUT處填寫(xiě)Struct、UDT類型內(nèi)的接收的Bool起始變量。
注意:
1. 當(dāng)COUNT_IN超過(guò)了位序列數(shù)組元素個(gè)數(shù),將不執(zhí)行指令。如果激活指令的ENO功能,則ENO=False。
2. 當(dāng)所需的Boo數(shù)量超過(guò)了已有的Bool數(shù)量,指令正常執(zhí)行,多余部分被舍棄。
3. 當(dāng)Bool數(shù)組起始
使用舉例,如圖7-8所示:
1. 將"DB67".Static_1,從第3個(gè)元素開(kāi)始的2個(gè)Byte變量分解成"DB67".Static_2,從第1個(gè)元素開(kāi)始
2. 將"DB67".Static_3,從第1個(gè)元素開(kāi)始的2個(gè)Byte變量變量分解成"DB67".Static_4,從這個(gè)Struct第一個(gè)變量開(kāi)始
圖7 DB67中的定義
圖8 程序詳情
GATHER
圖9 GATHER指令詳情
V1.0版本:GATHER指令是將Bool數(shù)組合并成位序列(Byte、Word、DWord),其中8Bool元素的數(shù)組合并成Byte,16Bool元素的數(shù)組合并成Word,32Bool元素的數(shù)組合并成DWord。LAD需要在下拉框選擇輸出類型(Byte、Word、DWord),SCL無(wú)需選擇。IN是Bool數(shù)組名,元素?cái)?shù)量必須正好符合要求,OUT是合并后的位序列變量。
V1.1版本:IN除Bool數(shù)組之外,可以是Struct、UDT類型的變量,變量?jī)?nèi)是連續(xù)的8Bool、16Bool、32Bool,OUT處填寫(xiě)Struct、UDT類型的變量名。
使用舉例,如圖10-12所示:
1. 將Array[0..15] of Bool變量"DB68".Static_1合并成Word變量"DB68".Static_2,將UDT中的連續(xù)8個(gè)Bool變量Tag_4合并成Byte變量"DB68".Static_3
圖10 DB68中的定義
圖11 I點(diǎn)在PLC變量表的定義
圖12 程序詳情
GATHER_BLK
圖13 GATHER_BLK指令詳情
V1.0版本:GATHER_BLK指令是將Bool數(shù)組合并成位序列(Byte、Word、DWord)數(shù)組。LAD需要在下拉框選擇輸出數(shù)組OUT的類型(Byte、Word、DWord),COUNT_IN的類型(USInt、UInt、UDInt),SCL無(wú)需選擇。IN是待合并的Bool數(shù)組起始元素,COUNT_IN是合并后的位序列數(shù)組元素個(gè)數(shù),OUT是位序列數(shù)組起始元素。
V1.1版本:IN除Bool數(shù)組之外,可以是Struct、UDT類型的變量,變量?jī)?nèi)是連續(xù)的Bool變量,IN處填寫(xiě)Struct、UDT類型內(nèi)的接收的Bool起始變量。
注意:
1. 當(dāng)COUNT_IN超過(guò)了位序列數(shù)組元素個(gè)數(shù),將不執(zhí)行指令。如果激活指令的ENO功能,則ENO=False。
2. 當(dāng)所需的Boo數(shù)量超過(guò)了已有的Bool數(shù)量,將不執(zhí)行指令,如果激活指令的ENO功能,則ENO=False。
使用舉例,如圖14-15所示:
1. 將"DB69".Static_2,從第1個(gè)Bool元素開(kāi)始合并成"DB69".Static_1,從第3個(gè)元素開(kāi)始的2個(gè)Byte變量
2. 將"DB69".Static_4,從Struct第1個(gè)元素開(kāi)始合并成"DB69".Static_3,從第1個(gè)元素開(kāi)始的2個(gè)Byte變量
圖14 DB69中的定義
圖15 程序詳情
審核編輯:郭婷
-
plc
+關(guān)注
關(guān)注
5007文章
13125瀏覽量
461544
原文標(biāo)題:位序列的組合與分解
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論