日志档案

发表于 2008-1-9 9:37:04

1

标签: SPC3 西门子 PROFIBUS

基于西门子SPC3的PROFIBUS-DP从站开发和应用

1.系统概述

现场总线技术是20世纪80年代兴起的集控制技术、仪表技术和计算机网络技术为一体的先进的工业控制技术,其组成的系统具有可靠性高、维护性好、总线协议开放等特点。在现有的各种现场总线标准中PROFIBUS现场总线是一种比较流行的一种现场总线标准。随着现代工业的不断发展,对生产过程的控制提出更高的要求,其中应用于现场级高速数据传输,实现现场级设备数字化,且具有较高的实时性的PROFIBUS-DP是市场占有率绝对领先的总线技术。PROFIBUS-DP智能从站的开发就是针对现场的测量控制设备微机化,并使多个从站之间以及与远程监控计算机之间,实现数据传输与信息交换,从而形成基于计算机的控制系统之间的一种全数字化、双向、多站的底层通讯系统。由于PROFIBUS现场总线具有很强的互可操作性和替换性,只要是支持PROFIBUS协议的现场总线设备,均可方便地挂接在PROFIBUS的总线上。西门子提供了一种DP从站开发的协议专用芯片(ASIC)SPC3。本文就是介绍这种基于西门子SPC3PROFIBUSDP从站的实现方法。

2.系统构成                                                                            

PROFIBUSDP配置成单主站系统,使用单一的总线存取协议,CP342-5作为PROFIBUS 总线上DP主站,铂电阻温度采集智能从站装置作为 PROFIBUS 总线上的DP从站,它们之间通信基于主-从原理,主站周期地读取从站的输入信息并周期地向从站发送输出信息,只有当主站请求时总线上的DP从站才可能活动。从站装置通过多路温度采集电路实现外部温度的测量,选用Pt100测温范围为0850。如图1系统框图所示。

 

            

 

如图1系统框图

该从站在上电后,它的的启动顺序为:设置从站地址-诊断请求-参数化-组态-诊断请求-数据交换,它的工作机制可以用一状态机表示,如图2所示。状态机描述站在不同的工作状态以及各种状态之间的转换关系。在上电状态时,从中可以接收来自二类主站的设置从站地址报文,之后期望一个组态化报文或等待参数化报文,排斥其他报文,此时通信不能进行。当参数化与配置经诊断后正确,从站进入数据交换状态,接收主站请求后,以高优先级的诊断报文作为应答。

 

2 从站状态机模型

 

 

 

 

 

3.硬件设计

目前开发DP从站最常用的ASICSiemens公司生产的SPC3SPC3可独立完成全部PROFIBUS-DP通信功能,这样可加速通信协议的执行,但SPC3不能单独使用,需要微控制器对之控制。

设计上采用了SIEMENS公司提供的软件包DPS2,利用它可以方便的对SPC3初始化。包括设置SPC3允许的中断、写入从站识别号和地址、设置SPC3方式寄存器、设置诊断缓冲区、参数缓冲区、配置缓冲区、地址缓冲区、初始长度,并根据以上初始值求出各个缓冲区的指针及辅助缓冲区的指针,根据传输的数据长度,确定输入缓冲区,输出缓冲区及指针。

AT89C52不参与PROFIBUSDP从站状态机的运行,它的主要任务就是根据SPC3产生的中断,对SP3接收到的主站发出输出数据转存,按照主站的要求将处理后的温度数据通过SPC3发送到主站。

从站设计在功能上分为符合PROFIBUS-DP协议的通讯主从站通讯设计和热电阻温度采集电路的设计,相应的在从站硬件结构上分为硬件设计主要包括处理器系统接口电路和铂电阻温度采集电路。

主从通讯电路主要由协议芯片SPC389C52微处理器、32K扩展RAM、译码器电路、用于复位的硬件看门狗MAX705电路实现;热电阻温度采集电路主要由89C52微处理器、A/D转换器7109和多路模拟开关CD4051实现89C52单片机作为中央处理器,负责将现场采集的数据进行处理、分析和分类,然后通过SP3传到PROFIBUS-DP总线上去,同时监测SP3,接收DP主站传过来的指令和数据,并进行相应的操作。如图3

3 从站设计原理框图

31处理器系统接口电路

