Labview学习笔记-条件结构的两个问题
数组:“创建数组控件“用于连接数组 输入端:数组+元素 或数组+数组 右键创建数组控件 在连接数组项上打钩或取消,改变连接的数组维度
簇:就是C语言中的结构体 簇和数组的转换 必须保证各元素数据类型一致
条件结构:
labview中真假分支都必须给隧道赋值 输入隧道在每一个分支中都可,输出隧道必须从每一个分支都得到明确的输入值,否则程序无法运行。 输出隧道是实心的,才表示所有分支都有接入值(接入值也可以通过打钩未连线时使用默认。)
这样就带来了问题1::由于隧道的存在,任何分支都必须对已有隧道进行赋值操作,而无法像C语言中可以忽略一个分支 或在某一分支进行空操作
例如C语言中:
if(a<=0.1) b=1;
else c=1;
这样一个简单的例子。C语言中允许在某分支中不进行操作即空操作。但是labview中不行,若是在a<=0.1的真分支里给b赋值为1,在假分支里也必须给b赋值,如果像程序中那样在假分支里只改变c的值而不对b进行处理,是不可以的,如果任何一个分支里不给b赋值,程序都会报错,提示隧道未赋值。即使你选择未连线时使用默认,也会给b赋值为0。总问言
之任何已有隧道在任一分支里都要被赋值!
问题2::当多个分支嵌套时,由于每个分支的各个子分支在框图里时叠合在一起的,因此想要清晰明了的读出所有分支的走向就比较困难。
这样一个三分支的程序,由于真假分支重叠,因此要一目了然比较困难。
解决办法:利用函数控件比较中的判定范围并强制转换可以将各个分支简洁的列出,再将各个分支的结果放到一个布尔数组里,再利用函数空间布尔控件中的布尔数组至数值转换将布尔数组转换为对应的数值,比如三个分支中当第三个分支成立而前两个不成立时,布尔数组为100(第一个分支再最低位),那么转换为数值就为4,也就是这种情况下对应的结果是4,同理还可能会出现010=2,001=1,000=0共四种情况,这时候再创建一个条件结构,以0,1,2,4不同的数值为判定条件,即可将各分支理清,增强易读性。
例如C程序:
if(a<=0.1) b=1;
else if(a>0.1 && a<0.2) b=2;
else if(a>=0.2 && a<0.3) c=1;
else ;
判定范围并强制转换:这个控件有上限,下线,X,三个输入接线端。右侧有两个接线端,右下角?标志接线端表示x是否在上下限范围内,我们以此控件来轻松表示一个分支。
将各个分支表示完毕后,再将各个分支的判断结果以布尔类型存放在一个布尔数组中,再把布尔数组转换为数值
最后以不同分支结果对应不同数值为依据,创建条件结构
这种方法,无论对于易读性还是修改都更方便。