KNX Manufacturer Tool 项目的编辑

KNX Manufacturer Tool 操作的本质是对xml文件进行编写。

一、 认识Application Programs

这个文件有两个主要部分Static和Dynamic.  

Static主要是用于定义参数和组对象的。在图中点击右建可以看到许多可添加项。在这里我们可以定义参数,参数引用,组对象,组对象引用等。

Dynamic中主要用于实现参数以及组对象的显示逻辑。它可以添加Channel作为一个大的分类,在Channel之下可以添加ParameterBlock作为一个Page,ParameterBlock可以有多个。Choose是代表有选择性的显示。例如当para=0显示Page0,para=1显示Page1。Repeat 代表多次实例化这些子元素。通常与Module一起使用。 ChannelIndependentBlock 是指不显示channel的名称,直接让Page作为第一标题。

Page中就可以指定我们要显示的参数和组对象了。

二、常用类型介绍

(1) 添加ParameterType

创建项目第一步要做的就是创建参数类型。类型创建好之后才能定义参数。相当“int i=0”中的int。

1. ParameterTypeNumber

Internal Name:就是这个类型的名称;

Size in bit:是指这个参数类型占几个bit的大小。

Type:可以选择有符号整数还是无符号整数。

MinInclusive:最小值

MaxInclusive:最大值

图中表示定义了一个1-5的整数类型,那么在使用参数的时候参数的值只能为1,2,3,4,5.

2. ParameterTypeRestriction

这个类型是用于定义枚举类型。在最初添加的时候需要指定Size in bit的大小。如果默认为8则可以枚举0-255个值。若要枚举更多值请扩大size in bit。

ParameterTypeRestriction添加好了之后,需要逐个添加枚举值。主要有两个属性Value和Text(Value对应的显示)。图中添加了aaa-0,bbb-1,ccc-2,那么在实际中会以Combobox下拉框的形式显示。选择aaa就代表设定值0。

3. ParameterTypeFloat

ParameterTypeFloat为浮点数。它有三种编码类型:DPT 9(2 byte KNX float), IEEE-754 Single(4 byte) ,IEEE-754 Double(8 byte),可根据需求选择。

DisplayFormat: 设置显示格式。DisplayFormat=0.00 保留两位小数。

Increment: 即step,设置Increment=0.01 ,点击增加按钮一次数值增加0.01。

4. ParameterTypeText

ParameterTypeText可以设置文本框可输入字符的大小。例如Size in bit =50h(80),则可以输入10个字符。

(2) 添加Parameter

1. Memory Parameter

Memory Parameter是创建带有地址的参数。

Access :可读写,只读,只写

Bit Offset:参数的最高有效位与内存中第一个八位字节的最高有效位之间的距离。如果没有特殊要求则为0。

Offset :Segment内参数的偏移量。由1开始往下2,3....排序的地址。

CodeSegment:引用此参数所在的绝对Segment或相对Segment。

Parameter Type:选择之前创建好的参数类型。

Text:参数的名称,将在ETS中显示。

此外创建参数的时候可以设定他的默认值和初始值。

Default Value:默认值

Initial Value:初始值

2.Virtual Parameter

Virtual Parameter不会拥有内存地址,下载的时候不会下载参数值,只用于显示作用。

(3) 添加ParameterRef

创建好参数之后就可以添加ParameterRef。ParameterRef的特殊之处就是多个ParameterRef可以引用同一个Parameter,但是ParameterRef可以各自设置显示的文本和默认的值。

例如:

parameter:Text="lengh", ParameterType=__dataLengthType,DefaultValue=16;

parameterRef1: Parameter=parameter;

parameterRef2: Parameter=parameter, DefaultValue=1,UniqueNumber=1,Access=Access.Read;

parameterRef3: Parameter=parameter, DefaultValue=3,UniqueNumber=2,Access=Access.Write;

其中parameterRef1保留了parameter的所有属性。

parameterRef1.ID=Id = $"{parameter.Id}_R-{parameter.Number}";

而parameterRef2和parameterRef3更改了部分属性,所以相对于parameterRef1增加了UniqueNumber用于生成对应的ID。

parameterRef2.ID=Id = $"{parameter.Id}_R-{uniqueNumber}"。

(4) 添加ComObjects

Function Text:功能提示文本,在ETS中显示。

Name:名称,不在ETS中显示,用于调试定位。

Number:组对象的地址,必填。

