嵌入式 > 嵌入式开发 > 详情

从RS-232串口到PROFIBUS-DP总线的转换接口设计

发布时间:2020-09-01 发布时间:
|
0. 前言:

PROFIBUS是一种国际化、开放式、不依赖于设备生产商的现场总线标准,广泛适用于制造业自动化、流程工业自动化和楼宇、交通、电力等其他领域自动化。基于现场总线的控制系统要求现场仪表及设备必须具有现场通信能力,而我国目前的实际情况是:多数传统仪表及现场设备并不具备现场总线接口,而完全使用国外进口设备将会使系统成本过高。如何将大量的传统仪器设备连接到PROFIBUS总线上,实现PROFIBUS主站与传统设备之间通信数据透明传送,成为广大用户急于要解决的问题。如:具有RS-232接口的现场测量设备及仪表等,如何使其成为PROFIBUS总线上的一个从站。本文所讲述的这个接口产品就是处理从RS-232到PROFIBUS-DP的协议转换,起到一个桥的作用,我们称之为总线桥。

1. PROFIBUS-DP网络协议

PROFIBUS的网络协议是以ISO颁布的OSI标准七层参考模型为基础的,只是对第三层到第六层进行简化。它的三种模块(FMS、DP和PA)可以适应不同的应用对象和通信速率方面的要求,开放性也好。但它们均使用一致的总线存取协议,该协议是通过OSI参考模型第二层(数据链路层)来实现的,它包括了保证数据可靠性技术及传输协议和报文处理。

数据链路层协议媒体访问控制(MAL)部分采用受控访问的令牌总线(Token Bus)和主从方式。其中令牌总线与局域网IEEE8024协议一致,令牌在总线上的各主站间传递,持有令牌的主站获得总线控制权,该主站依照关系表与从站或与其他主站进行通信。主从方式用于主站和从站间通信,其工作特点是:总线上一个主站控制着多个从站,主站与每一个从站建立一条逻辑链路;主站发出命令(Command),从站给出响应(response);从站可以连续发送多个帧,直到无信息发送、达到发送数量或被主站停止为止。数据链路中帧的传输过程分为三个阶段:数据链路建立、帧传输和链路释放。PROFIBUS-DP并未采用ISO/OSI的应用层,而是自行设置一用户层。该层定义了DP的功能、规范与扩展要求等。DP物理层与ISO/OSI参考模型的第一层相同,采用RS-485传输技术。

2. RS-232设备通信协议

RS-232只是设备通信物理层的一个标准,因此PROFIBUS主站必须向RS-232设备传送它能够理解的数据,这就是RS-232设备的通信协议。所以,为实现PROFIBUS主站与RS-232设备的有效数据通信,PROFIBUS主站编程人员应该了解RS-232设备的通信协议。RS-232设备的通信协议通常有以下两类:

(1)具有应答关系和若干通信指令的通信协议

这是应用比较广泛的通信格式,通信数据可以是ASIIC码或二进制数据。对于这种设备,既有发送又有接收。用户在主站编程,按照协议规定的报文格式将通信数据填入RS-232总线桥的PROFIBUS数据输出区,通过所产生的中断启动转换接口将通信数据发送到设备,然后总线桥自动转入接收状态。当总线桥数据全部接收完RS-232设备的回答报文数据后,将回答报文数据自动填入PROFIBUS数据输入区,这样,PROFIBUS主站可以在PROFIBUS数据输入区得到RS-232设备的回答报文数据。

(2)无应答关系、单纯接收或发送数据(ASIIC码或二进制数据)的通信协议

此类设备(如条码扫描器)只通过RS-232接口向PROFIBUS主站发送数据,也有的设备(如显示屏)只通过RS-232接收PROFIBUS主站发送的数据。PROFIBUS主站实现这类简单通信协议的原理与第一种协议相同,只是不会出现冲突,编程更为简单。

3. RS232总线桥硬件设计

RS232总线桥系统框图如图1所示:


