发表于:2005-12-01 09:33:00
楼主
Profibus产品开发与开发包4的应用之三
海维深科技研发中心 王晟磊
3、从站设计
从站的设计分两种,一种就是利用现成的从站接口模块如IM183、184开发,这时你只要通过IM183上的单片机外露的接口开发就行了。另一种则是利用芯片进行深层次的开发。对于简单的开发如远程IO测控,用SPM系列就能满足要求,但是如果你的开发是一个比较复杂的智能系统,那么SPC3一定是最好的选择,下面我们就SPC3的开发进行讨论。
3.1 硬件开发:
SPC3通过一块内置的1.5K Byte双口RAM与CPU接口,它支持多种CPU包括INTEL、SIEMENS、MOTOROLA等,IM183用的是一块51单片机,SPC3的接口图在器件手册中有详细描述,最棒的是它与51单片机的紧密接合,使你不再需要额外的译码电路就可将它的1.5K byte的双口RAM放在任一合适的地址,同时所有与通信有关的细节都由它完成了,这也就是说不会因为某个从站单片机的速度太慢而对整个系统的速度产生影响,否则的话如果你选用了一块12M的51单片机用在一个总线速度高达12M的系统上,那么它会因为频频响应中断而导致无法工作。
对于硬件工程师来说器件的选型无疑是件费力不讨好的工作,不过SPC3与Profibus总线的接口电路在器件手册中也有详细描述,甚至连主要器件的型号都有了。有了器件布板怎么办呢?毕竟使用在最严酷的环境中的12M现场总线接口不是每个人都有成功的经验,如果你担心可以参考手册中对总线工作在高速时的布线要求,或者你可以学学开发包内的几块电路板。
3. 2 软件开发:
SPC3的软件开发难点是在系统初始化时对其64字节的寄存器进行配置,这个工作必须与设备的GSD文件相符。否则将会导致主站对从站的误操作。这些寄存器包括输入、输出、诊断、参数等缓存区的基地址以及大小等等,用户可在器件手册中找到具体的定义。当设备初始化完成后芯片开始进行波特率扫描,为了解决现场环境与电缆延时对通信的影响,西门子所有Profibus ASIC芯片都支持波特率自适应,当SPC3加电或复位时,它将自已的波特率设置最高,如果设定的时间内没有接收到三个连续完整的包,则将它的波特率调低一个档次并开始新的扫描,直到找到正确的波特率为止。当SPC3正常工作时它会进行波特率跟踪,如果接收到一个给自己的错误包,它会自动复位并延时一个指定的时间再重新开始波特率扫描,同时它还支持对主站回应超时的监测。当主站完成所有轮询后,如果还有多余的时间它将开始通道维护和新站扫描,这时它将对新加入的从站进行参数化并对其进行预定的控制。
SPC3完成了物理层和数据链路层,与数据链路层的接口是通过服务存取点来完成的,SPC3支持10种服务,这些服务大部分都由SPC3来自动完成,用户只能通过设置寄存器来影响它。SPC3是通过中断与单片机进行通信的,但是单片机的中断显然不够用,所以SPC3内部有一个中断寄存器,当你接收到中断后再去寄存器查中断号来确定具体操作。
在开发包4中有SPC3接口单片机的C源代码(Keil C51编译器),用户只要对其做少量改动就可在项目中运用。从站的代码共有四个文件,分别是Userspc3.c、Dps2spc3.c、Intspc3.c、Spc3dps2.h,其中Userspc3.c是用户接口代码,你所有的工作就是找到标有example的地方将你自已的代码代进去,其它接口函数源文件和中断源文件都不必改。如果你认为6K的通信代码对你来说太大的话,你也可以根据SPC3的器件手册写自已的程序,当然这样是比较花时间的。
在开发完你的从站后一定要记住你的GSD文件一定要与你的从站类型相符,比方说,你的从站是不许在线修改从站地址的,但是你的GSD文件是
Set_Slave_Add_supp = 1(意思是支持在线修改从站地址)
那么在系统初始化时主站将参数化信息送给从站,从站的诊断包则会返回一个错误代码“Diag.Not_Supported Slave doesn’t support requested function”。