咨询电话:0755-86329511
工业自动化称重仪表 分类
首页 > 学习专题 > 专业技术专题 > 工业自动化称重仪表

基于dsPIC30F的电子皮带秤控制仪表的PROFIBUS-DP从站实现

来源:网络转载更新时间:2021-05-31 15:08:15点击次数:2927次

电子皮带秤控制仪表是针对生产过程控制的实际需要而开发的一种低成本专用仪表[1]。该仪表采用dsPIC30F作为CPU;24位的模数转换器AD7730采集压力传感器的模拟信号,并通过SPI口与dsPIC30F相连;皮带的速度信号通过光电编码器测量,并经QEI口输入dsPIC30F;控制信号经电流型数模转换器AD420输出,控制变频器,调节电机转速。仪表中设有两个独立的通信接口,一个配置成RS232,用于与系统机相连,作为电子皮带秤系统调试、参数设置和代码下载的通道;另一个则配置成RS485。
在电子皮带秤安装到现场使用后,由于生产线是采用SIEMENS的S7-300PLC控制的,希望皮带秤能够接受生产线控制主机发来的命令,同时也能将物料流量等数据发送到主机,因此要求电子皮带秤控制仪表具备有PROFIBUS-DP的通信接口,成为PROFIBUS-DP从站。
虽然PROFIBUS是一个开放的现场总线通信协议,任何人都可以获得这个标准并设计各自的软、硬件解决方案[2]。但该协议较为复杂,而且通信过程中对时间响应的要求较为严格,目前开发DP从站的解决方案大多采用专用的协议芯片,如SPC3等[3]来实现的。采用专用的协议芯片的解决方案是一种省时省力的解决方案,但要求在硬件上进行设计,将协议芯片直接与仪表控制CPU总线相连,需要占用较多的硬件资源。在所设计的电子皮带秤控制仪表中,控制芯片的硬件资源基本被用完,除非重新设计,已不可能实现与专用的协议芯片的直接相连,采用专门的串口/PROFIBUS-DP转换器又要增加成本。为此只能探索一种软件解决方案,让现有的电子皮带秤控制仪表能成为PROFIBUS-DP从站,满足生产线的控制需要。
在许多文献里都提到过利用单片机的UART口可以通过软件来实现PROFIBUS-DP的数据链路层协议[2],但尚未见过实用的成功实例报告。笔者将在对PROFIBUS-DP进行协议分析的基础上,充分利用dsPIC30F的UART功能,实现一种纯软件的PROFIBUS-DP从站解决方案,并成功地运用于电子皮带秤控制仪表中。
1PROFIBUS-DP协议分析①
为了保证数据的高速传输,PROFIBUS只采用了物理层、数据链路层和用户接口,并通过数据链路层FDL(FieldbusDataLink)来实现大部分的总线协议。这种精简结构使得数据能高速、高效地传输,特别适应于PLC与现场I/O设备间的通信。PROFIBUS的物理层采用RS485双绞线电缆或光缆,其中RS-485传输是PRIFIBUS总线中最常用的一种传输技术,它既适应于需高速传输的系统,又适应于简单、廉价,需快速铺设的场合。通信波特率为9.6kbps~12.0Mbps。
PRIFIBUS通常采用基于总线的主从结构,可以有多个主站。主站之间采用令牌环网,确保每个主站在一个确定的时间内得到总线存取权(令牌)。主站与从站之间采用主-从轮询方式完成信息传送。主站可以对从站进行赋值、配置、初始化和诊断。而从站一般是被动地等待主站的请求,并对主站的请求进行必要的响应。
PROFIBUS的数据链路层帧协议是很复杂的,要采用软件方式实现一个可以满足各种配置需要、能通过PROFIBUS认证的通用站点是很困难的。而本项设计的目的是在自行设计的专用仪表上增设一个可以作为DP从站的PROFIBUS总线接口,让专用仪表能和总线上的确定主站交换信息,实现生产线的联动控制和数据采集。为此可以裁剪掉一些不必要的功能,保证专用仪表可以顺利地接入PROFIBUS-DP总线,并可靠地与主站实现数据交换。为此根据专用仪表功能和所需要交换的数据,编辑一个该仪表的GSD文件,其中关键是设置好该设备的ID、适应波特率、从站响应时间和数据交换模块。然后将该GSD文件安装到PLC的主站中,让主站可以正确识别该设备。
在所设计的系统中,选用SIEMENS的S7-300PLC作为主站。在安装了皮带秤控制仪表的GSD文件后,通过实际测试和协议分析后,得到该系统的主-从通信过程大致可以分为:主站对从站的第1次诊断、参数化从站、组态配置从站、主站对从站的第2次诊断以及主站与从站之间的循环数据交换。
为了便于以下说明,现将报文帧中的符号作简要说明:SD为报文起始符,SD=0x68表示数据域长度可变的报文帧;LE为所有数据的长度;LEr为LE的重复;SDr为SD的重复;DA为传输的目的地址;SA为传输的源地址;FC为功能码域;DSAP为目标服务点;SSAP为源服务点;DU为用户数据域,最长为246字节;FCS为所有数据的代数和;ED为报文帧的结束标志,固定为0x16。
当控制仪表的GSD文件输入到S7-300主站后,主站首先会定期发出诊断帧来判断控制仪表从站是否在总线上,当主站地址为2,从站地址为11时。
如果控制仪表从站已接到总线上,从站必须在确定时间内响应主站请求,即从站应发出一个诊断响应帧,其DU域应包含诊断信息数据。由于此时只是主站发出的第一个诊断,其目的是判断从站是否在总线上,因此数据域只需包含6个字节的基本标准诊断信息,其中数据域的第1字节0x02表示该从站未准备好交换数据;第2字节0x05表示该从站必须重新设置参数;第4字节0xFF表示该从站未被任何主站控制或参数设置;第5、第6字节表示该从站的ID号为0x000B。
在接到第一个诊断响应后,主站将发出一个参数赋值帧给从站,用于指定主站与从站的关系和从站的操作方式,主要包括从站被主站锁定,参数可以被接收;Watchdog启用;设定Watchdog时间;定义从站延迟响应时间和确认设备ID号等。
从站收到参数赋值帧后,响应报文非常简单,只需用一个字节来对主站的请求进行确认,即发一个确认报文SC=0xE5。
参数赋值完成后,主站将发出一个组态请求报文给从站,其作用是对I/O的类型及性质进行设定。本例DU域中的0x11和0x21表示从站应该有两个字节的输入模块和两个字节的输出模块。
从站收到组态请求帧后,也只需要发一个确认报文SC=0xE5即可。
组态配置完成后,主站将再次发出诊断帧来判断从站的初始化是否正确。
收到第2次诊断帧后,从站应发出一个响应帧,报告自身的初始化状态。此时数据域也只需包含6个字节的基本信息,第1字节0x00表示该从站已准备好交换数据;第2字节0x0C表示Watchdog启用;第4字节0x02表示该从站的属主主站地址为2。
当各项初始化过程结束,且参数都正确,就可以启动数据交换,主站与从站开始正常的周期性数据交换。首先主站向从站发出输出数据。
在收到主站数据后,从站需及时向主站发出输入数据。
至此将一直处于数据交换状态,实现了主站与从站之间的通信。
2UART的通信实现与波特率自适应
微芯公司的dsPIC30F是一款16位的数字信号控制器,具有单片机的控制功能和数字信号处理器的计算能力和数据吞吐量。dsPIC30F有两个独立的UART口,在电子皮带秤控制仪表中,UART2被配置为RS232,用于与系统机相连,而UART1则配置成RS485。PROFIBUS-DP从站就是采用这个口RS485来实现的。
UART由波特率发生器(BRG)、异步发送器和异步接收器组成。UxBRG寄存器控制一个自由运行的16位定时器的周期。其计算波特率的公式为:
式中:FCY---系统时钟。当UxBRG=0时,UART可以获得最高的波特率为FCY/16。
由于dsPIC30F容许的最高系统时钟为30MHz,为了使其UART产生的波特率与PROFI-BUS-DP对应,控制仪表的系统时钟选择为24MHz。这样,UART可产生的最高波特率为1.5Mbps,也就是说可能实现的PROFIBUS-DP的最高波特率仅能达到1.5Mbps。这个波特率虽然低了一些,但足以满足PLC控制生产线的PROFIBUS总线组网要求。
PROFIBUS-DP总线系统中,总线的传输速率是根据实际应用的需要,由主站来设定的。为了实现设备的复位和重组,要求从站能主动匹配事先定义的总线的传输速率,一旦通信速率发生变化,还能主动调整到新的传输速率,也就是说从站应具有波特率自适应能力。
在dsPIC30F芯片上拥有一个具备自动波特率检测能力的UART外设,UART接收引脚(RX引脚)上的信号能在内部传送至一个输入捕捉模块,从而获得输入信号边沿的时序,应用程序可根据此时序计算出UxBRG寄存器的值,实现波特率自适应。但这种自动检测的方法取决于接收到的数据,通常要求主站首先发送一个同步字符,如0x55。然而本系统的主站是确定的PLC,主站只能按现场总线传输协议传送相关报文帧,不可能加入所要求的同步字符,很难保证波特率计算的精度,经测试表明,该方法无法完成PROFIBUS-DP的波特率自适应,实现稳定通信。
好在PROFIBUS-DP协议只支持9.6~12.0Mbps的10级固定的波特率,总线传输信号可能的工作频率已知且稳定。因此,可以采用穷举法,在从站启动通信程序后,逐个尝试以不同的波特率接收主站发出的字符,直到能成功接收为止。在所设计的系统中,考虑到主站只可能有45.45、93.75、187.5、500、1.5*103Mbps5个波特率,所对应的从站的UxBRG值分别为32、15、7、2、0。以收到一个完整的帧为标准,在从站初始化时自动进入波特率搜寻状态,逐个轮询UxBRG的值来实现波特率自适应。这种方法简单,容易实现,并且系统工作稳定。
PROFIBUS-DP总线在数据交换过程中,有严格的报文帧的结构和相应的时序关系,如果时序稍有差错,交换就会终止[5,6]。在主站发送每一报文帧前,需加入一段总线休息的同步时间TSYN,其值固定为33Tbit(Tbit表示传输一个数据位占用的时间,为传输速率的倒数)。在从站接收到主站请求后并非立即响应,而是需要一定的时间间隔,这个时间间隔定义为TSDR,PROFIBUS规定此值的下限为11Tbit,上下限为60~800Tbit。主站在接收到响应报文帧后,要等待TIDI才能发送下一帧,TIDI固定为75Tbit。此外,在通信的主站一侧还定义了参数TSL,它表示从主站发出请求帧的最后一个bit到收到响应帧的第一个bit之间的时间间隔,反映了一个系统的实时性好坏。如果实际时间超过TSL后,主站还未收到从站的响应,就认为系统出错,需做出相应的处理。
在设计一个从站时,务必注意满足TSDR和TSL这两条件,使从站的反应时间不能过快也不能太慢,以符合总线时序关系。在从站接收到一个主站请求帧后都必须做一些必要的处理,这些处理所花费的CPU时间通常都能达到TSDR的下限要求,如果不能满足(如波特率太低,而CPU运行速度太快)可适当加入一点延时,以保证时序关系。为了保证整个系统的实时性,TSDR的上限和TSL都不能定义得太长,因此要求从站能对主站的请求及时做出响应。为此在从站控制器编程中采用了两项技术:一是充分利用了dsPIC30F的UART接收寄存器和发送寄存器的四级缓存,保证收入数据的及时接收和输出数据的连续发送;二是为了避免被控制器其它任务的打扰,影响响应时间,在从站收到主站请求帧的最后一个字节时,直接在接收中断中解析该请求帧,并准备好响应数据,开启发送中断。这两项技术是通过多次摸索后,确保实现与主站稳定通信的关键。
3联网测试
为了验证所设计电子皮带秤控制仪表作为PROFIBUS-DP从站的性能,采用西门子公司的S7-300作为主站,并采用STEP7来配置相应的PROFIBUS-DP实验网络[3]。首先在SIMATICMANAGER下建立一个PROFIBUS-DP项目;然后将S7-300插入总线中作为主站,并将主站地址设置为2;在配置好通信传输速率(如1.5Mbps)后,就可以得到一个以S7-300为主站的PROFIBUS-DP总线。在硬件配置下添加自行编辑的GSD文件后,可以在PROFIBUS-DP站点目录中找到电子皮带秤控制仪表DP从站,将其添加到PROFIBUS-DP总线上并设置其地址为11,就完成了整个实验网络的组态。在将组态代码下载到S7-300模块后,用双绞线将该模块的PROFIBUS-DP接口与电子皮带秤控制仪表的RS485接口相连,就构成了测试平台。
在组网结束后,分别给PLC、电子称上电,将PLC模式开关选择RUN状态,PLC的RUN(绿色)指示灯闪烁几次后停止闪烁,处于绿色点亮状态。指示灯SF(红色)、BATF(红色)、FRCE(黄色)、STOP(停止)闪烁几次后,处于熄灭状态。此种状态一直持续下去,说明通信在正常运行。更换其它波特率,PLC指示灯的状态与以上情况相同,也说明通信正常。
在PROFIBUS-DP联通后,就可以实现上位PLC与下位电子皮带秤控制仪表的数据交换。根据在GSD文件中规定好的数据交换格式,PLC送给电子秤的信号为PIW310~PIW339,共30个字节。电子秤送到PLC的信号单元为PQW300~PQW329共30个字节。经观察,在各种波特率下,上下位机之间均能实现正常的数据交换,基本达到了生产过程控制的需求。
4结束语
PROFIBUS-DP现场总线是一种较为复杂的通信协议,而且有严格的时序要求。要开发符合标准的通用DP从站站点,可采用专用的协议芯片来实现,但这种解决方案需要占用较多的控制器硬件资源。在控制器硬件资源不够时,还有一种解决方案就是采用串口/PROFIBUS-DP转换器,不过这种方式不仅增加了控制器成本,而且还需开发与转换器相连的串口程序。
如果控制器的CPU芯片具有较高的性能,如16位以上的芯片;并且具有足够高的系统时钟,能产生1.5MHz以上的串口波特率;串口的收发装置都具有相应的缓存,能满足数据交换过程中的时序要求,则可以采用软件方式来实现一个满足一般工业控制要求的DP从站站点。只要对通信过程中的时序进行严格控制,完全可以实现从站与主站间的数据交换,满足PROFIBUS-DP总线的实时性要求。这是一种经济实用的解决方案,对开发自主的PROFIBUS-DP总线仪表有一定指导意义。

 

本文源于网络转载,如有侵权,请联系删除

(此文关键词:电子皮带秤控制仪表,电子皮带秤控制器,电子皮带秤仪表,皮带称仪表,皮带秤称重显示器)
分享到
相关文章
More» 相关产品推荐

在浏览器打开×