摘要:针对标准PROFIBUS—DP主站在国内研究较少,自主研发产品的功能有限、智能化不足的现状,进行了基于Linux操作系统的PROFIBUS—DP主站的设计和研究,实现了PROFIBUS—DP1类主站的主从通信功能。采用模块化设计思想,从防错设计、纠错设计、故障恢复设计等方面对设计方案中软硬件可靠性进行了详细分析。从响应时间的角度阐述了影响系统实时性的关键问题,同时对本平台的实时性进行了详细分析,并通过实验测试了该主站的性能参数。实验结果表明,对于多从站通信,使用Linux操作系统后,性能更优越,运行更稳定。
引言
PROFIBUS是面向工厂自动化、流程自动化的一种国际性的现场总线标准,是一种具有广泛适用范围的、开放的数字通信系统,适用于快速、时间要求严格和可靠性要求高的各种通信任务。PROFIBUS现场总线分3种:PROFIBUS—FMS、PROFIBUS—DP和PROFIBUS—PA。其中,PROF-IBUS—DP是一种高速的低成本通信连接,用于设备级通信系统与分散式通信。
PROFIBUS—DP现场总线由主站和从站组成。对于从节点的研究,国内科研院所很早就开始研究,现已有多家企业能够自主研制从站产品。但是对于主站,由于其技术复杂、开发难度大,目前国内只有北京和利时技术有限公司、浙大中控等少数几家公司开展相关的技术研究与开发,并只实现了部分子集功能。大部分产品主要由国外几家大公司垄断。同时,随着PROFIBUS在国内市场上的迅速推广,许多企业和科研单位开始了对PROFIBUS协议的研究,并展开了使用PROFIBUS通信协议的智能节点的研究。但是,目前国内业界对于PROFIBUS—DP的研究和相关产品的开发都是基于国外提供的专用协议芯片(主站多数采用西门子推出的ASPC2,从站多采用SPC3等智能通信芯片),即集中在从站设计领域,而没有主站样机开发的相关报道。对于主站的开发,国内一些科研院所(北航、中科院、浙大等)也曾利用可编程逻辑器件配合MCU设计出简单主站的试验产品,但是这些产品仅能实现简单的主站功能,对于组成强大的PROFIBUS—DP网络还望尘莫及。
本文正是针对上述的问题,为避免采用协议芯片、增加主站智能功能和后续扩展性研究的需要,设计了基于Linux操作系统的PROFISBUS —DP主站。在硬件上采用ARM9内核的处理器S3C2410,同时将Linux操作系统移植到此硬件平台上,在此基础上,完全由软件编程实现了整个PROFIBUS—DP的主站功能,能够与标准PROD—IBUS—DP从站设备进行通信。
1 PROFIBUS—DP主站通信机制
PROFIBUS—DP的主要目的是在功能强大的主站与若干简单的从站之间进行循环的数据交换。因此系统主要使用主-从类型通信服务。
PRIFIBUS—DP总线系统设备包括主站和从站,而主站则包括1类主站和2类主站。1类主站能够对从站设置参数,检查从站的通信接口配置,读取从站诊断报文,并根据已经定义好的算法与从站进行用户数据交换,同时,1类主站还能用一组功能与2类主站进行通信。2类主站则是一个编程器或一个管理设备,可以执行一组DP系统的管理与诊断功能。由于2类主站不能单独作为一个主站对从站进行管理,加上本系统采用的是单主站结构,所以本系统设计的是一个1类主站。
PROFIBUS—DP的1类主站主从通信过程,大致分为以下几个阶段:询问从站是否在线,主站对从站的第一次诊断,参数化从站,通信接口配置从站,主站对从站的第二次诊断和主站与从站之间的循环数据交换。
为了保证帧在总线上的正确传输,PROFIBUS—DP对帧的结构及相应的时序关系做了严格的规定,且定义了12个参数以限定及保证帧间隔时间和可允许的最大等待时间等。一次典型的主从站数据交换过程在发出每一个帧前,须有一个同步期TSYN,即在每一报文帧发出前加入一段总线休息时间,其长度固定为33Tbit时间。
在TSYN后,通信的发起方发出请求帧到响应者(从站)。接收方从接到该请求到产生响应数据的间隔时间定义为TSDR,该参数的大小反映了该响应方从站的计算能力大小和资源多少。有些站点没有采用专用的通信ASIC芯片,或者宿主MPU的计算能力较低都会使响应时间较长。 PROFIBUS—DP协议中规定了响应时间的上、下限值即:min TSDR,max TSDR。其中:min TSDR=11Tbit,maxTSDR=60Tbit~850Tbit。
在通信的发起方(主站)一侧,从主站发出请求帧的最后一位到收到响应帧的第一位之间的时间间隔被定义为Slot Time,它从另一个方面反映了一个系统的实时性能的好坏。此设计中定义了一个重要的参数TSL,即为允许的最大的Slot Time,如果通信的发起方主站在超过TSL后,还未收到接收方的响应,则认为系统出错,或重发请求帧(重发请求数不超过Max Retry Limit参数限制),或上交此错误给FDL层。
2 硬件系统设计
本PROFIBUS—DP主站硬件平台由于目标是完全采用自主技术,不依靠国外的产品和技术,所以本系统选用的是第一种方案(即由处理器运行完整的协议来实现);同时,基于S3C2410芯片的强大功能,本平台不但移植了Linux操作系统,并且还编写了网络接口和USB口的驱动,这对于平台的多功能性和以后性能的扩展都有一定的意义,其总体结构如图1所示。
此硬件平台以S3C2410处理器为核心,通过编程实现DP协议栈的功能,完成与上位机和DP从站设备的通信功能。同时,针对S3C2410处理器的功能,使用外围芯片DM9000实现了以太网通信功能,并根据USB的特点,以特定的I/O口实现USB的从设备功能。由于需要移植Linux操作系统,所以需要用外围芯片扩展内存。在本试验平台中,通过串口1实现了DP通信,通过串口2实现了该硬件平台与上位机的通信。
3 系统软件设计
为了提高该试验平台的可靠性,软件设计方面将本系统分为两个子系统,一个子系统负责与上位机进行通信,另一个子系统则负责PROFIBUS—DP的通信。其中,与上位机通信的程序流程如图2所示。DP网络通信程序流程如图3所示。
DP网络通信模块和上位机通信接口模块是两个独立的模块,他们共享硬件相关的函数库和从站相关数据结构。这两个模块还互为生产者和消费者的关系,上位机通信模块为DP网络通信模块提供从站相关的组态(GSD文件相关)信息和从站输出数据;DP网络通信模块为用户通信模块提供从站输入数据及从站运行状态相关信息。
4 系统可靠性分析
软件的稳定性和抗干扰性是衡量系统可靠性的重要指标。本主站在软件实现中所采取的保证可靠性措施主要有防错设计、纠错设计、故障恢复设计等。
防错设计:主要体现在系统程序自检技术及数据封装方面。系统软件设计过程中采用分层结构,与硬件操作相关的层的通信采用单独通信模块完成,这些层次之间通过层间接口进行通信,层间接口在设计过程中对输入的参数全部进行有效性检查(指针有效性、数值有效性、逻辑有效性检查等)。在数据封装方面,对与上位机通信和DP网络通信两个子系统分别进行编程,分别提供各个子系统的私有数据,私有数据供模块内部调用,并提供模块间访问接口实现相关数据的共享,这样便可以防止出现模块间数据重名以及编程过程中误修改产生的问题。
纠错设计:网关通信过程中不管是和上位机的通信还是DP网络的通信,采用的都是半双工的RS485通信。相关通信能否顺利进行,取决于数据的正确性和时间两个方面。无论是与上位机通信,还是DP网络的通信,每次对于传输进来的数据都有专门的数据校验模块进行校验,这就避免了在数据有误的情况下仍然进行通信。同时,针对接收超时等问题,也有专门的模块进行处理。
故障恢复设计:采用看门狗技术。系统软件在运行过程中开启硬件看门狗,软件必须在一定的时间内“喂狗”,否则就会导致看门狗对系统的复位。这样防止了因程序跑飞而导致无法恢复的错误。
5 系统实时性
PROFIBUS—DP现场总线作为应用在设备的公共总线,必须解决各节点的网络使用权竞争问题,同时保证通信的实时性。PORFIBUS—DP系统的实时响应时间依赖于max TSDR、采用的传输速率、要交换的数据长度和数量、min_slave_Interval(某一个从站前后2次被主站轮询的最小间隔时间)4个参数。系统的测控周期(又称访问周期)是指控制系统周期性访问网络上同一个节点的时间间隔,是衡量PORFIBUS—DP实时性能的一个重要指标。
一次典型的主从数据交换过程如图4所示。
其中,Tbit表示在总线上传输1位所耗用的时间,是其他时间参数的计量单位。由于PROFIBUS—DP采用UART编码方式,每个字符由11位组成,所以传输一个字符需要11Tbit。
TID1定义了一个发送节点在获得相应信号后的再次发送下一个信息帧所需的最短时间。
从图4可知,一个报文循环由主动帧(请求或发送/请求帧)和回答帧组成。循环时间由帧传输时间、传输延迟时间和站延迟时间组成。
其中:TReq=a×11Tbit,a为请求/发送帧中的字符个数;TRes=b×11Tbit,b为应答帧中的字符个数;TAsk=1×11Tbit,短应答帧;TS-DR为站延迟时间,指接收方从接到请求到产生响应数据的时间间隔;TTD为传输间隔时间,指一个帧在传输时在发送器和接收器之间的传输介质上经过的最大时间。
本硬件平台中PROFIBUS—DP总线传输速率设置为9.6 kbps,由于是近距离传输,所以TTD=OTbit,Tsdr=11Tbit,TID1=37Tbit,和主站通信的从站最多有244个数据(根据:PROFIBUS—DP协议规定)输入/输出,请求帧中有11个字符数据,则报文循环时间最长为:
可见,在传输速率为9.6 kbps的情况下,一次报文循环的最长时间为297.3ms;从上面这些参数中可以发现,只有TID1能够由主站平台的性能决定,普通的MPU调度所需时间为24.66μs。而在移植Linux操作系统后,由于采用的2.6版本的Linux操作系统使用了新的0(1)的调度算法,大大提高了进程调度能力,同时对于多从站的通信的任务能进行很好的管理和调度,大大增强了主站平台的功能。
5 主站平台性能分析及调试
PROFIBUS—DP主站的主从通信性能主要体现在主从通信速度的快慢和支持的从站数目上。由于本实验室的从站数目有限,搭建的测试平台目前只有3个PROFIBUS—DP从站(ET200S、MM420和自主设计的从站),如图5所示。
本次测试的传输速率选定为9.6 kbps,同时对3个从站进行组态,分别测试移植Linux操作系统前主站从接收到数据到有数据发出之间的时间ttop,到移植Linux操作系统后主站的响应时间tend;通过实验,从示波器上的测试的图形可以看出ttop的宽度是大于tend的宽度的,具体测量后可知无操作系统下ttop≈4 015.4μs,Linux操作系统tend≈70μs。可见移植Linux操作系统后能使主站的响应时间大大缩短,提高对从站的管理效率。