Object Flags:Input/output, 输入/输出类型,必填。

Object Size:发送/接受的数据大小,必填。

Text:显示名称,在ETS中显示。

(5) 添加ComObjectRef

选择创建好的ComObject,地址Number与ComObject相同(也可以不同,在Module中详细介绍),其余属性都可以更改。同ParameterRef一样,多个ComObjectRef可引用同一个ComObject。

有时候需要ComObject的Text与某个参数值相同,以达到命名的效果。这时候会增加一个属性。即

TextParameterRefId:填入所需要引用参数的ParameterRef的ID。则可以在Text中显示其他参数的值。例如Text="实际值为{{0}}",{{0}}即为填入的值。

(6) Load Procedures(System B)

如果创建Application Program文件的时候Mask Version选择的是System B 则需要设置加载进程(Load Procedures)。通常选择MergeId类型(标准加载进程,只有在应用程序中指定的变量部分)

MergeId 01h:下载程序的时候需要比较一下参数值(产品独有的)可以确定是否是对应的产品。

MergeId 02h:包含必要的段分配。

MergeId 04h:包含用于写入应用程序数据的LoadControls。

MergeId 07h:包含用于读取差异下载支持的MCB的LoadControls控件。

以上都只在Application Program中设置。还有Application Program 2。具体可以参照"KMX MT Help"。

三、设计界面

创建好Static之后就可以设计界面了。

1.Channel

首先是创建一个通道,通道有两种。一种是Channel,另外一种是ChannelIndependentBlock

Channel:具有自己的名称在ETS中显示为第一级,可以添加多个Channel。下一级为Page。

ChannelIndependentBlock:没有自己的名称,只能添加一个。ETS中第一级为Page。

2.Page

Page即ParameterBlock代表一页。在Page之下可以添加ParameterRefRef和ComObjectRefRef。用于界面显示。不能够脱离ParameterBlock去添加参数。

3.Choose

choose是有选择性的显示。可以只列出一个值,也可以设置Default,如果设置了default就必须要列出除了default之外的值,否则默认全部相同。

4.Repeat

repeat是重复显示子项。具有Count属性。count=3重复显示3次。一般用于Module的重复。

5.Table

即添加ParameterBlock的时候需要勾选Inline=true,Layout=Grid。

选择之后就可以看到Grid了。可以看到Rows和Colums。分别点击添加行和列。Columns有一个Width选项设置列宽例如Width="15%"。

设置好rows和colums之后就可以添加ParameterRefRef。ParameterRefRef需要另外设置cell属性。cell="1,1"代表第一行第一列。只要是需要添加在Grid里面的参数都需要设置cell属性。

6. ParameterSeparator

ParameterSeparator:只显示文本。Text="-----------"设置分界线。

7.Assign

assign具有两种使用方法(都与Choose一起使用)

第一种:

TargetParamRefRef=“NowParameterRef.ID”,SourceParamRefRef=“AfterParameterRef.ID”

代表目前是NowParameterRef显示,当达到条件的时候变为AfterParameterRef。

第二种:

TargetParamRefRef=“NowParameterRef.ID” ,Value="10"

代表目前是NowParameterRef显示且显示的值不为10,当达到条件的时候Value=10。

四、ModuleDefs

ModuleDefs与Static和Dynamic同级。

1. ModuleDef的创建

在ModuleDefs中可添加多个ModuleDef。ModuleDef中有Staic和Dynamic和Arguments。相当于一个函数。Arguments用于接收参数。如fun(int a,int b, intc)。Static和Dynamic的添加方式与上述相同。

Arguments如下:

Allocates:代表step。例如第一次实例化Module的 ParamsOffSetBase=0x11h, 第二次实例化Module的 ParamsOffSetBase=0x22h。

Arguments:

ParameterRefs

ComObjects

ComObjectRefs :Number=ComObjectNumber+BaseNumber

注:Module里面的Parameter和ComObject只能在Module中使用。ParameterRef和ComObjectRef也只能使用Module里面的Parameter和ComObject。

2. ModuleDef的实例化

在实例化之前我们需要在Application Program->Static里面添加Allocators。

设置对应的Allocator:Start开始值,Maxlnclusive最大值

 实例化:在Properties中将Arguement与Allocator对应就会自动逐个生成parameter和Object的地址。

通常 Module适用于地址复用的情况。

到此整篇文章就结束了。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值