引言
profibus是开放的、与制造商无关、无知识产权保护的标准。因此世界上任何人都可以获得该标准并设计各自的软硬件解决方案。pro-fibus-dp通信接口的开发有两种方案选择:单片机+软件;单片机+profibus通信芯片asic。
方案2中profibus-dp协议*由profibus通信asic来实现,单片机主要处理用户程序。因此方案2开发周期相对少很多,本文将采用单片机+profibus通信asic来实现profibus通信接口的设计。
1、profibus-dp基本特性
profibus包括三个兼容系列:profibus-fms,profibus-dp,profibus-pa。fms提供大量的通信服务用于完成以中等传输速度进行的循环和非循环的通信服务;dp是一种经过优化的高速廉价的通信连接,适用于实时性要求较高的场合,主要用于自动控制与分散式外设之间的通信;pa是专为过程自动化而设计,具有本质安全性,用于安全性要求较高的场合及总线供电的站点。
1.1协议结构
profibus-dp协议采用了iso/osi模型的第1层(物理层)、第2层(数据链路层),除去了3~7层,并自定义了用户接口层,这种协议结构保证了数据传输的快速有效。
1.2报文结构
profibus-dp数据编码采用异步不归零制,传输线的空载电平为“1”。为了避免数据传输中发生冲突而导致数据丢失,在每个请求报文发送前必须保证33位(同步时间)的空载状态。在单个字符间所有数据传送时没有间隙,即无缝。各种报文的格式如图1所示。
1.3profibus-dp从站状态机
图2为dp从站状态机的简单图示。各种椭圆表示不同的状态,带箭头的连线表示状态间的转换,连线上的文字表示状态转换所需满足的条件。
只有在power_on状态,从站可以接收来自二类主站的“set_slave_address报文,从而改变从站地址,从站应具有非易失性存储器来存储从站地址。内部启动后,从站进入wait_prm状态,等待“wait_prm”报文。参数化报文由用户组态时给定,包括一些标准的信息,如识别号、同步锁定能力,还包括了一些用户特别定义的数据,另外,在此状态从站还可以接收“get_cfg”报文、“slave_diag”报文,但拒绝处理其他报文,不能进行数据通信。如果set_prm正确,从站进入wait_cfg状态,等待“check_cfg”报文,该报文规定主站对它的配置信息,即数据交换中的输入输出字节数。此外,也可接收“get_cfg”报文、“slave_diag”的报文。当参数化与配置正确通信,在此状态,从站可以接收以下报文:data_exchange_ok、writing_outputs,reading_inputs,global_control,slave_diag,get_cfg等。从站接收主站的状态请求后,以高优先级的诊断报文作为应答。诊断信息包括了标准诊断信息和与用户有关的信息。
2、通信接口硬件设计
本文选用的profibus-dp的通信协议芯片为spc3。spc3集成了全部的profibus-dp协议。spc3在dp方式下将完成所有dp-sap的设置。spc3内部集成了1.5kb的双口ram,包括参数寄存器、方式寄存器、状态寄存器,中断控制器等。spc3内部集成的看门狗定时器有3种工作状态:波特率检测、波特率控制和从站控制。内部的usart可实现并行数据流和串行数据流的相互转换。微顺序控制器控制整个工作过程。空闲定时器直接控制串行总线的时序。
考虑到profibus对速率的要求本文选用高速率,低功耗的16位msp430单片机,采用in工作方式。cpu与spc3接口电路如图3所示。对于msp430单片机而言,spc3相当于它扩张的一个外部ram。单片机可以通过访问外部ram的方法访问spc3的寄存器。rs485驱动器的一端与spc3相连,另一端通过9针d型插头与总线相连。rs485驱动器选择sn75sls176来满足高速的数据通信。
3、通信接口软件设计
软件设计是开发profibus-dp通信接口的一个重要环节。由于spc3集成了完整的dp协议,因此在进行通信时,msp430单片机不用参与处理dp状态机。主要任务是根据spc3产生的中断,对spc3接收到数据转存,组织要通过spc3发给的数据,并根据要求组织外部诊断。
主程序流程图如图4所示,在spc3正常工作之前,需要进行初始化,以配置需要的寄存器,包括设置协议芯片的中断允许,写入从站识别号和地址,设置spc3方式寄存器,设置诊断缓冲区,配置缓冲区,地址缓冲区,初始化长度,并根据以上初始值得出各个缓冲区的指针和辅助缓冲区的指针。根据确定输出缓冲区、输入缓冲区及指针,初始化流程图如图5所示,初始化包括:spc3硬件复位、硬件模式、设置spc3中断屏蔽寄存器、spc3内部看门狗、设备标识号、缓冲区初始化。
中断程序流程图如图6所示,在profibus-dp中zui主要处理以下的中断事件:新的参数报文事件,全局控制命令报文事件,进入或退出数据交换状态事件,新的配置报文事件,新的地址设置报文事件,检测到波特率事件,看门狗事件。
4、结语
选用的msp430单片机具有高速率、低功耗的特点,spc3芯片则集成了profibus-dp全部协议内容,整系统功能相对完善,使用方法简单。本方案用于profibus-dp通信接口的开发,可以减少开发周期,实现开发的简化。