最近很多小伙伴反馈说,他的ETS在执行部分下载的时候老是出问题,下了这个设备,那个设备状态显示未下载,或者是下了这个设备,然后点击下那个设备的时候,竟然提示要重新按编程按钮!这个物理地址都已经写过了呀!为什么呢?在这里为大家说道说道。
既然下载出了问题,我们先看一个产品的下载方式:
几种下载方式
Full download:执行完整下载,也就是先让你点亮编程按钮,然后再下载应用程序,如果不按编程按钮则持续等待。
Download Individual address:让你点亮编程灯,仅下载设备的物理地址,如果不按编程按钮则持续等待。
OverwriteIndividualAddress:复写物理地址,这个时候你要输入已存在的设备的物理地址,ETS会改写成你选择的设备的物理地址。
DownloadApplication:直接下载设备应用,如果该设备不存在,则退出。
Partialdownload:这个是非常强大的,这个是根据这个设备的当前状态,来决定到底下载啥东西,接下来我们会重点介绍,啥是部分下载。
那么怎么看到一个设备到底是啥状态呢?各位客官请看:
如果一个设备导入工程中没有进行任何配置,那么这个设备每个状态都是-。
Adr:已经配置过设备的物理地址就√,改变设备地址状态是-。
Prg:已经被配置过应用程序就√,仅配置物理地址是不会√。
Par:已经被配置过参数就√,如果参数发生了改变状态是-。
Grp:已经被配置过组地址就√,如果组地址发生了改变状态是-。
cfg:已经被配置过就√,包括配置了应用程序或配置了设备物理地址。
好了介绍完这个状态,这个部分下载就好理解了,也就是ETS会自动判断你需要下载的内容,然后进行下载,以达到节省配置时间的目的,同时用户可以批量修改,批量下载,其余的事情交给ETS,好不方便!设备地址改变就重下地址,参数修改就只下参数等等。。。
上面咱们通过部分下载的解释,知道ETS的智能处理之处,那状态莫名其妙发生改变是咋回事?这里大家思考下:ETS怎么知道那个设备是啥状态?也就是说ETS怎么跟这个设备关联的?好了,我们今天的主角隆重登场:KNX设备唯一序列号!
它是一个长度为6字节的序列号,前两个字节是厂商ID,各位小伙伴可以自行查阅。后面的4个字节是每个设备的唯一编码,规则可以各厂家自定义,理论上世界上不应该有两个序列号一样的产品,所以这个序列号对于ETS就十分重要了。
这个时候可能就有小伙伴问了:如果两个设备的序列号一样怎么办?这里我先给大家演示一下,我们先下载1.1.10(地址+应用),他的状态如下:
接下来我们,在对同一个设备(同一序列号)对1.1.12进行完整下载,结果神奇的事情发生了:
1.1.10的状态全部被清除了,这个时候如果你点击1.1.10进行部分下载,ETS会让你按编程按钮进行物理地址的下载。。。
通过上面的测试,得到这个结论:如果序列号一样,你设备地址没变,已经被下载的状态会被改写!如果你此时对之前的设备执行部分下载,则让你重新编程地址,因为对于ETS来说,跟配置绑定的是序列号,而不是设备的地址,ETS设置完这个设备的状态后,会清除这个工程中其他具有相同序列号设备的状态。
接下来咱们就再说道说道:为什么序列号会一样的呢?话说这个确实是开发过程中容易忽视的一点,以前的ETS不是通过序列号来识别,所以我们在做产品的时候没有写入产品的唯一序列号,都采用一样的序列号。对于GVS来说也是从15年后才对标准产品的序列号唯一化,至于很多国内厂家,他们的序列号也大都是一样,于是就出现了上面的情况了。当然这里也说下,貌似是ETS5.6.6之后才用序列号做产品的配置状态识别。
序列号不只是用于ETS和设备的对应关系,还用于KNX安全中的加密,前一阵子把玩了一下KNX安全的设备,在添加设备的时候,需要添加这个设备的FDSK,这个FDSK就是包含了一个设备配置密钥以及序列号,这样可以根据不同的序列号使用不同密钥来配置设备的目的,所以不管是现在还是未来序列号对于KNX产品非常重要。????
(——本文由视声金牌KNX导师-任继光老师撰写)