在工业应用中有很多单片机组网的应用,无论是485网络、CAN网络还是其他什么网络,都会涉及到节点地址的设置问题,下面就来探讨几种地址的设置方式:
- 硬件设置
在单片机电路板上,加一个拨码开关,以二进制的开关状态表示地址值,拨码开关由单片机的I/O去检测,单片机可以在每次上电去检测一下拨码开关的状态,设置本节点的地址,也可已定期比如500mS去查询一次开关的状态,动态设置本节点地址,建议采用上电检测的方法,因为该方法简单实用,可以在检测后初始化与地址相关的一些资源,如果采用动态检测的方法,不但占用系统资源而且与地址相关的资源每次都要重新初始化一遍,这样显得很麻烦而且不利于系统设计。
- 软件设置
采用纯软件的方法,在节点出厂的时候,预置节点的初始地址,将节点挂到网上之后,由上位机通过网络通讯命令对该节点的地址进行设置,然后节点将地址信息存储在非易失性存储器,每次系统重新启动,程序都要去读取存储其中的地址信息。该方式要求节点带有非易失性存储器可供读写,且在网络中同时只能有一个节点地址为初始地址,否则会引起网络访问混乱甚至网络崩溃。
- 软硬件结合设置
- 多位拨码开关+软件设置
既可以通过拨码开关设置地址,又可以通过软件设置,问题两种设置方法到底听谁的,解决方法是,当拨码开关置为规定的状态(比如全0)时,可以由软件来更改节点地址,节点在每次上电时去检测拨码开关状态,如果是该状态,就去非易失性存储器中查找软件更改过的节点地址信息,以之为节点地址,如果上电后检测到其他状态则以相应状态所表示的地址码为该节点的地址。
- 一位拨动开关+软件设置
该方式实际上是属于软件的地址设置方式,加的一位拨动开关用来将节点地址切换回初始值,避免了上位机丢失了已经设置过的该节点地址而找不到该节点的现象,而且该位开关起到一个恢复默认(出厂)设置的作用,与软件配合可以使节点地址、波特率、默认的配置全部都恢复为预定义的值,好处自去体会。
对于波特率的设置方式基本上与节点地址差不多,但是要注意,波特率改变是所有节点整个网络的事情,要比地址的设置有考虑更多。
几种方式各有优缺点,具体应用哪种方式应该依系统设计要求和资源综合考虑而定。
(2007.1.30)