>编写程序将位字符串(Byte、Word、DWord、LWord)中的位的值转移到位数组中。例如#byte=2#0101_0101转移到位数组中得到#arrayBools[]={1, 0, 1, 0, 1, 0, 1, 0}。
使用向右移位指令把位字符串中的每一位都移动到0位,然后利用片段访问的方式将0位的值循环传递到位数组中。
创建功能块FC,命名为“BitStrToBitArray”。
具体接口变量定义见下图: 定义了变量#bitStrIn,数据类型为Variant,用来接收不同数据类型的位字符串。定义了可变长(泛型或可变限值)布尔类型一维数组,数据类型为#Array of Bool,用来存储位字符串中的每个位的值。
编写程序代码。如下图:
本例数据类型只支持位字符串,使用了指令“TypeOf()”获取输入的位字符串的具体数据类型,对于不满足要求的数据类型直接返回,注意程序中的处理方式。注意片段访问对变量的区域进行寻址方式。
在循环OB中调用FC-“BitStrToBitArray”。如下图: 定义了全局数据块GdbBitStrToBitArrayData作为实参传递给形参。转至在线并监控程序。如下图:
给定Word类型位字符串,值为16#0F0F,转移到位数组后得到#arrayBolls[]={1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}。
学习数据类型Variant的使用; 学习指令TypeOf(),返回值为type_id; 学习可变长一维数组的定义和使用; 学习使用多分支选择CASE语句; 学习使用FOR循环语句; 学习通过片断访问对变量区域进行寻址; 学习RETURN指令在程序中的作用; 学习在OB中调用FC和实参的传递方式。 |