为什么要用JKI SMO?
1、习惯了使用JKI State Machine;
2、JKI State Machine 是单进程的,无法处理多任务并发系统;
3、对OOP知之甚少,绕过OOP设计的复杂性。
安装工具包
Demo演示:
需求:采集电压并显示,超过3.5V时,报警提示。
分析:需要2个SMO,1个负责不断采集电压信号;1个负责显示和报警
实现步骤:
1、新建项目,命名SMO Demo.lvproj
2、打开SMO Ediror(脚本工具,和提供开发模板,便于开发),Tools JKI state Machine Objects SMO Editor
3、创建SMO:
创建2个SMO: 电压采集的SMO,不需要界面,创建时选择SMO.Basic模板;显示和报警的SMO,需要界面,选择SMO.UI.Basic模板
4、分别给SMO创建事件
(1)Volt Acquisition SMO 创建2个事件,
发布采集的电压值+是否警告的状态
a. 事件1:Volt
事件2:Warning Status
b. 在核心process.vi中编写核心程序,并进行发布。
虽然创建了2个事件,但是是一个核心
超时设成100ms,通过随机数模拟每100ms进行一次电压采集,并判断是否报警,并发布电压值和报警状态。
(2)Signal Display SMO 创建事件
a. 显然 Signal Display SMO 是要依赖Volt Acquisition SMO,因此,需要将后者添加到前者的私有数据控件(.ctl)中。
b. 右键Signal Display SMO菜单创建成员访问器Volt Acquisition(需先建个虚拟文件夹,把成员访问器放里面)
(Signal Display SMO是依赖Volt Acquisition.lvclass的,是要去访问他的,因为他才提供了电压值和判断结果)
创建完是这样:
c. 在核心process.vi中编写核心程序
打开Process.vi,Events:Register分支,去注册Volt Acquisition发布的Public Event,
(3)添加两个事件分支User Event
以上,完成了2个SMO的程式。
在项目中新建Launcher.vi用来启动并测试: