结合“事件结构”和“属性节点”就可以完成,如下:
前面板
注意,这里数组2属性节点的创建方法如下:
必须要是“值(信号)”,单单创建“值”属性是不行的。因为labview不会捕捉由程序产生的“值改变”事件。“值(信号)”属性节点是只读的,对它的写 *** 作和在前面板手动修改的结果是一样的。值得注意的是,只要是对其进行了写 *** 作,那么就会触发值改变事件。
上面这个例子中,左边的循环中不断的给“数值2”赋值,会触发右边的事件结构。每当数值2的值改变时,就会将新值赋给数值3.注意,就算每次给数值2赋一个相同的常量,也会触发事件结构。
labview中除非使用了顺序结构,否则程序本来默认就是并行运行的。
最简单的方法是每隔一小段时间就对每个串口挨着进行一遍轮询,见下面的示意框图。注意在“VISA写入”到“VISA读取”之间需要加一定的延时,以让询问的指令有时间得到执行和反馈
也可以用VISA事件来形成串口中断,在事件结构中去写获取串口反馈的代码。参考Labview帮助:关于使用“VISA启用事件函数”的范例Detect Serial Break Event VI(labview\examples\Instrument IO\Serial)
胶带的宽度一定的话:
四个传感器一字排列的情况最简单:
按1234号传感器命名,照在胶带上状态位为A,否则为a.
直线正常行走时,23号持续为A,14号持续为a.
分析开始右转的逻辑:
2号变a,继续直线行走,直到4号变A,根据24号间的距离和小车在这段时间内行驶的距离计算出转动角度(这就是动态平面几何问题了,自己画图解一下,注意转弯时候前后中心点的轨迹,胶带宽度是关键,得到的角度不会也不必太精确。这里我只讨论逻辑),然后以比计算结果稍大(目的是确保能让2恢复状态A)的转动角度开始转弯,等到2和3都恢复状态A,小车变回直线行走,等到2号重新变a,小车再恢复到原先的转动角度……后面一直循环就行了
直线上如果车子前进方向倾斜,和转弯一样,下面以车子向右倾斜为例分析:
会出现3号变a的情况,继续保持直线行走,直到1号变A,计算出小车在这个过程中行进距离,结合胶带宽度,1和3号间的距离,就可以算出偏离的角度然后决定转动角度。后面具体调整和过弯道一样。
然后我来吐槽为什么要用labview,你是想着拿着笔记本进行无线 *** 控么 - -,嵌入式的labview编程现在还不成熟好吧~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)