【JKI SMO】框架讲解(五)

        本节将带领大家创建一个完整的SMO Demo。

        1.在桌面创建一个文件夹,同时打开LabVIEW创建一个空白项目并保存。

746affc05ddb4e3586ddfde3da7ce8a3.png

        2.打开SMO Editor。

4c8aabf61776494d942c153855346e5b.png

dc94d1d0a7b24957a60227d3307ac481.png

        3. 创建两个SMO。

        一个做电压采集,不需要界面,选择SMO.Basic模板。

5a7c38bb5fd94ce2bffaa03bd0d677d6.png

         一个做电压显示和报警提示,需要用到SMO.UI.Basic模板。

ff43236c0e45485b91cc9ff57c1eebbb.png

 

         创建完成,如下图所示,

a79a39f98d34436fb263de550852e622.png

4.为Volt Acq SMO类创建事件。

        事件1:Volt Acq SMO类向外发布采集到的电压值。

a4da93803962473f82ef76a9bff5442e.png

 

2eae82c09821443895390681a8f12286.png

        事件2: Volt Acq SMO类向外发布警告状态。

 

5769747b55b143a08b5d30e450231518.png

         在Volt Acq SMO类里编写核心程序,并对事件进行发布。

        打开process.vi类核心程序,切换至 "", "Idle" 状态,修改事件结构的超时时间为100ms,即每100ms进行一次电压采集, 需要用到解除捆绑函数,获取当前SMO对自身的引用,并将电压值和警告状态进行发布。

4e7ea040d7794698a2dcb189bec3e5b4.png

        修改完成以后,可以点击Volt Acq SMO类里的Volt Acq.TestLauncher.vi类,打开高亮显示,可以查看对应的执行过程。

        5.为Signal Display类创建事件。

        Signal Display SMO是依赖Volt Acq SMO的,因此需要将后者添加到前者的私有控件(.ctl)中。

        打开Signal Display SMO里的Signal Display.ctl控件前面板,然后在项目中直接将Volt Acq类拖进data簇里即可。

8319b28976fe406cb4595e754a527d4b.png

        右击Signal Display SMO创建它的成员访问器,

486f1c66d8e54359959cc57a34e6ee07.png

        在下面弹窗里,我们可以看到类的成员,同时修改权限为读写,创建静态访问器(动态访问器支持被子类继承和读写,静态不支持),同时命名一个新文件夹保存访问器。

a0492375ac9f45d6b529162296940c8a.png

         创建完成以后,会有两个VI弹出,在项目目录里创建一个Data Accessors文件夹,同时将两个VI保存到里面。

d2783bcaa3c84fc7904aa7ba9bfbbbff.png

        将读写访问器设置为私有。

8aa1866093f0483f87fd0a979fb61525.png

8827519545a5452585445e829f32fbe9.png

        打开Signal Display SMO的process.vi类,在前面板创建一个波形图和布尔显示控件,用于显示采集的电压值和报警状态。

bbcd1f1ef5434c89bb8bd7dede3a3951.png

        打开程序框图,在JKI状态机的“EVents:Register”分支去注册Volt Acq发布的公共事件。

3337bee51c424025b124829bffc23464.png

        切换至状态机的 "", "Idle" 分支,添加两个事件。

90062d2797ab498485e17db288bd922b.png

         这样就可以看到事件里面有Volt数据,并接上波形图空间。并参考其他事件,补全代码。

c1bbd3f110b8434ebe71592dfc6406bb.png

        b4bb732fc9c94588bf94f1df86c44276.png

773c8c36e92a4d9ca6b251232377f2f5.png         到此两个SMO的程序就已经写完了,这里我们需要在项目里新建一个Launcher.vi用来启动SMO。

        6.编写启动VI。

        打开Launcher.vi,在前面板创建一个停止控件。

93e4f53527334f459572f886b0c92932.png

        切换至程序框图,在项目中将两个SMO类拖放到程序框图中,同时在下面路径找到SMO的函数。

a61392f12c444c2abd530263e69faa40.png

c04c42208dd842f98c40e716a8e49680.png

         程序实现逻辑如下:

        引用对象创建SMO,将Volt Acq SMO类的值写入Volt Acq类,然后启动SMO并显示Signal Display的前面板,最后创建一个停止事件结构用于关闭前面板、停止SMO、销毁SMO。c9bc895b3d9d4ce2a31a862e0b6306e4.png

        运行效果如下图:

 ed3b427f4f3347409b6a3f62a0eb2a6c.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值