首页 理论教育SPC3的软件开发难点及应用技巧

SPC3的软件开发难点及应用技巧

【摘要】:SPC3的软件开发难点是在系统初始化时对其64字节的寄存器进行配置,这个工作必须与设备的GSD文件相符,否则将会导致主站对从站的误操作。当SPC3正常工作时,它会进行波特率跟踪,如果接收到一个给自己的错误包,它会自动复位并延时一个指定的时间再重新开始波特率扫描,同时它还支持对主站回应超时的监测。如果认为6 KB的通信代码太大,也可以根据SPC3的器件手册写自己的程序,当然这样是比较花时间的。

SPC3的软件开发难点是在系统初始化时对其64字节的寄存器进行配置,这个工作必须与设备的GSD文件相符,否则将会导致主站对从站的误操作。这些寄存器包括输入、输出、诊断、参数等缓存区的基地址以及大小等,用户可在器件手册中找到具体的定义。当设备初始化完成后,芯片开始进行波特率扫描。为了解决现场环境电缆延时对通信的影响,Sie-mens所有PROFIBUS ASICs芯片都支持波特率自适应。当SPC3加电或复位时,它将自己的波特率设置最高,如果设定的时间内没有接收到三个连续完整的包,则将它的波特率调低一个档次并开始新的扫描,直到找到正确的波特率为止。当SPC3正常工作时,它会进行波特率跟踪,如果接收到一个给自己的错误包,它会自动复位并延时一个指定的时间再重新开始波特率扫描,同时它还支持对主站回应超时的监测。当主站完成所有轮询后,如果还有多余的时间,它将开始通道维护和新站扫描,这时它将对新加入的从站进行参数化,并对其进行预定的控制。

SPC3完成了物理层和数据链路层的功能,与数据链路层的接口是通过服务存取点来完成的,SPC3支持10种服务,这些服务大部分都由SPC3来自动完成,用户只能通过设置寄存器来影响它。SPC3是通过中断与单片微控制器进行通信的,但是单片微控制器的中断显然不够用,所以SPC3内部有一个中断寄存器,当接收到中断后再去寄存器查中断号来确定具体操作。

在开发包4中有SPC3接口单片微控制器的C源代码(Keil C51编译器),用户只要对其做少量改动就可在项目中运用。从站的代码共有四个文件,分别是Userspc3.c、Dps2spc3.c、Intspc3.c和Spc3dps2.h,其中Userspc3.c是用户接口代码,所有的工作就是找到标有example的地方将用户自己的代码放进去,其他接口函数源文件和中断源文件都不必改。如果认为6 KB的通信代码太大,也可以根据SPC3的器件手册写自己的程序,当然这样是比较花时间的。

在开发完从站后一定要记住GSD文件要与从站类型相符,比如,从站是不许在线修改从站地址的,但是GSD文件是:(www.chuimin.cn)

Set_Slave_Add_supp=1(意思是支持在线修改从站地址)

那么在系统初始化时,主站将参数化信息送给从站,从站的诊断包则会返回一个错误代码“Diag.Not_Supported Slave Doesn’t Support Requested Function”。