发表于:2005-09-30 10:35:00
2楼
吴老师:我把内容贴出来======
2. LonWorks控制模块的设计:
ECHELON公司推出的FTT控制模块(Model 55020-10),以其体积小、安装简便、易于标准化、模块化,已成为LonWorks 现场总线控制模块的主流产品。许多第三方开发商大量购买这种OEM模块,作为其系统集成的主要控制单元。在应用过程中发现这个模块无外部扩展内存(RAM),在开发Neuron芯片时用的是Neuron C语言,内存占用大,作为通信协处理器使用要求有大量的数据缓冲区进行数据交换,而仅仅利用3150内部的2K RAM容量是远远不够的(运行时系统还要占掉800多个字节)。在这种条件下,我们自己设计了一块3150控制模块,与55020-10模块完全兼容,在这基础上增加了24K的外部RAM,这样可以增加3150发送和接收缓冲区的数量,使得控制模块的功能大大增强。采用这种方法,圆满地解决了3150通信协处理器的数据通信和交换的功能。
55020-10模块有5个空脚未用,由于Neuron芯片只有11个IO脚,实际使用时IO太少,我们利用扩展地址IO的方法扩展了5个输出的IO,开发给用户使用。
在模块的设计中,我们根据研制船用控制产品的经验,为确保高可靠性,控制模块采用6层板的PCB设计,电源层和地层分开,而国内外公司的产品大都采用2-4层的电路板设计,相比之下可大大减少电磁干扰(EMI)。另外在模块中增加了SERVICE指示灯和SERVICE按钮,便于用户操作和使用。
严格按照LonMark互通协会的设计要求进行设计与布线。全部选用高质量低功耗的贴片元器件。FTT-10A的PCB布线一定要根据ECHELON公司的《FTT-10A使用手册》中的布线要求进行布线。
3. EEBLANK:
常常有用户将控制模块寄回维修,说这个模块不能下载,如果遇到节点不能下载程序,怀疑有模块故障的情况,可以用下面方法解决:在NODEBUILD开发系统中,LonWorks目录下有个EEBLANK.NRI,用该程序烧入EPROM,插入节点中运行后,3150就会设成出厂状态。节点故障就会排除。为什么会这样呢?因为3150片内有512字节的EEPROM,该区域主要存放系统重要的数据,如通信参数,如果由于电源或其他外干扰冲掉了该区域,就会造成模块不工作,EEBLANK的作用就是将3150设置成出厂状态。
4. 终端电阻
通常用户不注意增加终端电阻,如果不加终端电阻,有可能造成通信故障,例如,调试时用1米长的下载电缆,如果不加终端电阻,下载程序是就容易出错。终端电阻有自由拓扑和总线2种类型,具体参数见ECHELON公司的《FTT-10A使用手册》,电阻值必须严格按手册上的要求选用。
5. 通信线长度
ECHELON公司的《FTT-10A使用手册》说的总线通信距离最长可以到2700M,但要注意这是在ECHELON公司推荐的通信电缆下测试的,但ECHELON公司推荐的通信电缆价格很高,国内较少人采用,所以就要注意通信距离。有个例子,一客户在楼宇控制中选用LonWorks,用了5类双绞线布了超过3000M的线,实际使用时前后模块能够通信,但和中间模块就无法通信,最后没办法,只好在每隔900M处增加一台路由器才解决通信问题。
6. 电源问题
我们遇到很多模块故障很多都是由电源引起的,选用电源时,不要为了降低成本而选用差的电源,质量差的电源容易引起节点变成无应用、离线等状况,造成节点不运行或运行不可靠。
7. 模块的加工工艺:
FTT-10A是DIP封装,焊接后预留管脚很长,必须减短,避免管脚压弯造成短路。模块中要用到PLCC32贴片座,因为PLCC32的管脚是向内贴片,焊接时容易造成虚焊,应特别关注。
8. 电容22U/50V
FTT-10A输出端接了2个电解电容,ECHELON公司的《FTT-10A使用手册》推荐使用22U/50V,这主要是隔离直流作用,在安装接线时,容易接入高压,建议用户将电解电容的耐压值提高到100V以上,起到更好的保护。
9. DS1233保护
为保护在芯片上的EEPROM,使得当VDD低于工作电压时不至逻辑混乱,我们采用低电压指示(LVI)芯片保护EEPROM。选用了DS1233贴片设计,在电源电压5V±5%时DS1233强制给出一个复位信号。
10. NODEUTILITY:
这是ECHELON公司出品的LonWorks 节点调试程序,可以查看、修改节点的内存、网络变量、运行状态。对于LonWorks开发人员来说,这个工具是必备的,我们强力推荐,在http://www.loncontrol.com/下有下载。
11. 模板配置
模板配置的配置见附图,这些开关的选项对节点的运行非常重要,选择不对有可能造成节点的故障。下面有个例子。
用户返回一批故障模块,故障模块分析看,是3150CPU内部的EEPROM损坏,这种故障是无法修复的永久性故障,只能更换3150CPU进行修复。判断EEPROM损坏的步骤如下:
11.1 用EEBLANK程序运行,SERVICE灯闪烁后熄灭,为此故障。
11.2 将网关程序装上后在NODEUTILITY监控下,按SERVICE按键,G命令进入该节点,键入MSA,将该节点改为无应用状态,用W命令将数据写入F048到F04A地址中,看看是否写的进数据,如果写不进,说明该地址的EEPROM损坏。
原因:因为用户程序每次上电或复位都要进行自安装工作,而F048到F04A的地址正是自安装要操作的3个地址,在程序编译时,编译模板见下图,编译开关Reboot Configuration中的Always 是打钩的,这个编译开关选中后,固件在上电或复位时自动将缺省的节点地址写入F048到F04A中,网关程序在自安装过程中,发现该地址不是自安装所要的地址,就又将F048到F04A重新写一遍。这样重复写F048到F04A,每次上电或复位都要写2次,根据摩托罗拉和东芝的3150芯片手册,EEPROM的写入次数是10000次,超过写入次数就会造成3150CPU内部EEPROM损坏,。所以,今后在编译程序时编译开关Reboot Configuration中的Always 是不能打钩的,
12. 未公开的资料
在开发过程中经常碰到一些难题不能解决,这时可以借助一些没有公开的函数。
12.1 程序转成非配置状态时正常情况下应用程序是不运行的,如果要它运行,可加入下列语句:
#pragma run_unconfigured
12.2 大家知道有个函数是:go_unconfigured(),就是将应用程序转为非配置状态,但如果要将应用程序转为配置状态,就没有相应的函数了,下面的程序就可以将应用程序转为配置状态:
extern system void _change_state(int state);
#include <nm_ste.h>
_change_state (CNFG_ONLINE);
12.3 Neuron C对11个IO脚的操作有相应的函数,但运行时间较慢,为加快运行速度,可直接对IO口对应的映像地址进行读写,见下表:
Address Register Name Access type Function
0xFFA0 Input data high Read only Data for IO.8-IO.10 and other stuff
0xFFA1 Input data low Read only Data for IO.0 to IO.7
0xFFA3 Level detect Read only Detect low level on IO.0-IO.7
Address Register Name Access type Function
0xFFA0 Output data high Write only Data for IO.8-IO.10 and other stuff
0xFFA1 Output data low Write only Data for IO.0-IO.7
0xFFA2 I/O direction high Write only Enable output buffers on IO.8-IO.10
0xFFA3 I/O direction low Write only Enable output buffers on IO.0-IO.7
12.3 由于ECHELON公司对于3150的指令系统没有公开,对于CPU的内部运作过程用户缺乏了解,这对于用户深入探讨LonWorks运行机理造成很大困难,希望能够得到ECHELON公司的帮助。