kanzi绑定里有很多复杂表达式,难以看出输入值和结果的关系,因为绑定源可能路径复杂,也不易去修改调试。尝试做一个插件,简化调试。
1. 插件
1.1 设计思路
- 插件提供属性
InputBindText
,用于解析绑定内容,提取输入的属性,转为本节点属性。 - 生成新的绑定内容,用于手动绑定。
插件相关请查看使用kanzi开发仪表HMI插件
2. Kanzi Studio 3.9.8.216使用插件
kanzi 3.9.8使用vs2019 release版本插件
2.1 导入插件
2.2 创建插件节点
在测试节点同级创建插件节点
2.3 设置InputBindText
属性
把Test节点绑定内容粘到插件
敲回车后,查看log窗口
2.4 设置绑定
把log窗口的new bind text
下面的新绑定内容绑到text
上
绑定模式请查看Kanzi绑定之绑定模式与区别
2.5 手动添加属性
把把log窗口的propertyes
下面的属性名依次添加到属性上
2.6 快速调试
在插件节点下调节新属性,查看输出结果
3. 优化
- 不用手动输入属性值,而是输入值范围和值步进。
- 利用
AbstractPropertyTypeDescriptor
获取动态属性值,通过值范围和值步进,生成所有case - 利用定时器,每50ms设置一次动态属性,50ms后获取一次绑定结果
- InputBindText:需要输入绑定表达式
a={@../CarSetting.A}
b={@../CarSetting.B}
b*STEP(a,0)+12*STEP(a,1)*STEP(1,a)
- OutputBindText:需要手动绑定本地表达式
a={@./CarSetting.A}
b={@./CarSetting.B}
b*STEP(a,0)+12*STEP(a,1)*STEP(1,a)
- InputRangeText:需要输入值范围和值步进
CarSetting.A[0-1:1],CarSetting.B[0-1:1]
- ReCalc: 触发计算
CarSetting.A=0,CarSetting.B=0,result=0,
CarSetting.A=0,CarSetting.B=1,result=1,
CarSetting.A=1,CarSetting.B=0,result=12,
CarSetting.A=1,CarSetting.B=1,result=12,