为什么要用JKI SMO?

1、习惯了使用JKI State Machine;

2、JKI State Machine 是单进程的,无法处理多任务并发系统;

3、对OOP知之甚少,绕过OOP设计的复杂性。

安装工具包

JKI SMO使用(1)-风君雪科技博客

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模板

JKI SMO使用(1)-风君雪科技博客

JKI SMO使用(1)-风君雪科技博客

JKI SMO使用(1)-风君雪科技博客

JKI SMO使用(1)-风君雪科技博客

 JKI SMO使用(1)-风君雪科技博客

4、分别给SMO创建事件

(1)Volt Acquisition SMO 创建2个事件,

发布采集的电压值+是否警告的状态

a. 事件1:Volt

JKI SMO使用(1)-风君雪科技博客

事件2:Warning Status

JKI SMO使用(1)-风君雪科技博客

b. 在核心process.vi中编写核心程序,并进行发布。

虽然创建了2个事件,但是是一个核心

JKI SMO使用(1)-风君雪科技博客

超时设成100ms,通过随机数模拟每100ms进行一次电压采集,并判断是否报警,并发布电压值和报警状态。

JKI SMO使用(1)-风君雪科技博客

(2)Signal Display  SMO 创建事件

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

JKI SMO使用(1)-风君雪科技博客

 b. 右键Signal Display SMO菜单创建成员访问器Volt Acquisition(需先建个虚拟文件夹,把成员访问器放里面)

(Signal Display SMO是依赖Volt Acquisition.lvclass的,是要去访问他的,因为他才提供了电压值和判断结果)

JKI SMO使用(1)-风君雪科技博客

JKI SMO使用(1)-风君雪科技博客

创建完是这样:

JKI SMO使用(1)-风君雪科技博客

c. 在核心process.vi中编写核心程序

 打开Process.vi,Events:Register分支,去注册Volt Acquisition发布的Public Event,

JKI SMO使用(1)-风君雪科技博客

(3)添加两个事件分支User Event

JKI SMO使用(1)-风君雪科技博客

JKI SMO使用(1)-风君雪科技博客

以上,完成了2个SMO的程式。

在项目中新建Launcher.vi用来启动并测试:

 JKI SMO使用(1)-风君雪科技博客

 JKI SMO使用(1)-风君雪科技博客

JKI SMO使用(1)-风君雪科技博客