图1:系统框图

3.1 SPC3说明

西门子公司提供的SPC3是用于DP智能从站的协议专用芯片,也是本设计的关键器件。SPC3具有1.5K字节的报文帧存储器、方式寄存器、状态寄存器、中断寄存器及缓冲区等,各部分地址分配如表1。

表1:SPC3内存单元地址分配

SPC3需外接48MHZ晶振,能自动检测波特率从9.6K到12M。总线访问是由硬件驱动的,与应用对象之间通信采用数据接口,因此数据的交换独立于总线周期。SPC3的方式寄存器0用于设置PROFIBUS-DP的操作方式,如minTSDR、SYNC、FREEZE等,方式寄存器1设置可动态改变的状态。状态寄存器存放从站的状态信息,以便在任何时间能扫描总线的介质访问子层(MAC)。

集成的监视定时器(WatchDog),可自动识别波特率,并防止出现故障危及外围设备。一个公共的中断输出,CPU可以通过读取中断寄存器来判断中断源并执行相应中断。在UART中,实现并行数据流和串行数据流的变换。在第一个字符发送前,SPC3生成发送请求信号RTS。它集成了完整的DP从站状态机,PROFIBU协议的周期性循环部分数据通信由SPC3中预先分配的各缓冲区指针的来回切换完成,其余非循环部分数据通信则需要由微处理器中的软件来实现。

SPC3自身带有1.5KB的数据存储区,至少需要11位地址线。单片机P0口的P0.0~P0.7接SPC3的DB0~DB7端,既作为SPC3的数据线,也作为SPC3地址总线的低8位。单片机P2口的P2.0~P2.2接SPC3的AB0~ AB2端,作为SPC3地址总线的高3位,同时要使SPC3的高5位AB7..3=00000。在软件程序的设计中,SPC3的数据存储器的地址区被强制在1000H~15FFH,这要求P2.7~2.4=0001,要想AB4仍为0,就必须将P2.4通过一个非门接SPC3的AB4端。在实际电路中,SPC3的AB7~5通过一个接地电阻接地,使得AB7..5=000,AB3接P2.3始终给出低电平信号即AB3=0,AB4的输入端通过一个可编程逻辑芯片对P2.7~2.4的编码电路来实现(AB4=P2.7|P2.6|P2.5|非P2.4),这样只要使P2.7~2.4=0001,AB4始终为1,从而保证SPC3的数据存储器的地址范围为1000H~15FFH。

3.2 PROFIBUS总线接口

PROFIBUS接口是PROFIBUS标准驱动电路,由由两个输入光电隔离电路(6N137,10MBit/s)、一个输出光电隔离电路(6N136)、一个RS-485驱动芯片(SN75LS176)、一个D型9针插头组成及辅助电路组成。光隔是用以消除来自零线的干扰,如果现场通信的波特率需要到12M,在光隔选用时还需要考虑更高的性能,如HCPL7720等。

3.3 RS-232接口

RS232接口电路RS-232驱动电路,由一个输入光电隔离电路(6N136)、一个输出光电隔离电路(6N136)、一个串口处理芯片(MAX232)、D型9针插头及辅助电路组成,实现串口TTL信号到RS-232信号的转换。

3.4 拨码开关

一方面用作设置从站地址,另一方面用作RS-232接口设置。上电时,使D7=1,D5~D0作为串口配置数据存入EEPROM,然后将D0拨到0,D6~D0共7位作为设置的从站地址。D2D1D0:串口波特率设置;D4D3:是否有奇/偶校验;D5:接收/发送允许。

3.5 微处理器接口