4 89C52SPC3接口电路。它通过16位地址线和8位数据线进行数据交换,外部扩展了程序存储器(EPROM)和数据存储器(RAM专用芯片,SPC3可独立完成全部PROFIBUS-DP通信功能,89C52完成对协议芯片的初始化、数据的发送和接收。

4  89C52SPC3接口电路

32 铂电阻温度采集电路

如图5。本铂电阻温度采集电路,它无需恒流源、放大电路和零点迁移电路,不易引入温漂,受电流源波动影响较小。在多路测量中,多个铂热传感器共用一个A/D转换器7109,由多路模拟开关切换完成多路测量。A/D转换器ICL7109,是一种高精度、低噪声、低温漂双积分A/D转换器,12位精度。由于ICL7109输出二进制信号码,且低8位和高8位分时输出,因此容易和各种8位微处理器直接接口。ICL71092个差分输入端和2个差分参考电压输入端,将STATUS线与89C52 相联,这样完成一次转换就向处理器发一次中断申请。在中断服务中12位数据分两次读取,分别用 控制。并同时得到极性和溢出标志。

 

5 多路测温系统框图

系统采用多路四线制的接线,采用的比例法测温方案,K1K2K3是多路模拟开关(CD4051),K1用来切换电流,K2K3用来切换输入的差分电压。由于7109具有高输入阻抗,BC两段长引线造成的压降可以忽略不计,流过铂电阻Rx和参考电阻Rr的电流可认为相等,虽然模拟开关的导通电阻和相应的长引线的引入会改变流过RxRr的电流,但差分输入电压保持不变,由比率法公式得到的电阻比值关系 也不变,其中NA/D采样值的十进制数。

 

 

4.软件设计

从站的软件设计包括上下位机两部分。下位机软件包括通信主程序和用户程序编写,固化在89C52中,实现与DP主站的通信和铂电阻温度信号采集。上位机软件主要是在STEP-7PLC编程,实现铂电阻温度检测装置的通信和温度数据的转换存储;组态软件WINCC人机界面设计,实现对温度进行实时监测和历史数据查询,历史报表等。

下面就DPS2中的userspc3.c模块用户程序编写做简单介绍:

1源程序组成

源程序模块

 

模块功能

userspc3.c

主函数

启动、输入/输出、诊断

intspc3.c

中断程序块

参数设置及组态

dps2spc3.c

帮助功能块

计算缓冲组态

dps2user.h

宏与定义

便于用户对ASIC寄存器操作

                                                        

主要程序如下:

1)复位SPC3

PRO_RUN=0;                              /*程序状态*/

 address=*(&OWN_ADDRESS);

SPC3_RESET = SPC3_RESET_SET;           /*强制复位引脚 */

for(i = 0; i<100 ; i++);

SPC3_RESET = !SPC3_RESET_SET;

HW_WATCHDOG_TRIGGER = 1;            /*触发硬件看门狗*/

HW_WATCHDOG_TRIGGER = 0;

2)外部数据处理程序

float xdata  f[8] _at_ 0xD000;  

sbit p10=P1^0;

sbit p11=P1^1;

sbit p12=P1^2;

for(i=1;i<9;i++)                              /*实现8通道铂电阻温度检测*/

{

switch(i)

   {

case 1:

write(0x11);                              /* ICL7109的写函数*/

write(0x64);

p10=0;p11=0;p12=0;                       /* 控制多路开关123*/

rtreadi                             /* ICL7109的读函数*/

f(1)=wendu()   

break

case2:

…….

f(2)=wendu()

break

case8:

……

f(8)=wendu() 

break;                       

}

 3)温度非线性校正子程序

float wendu()

{

t=(rt-100)/0.37;

do{

rtt=100+t*(0.390802-0.0000580195*t);

t=t+(rt-rtt)/0.37;

}

while((rt-rtt)>0.005||(rtt-rt)>0.005);

return(t);

}

4)发送温度采样值至主站

通过指针函数将从站数据传送至主站

*(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 0)   =  XBYTE[0xD000];

   *(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 1)   =  XBYTE[0xD001];

   *(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 2)   =  XBYTE[0xD002];

   *(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 3)   =  XBYTE[0xD003];

*(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 4)   =  XBYTE[0xD004];

   *(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 5)   =  XBYTE[0xD005];

   *(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 6)   =  XBYTE[0xD006];

   *(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + 7)   =  XBYTE[0xD007];

用户的主要工作在于用户主程序的设计,包括外部信号处理程序,从站数据的发送,接收来自主站的数据以及诊断事务的处理部分的程序。主程序框图如图6所示。只要熟悉SPC3工作状态机制,DP接口程序并不难编写。

6 主程序框图

5.心得体会

    本文将工业铂热电阻测温较常用的比率方法与PROFIBUSDP技术相结合,开发出一种温度采集智能从站,由于该系统的PROFIBUSDP接口设计的通用性,可以根据具体情况设计不同的信号采集部分,开发出适用于不同要求的智能从站,这必将大大减短开发周期,从而具有很大的扩展空间。根据本方案开发的从站完全符合PROFIBUS标准,在实际应用中将从站通过PROFIBUSDP总线与一类主站PLC相连,在二类主站(PC)上使用Step7软件采集温度信号,并通过WINCC组态软件画面显示出来。实际运行中稳定可靠,该从站和其他现场总线设备共同挂接在PROFIBUSDP上,从而实现了整个控制过程的分散化、省配线化及标准化的要求。

系统分类: 现场总线   |   用户分类: 无分类   |   来源: 原创

    阅读(442)    回复(1)