微处理器AT89LS8252由以下几部分组成:一个8位中央处理器(CPU),片内8K字节的Flash存储器,2K字节的EEPROM,片内256字节的SRAM,4个8位的双向可寻址I/O端口,一个全双工UART串行接口,具有SPI接口,含有WATCHDOG、定时器等,可满足接口对程序、配置数据、PROFIBUS标准对异步通信等的需要。AT89LS8252外接24M HZ晶振。。通过对SPC3的控制实现PROFIBUS的通信,并在RAM中建立PROFIBUS通信数据缓冲区。另一方面,通过RS-232接口实现和外部现场设备的通信,同样在RAM中建立RS-232通信数据缓冲区。CPU通过两个通信缓冲区的数据交换,实现PROFIBUS到RS-232的通信。

4. 软件设计

在西门子公司的DP从站开发包PACKAGE4中,包括面向SPC3的C原码固态程序DPS2。利用它所提供的用户宏接口,可以方便的实现SPC3中各寄存器及缓冲区的初始化设置,根据中断源类型实现与主站通信数据的接受与发送。因此单片机不需要考虑从站状态机的实现顺序。其主程序流程图如图2所示,中断流程如图3所示。


图2:主程序流程图


图3:SPC3中断程序流程图

其中,有以下三个部分需要重点说明。

(1)SPC3初始化

微处理器对SPC3的初始化包括:屏蔽不允许的中断;设置用户WatchDog值;将ID号、从站地址赋给SPC3对应寄存器,初始化方式寄存器;自定义各buffer长度,初始化spc3中各buffer(地址、长度赋给对应参数寄存器,并将buffer区清0);从read-cfg-buffer中读入配置数据计算三个Din-buffer和三个Dout-buffer各自的实际长度及地址;获取三个Din-buffer中空闲的一个,其地址赋user_input_buffer_ptr_fb;获取两个诊断buffer中空闲的一个地址赋user_diag_buffer_ptr_fb,置诊断标志user_diag_flag_fb = TRUE;从Status Register取波特率赋;给处理器参数wd_baud_ctrl_val赋值。考虑到在实际的系统运行中,一般不需要更改从站地址,初始化中将更改站地址标志置为FALSE。

(2)数据通信过程

当参数化、配置完成后状态机进入数据交换状态。微处理器根据SPC3中断寄存器的状态对SPC3接收到的主站发送的输出数据进行转存,同时组织需通过SPC3发送给主站的数据,并根据要求组织外部诊断等。

RS-232串口通信程序设计中,分别设有串口接受中断、发送中断程序来处理串口数据的接受和发送。由于PROFIBUS侧的数据更新速率远远快于RS-232侧的数据更新的速率,为保证由PROFIBUS侧输入的数据能一次性的整块传送到RS-232侧,需在程序中加一数据缓冲区来临时存储PROFIBUS 侧输入的数据。在对数据缓冲区中的数据的处理期间,数据缓冲区加锁,以防止数据缓冲区中数据更新,只有一次处理完成,数据缓冲区才解锁,允许再次更新其中数据。

在每一次程序循环中,程序一次性的将整块PROFIBUS侧的输入数据读入一数据缓冲区中并将其加锁,进行数据处理,输出到RS-232侧的设备中,接受RS-232侧的返回信息;如果数据缓冲区中的PROFIBUS侧的输入数据数据处理完毕,数据缓冲区解锁,将RS-232 侧的输入数据及信息传送到PROFIBUS侧。依次再循环。

(3)在主站配置中要注意,虽然本产品的I/O数量可根据PROFIBUS规范任意设定,但配置报文的长度是固定的。

结束语

PROFIBUS是世界上最著名的工业现场总线之一,并已为愈来愈多的国内外用户所接受和采用。本总线桥产品的开发,使用户可以方便地将具有RS-232接口的传统仪器设备集成到PROFIBUS总线系统,成为一种符合PROFIBUS总线协议的新产品。

参考文献:

[1] Siemens,SPC3 and DPS2 User Description,Siemens AG in Fed Rep of Germany,1998

[2] 满庆丰、韩锋、夏继强,开发PROFIBUS-DP智能从站,电测与仪表,2003,40(3)

[3] 方彦军、朱登攀,图像传输中PROFIBUS接口的设计与实现,自动化仪表,2002,23(12)



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
什么是总线压限