基于PROFIBUSDP的FCS性能研究及诊断软件的开发摘要分析了PROFIBUSDP传输协议与报文结构设计了一种基于串口通信的PROFIBUSDP总线性能分析与诊断软件给出了程序的实现方法和关键技术在PROFIBUSDP实验平台上进行了运行调试结果表明该软件运行良好可以基本完成对PROFIBUSDP报文采集分析和存储等功能关键词现场总线通信协议报文串口ThedesignofsoftforanalyseandthestudyofFCSsperformancebasedonPROFIBUSDPCaoXuehua11ShanghaiArcelCoLtdJiadingShanghai201801CHINAAbstractIntroducedcommunicationprotocolandmessagestructureofPROFIBUSDPdesignedonesoftwarebasedonserialportcommunicationThesoftwarecananalyzeanddiagnosetheperformanceofPROFIBUSDPPresentedthemethodandthekeyfunctionstechniqueThesoftwareisrunonthecommunicationnetworkplatformThedebuggingresultsindicatethatthesoftwarecangatheranalyseandmemorizesomekindofmessageofPROFIBUSDPKeywordsFieldBusPROFIBUScommunicationprotocolmessageserialport0引言PROFIBUS是工业自动化领域内市场占有率最高的一种现场总线技术它包括用于制造业自动化的PROFIBUSDP和用于流程工业领域的PROFIBUSPA它是目前我国惟一的现场总线国家标准随着越来越多工业控制系统采用了PROFIBUS现场总线技术对这些控制系统进行具体的直观的和实时的在线分析与诊断成为了最基本的要求要想完成这样的任务就需要有相应的工程分析诊断工具国内外目前所研究的这些总线性能分析诊断工程工具存在着功能不够全面界面不够完善价格昂贵不适合中国国情等问题开发一款能够对总线系统进行分析和诊断方便的性能价格比高的分析诊断工程工具必将成为急需的产品由于在PRIFBUS传输报文可以反映出总线性能的很多参数包括各种故障状态比如从参数化报文可以看出主站和从站的关系从站的操作方式包括通道参数功能设定装置参数和ID号等从组态报文可以看出从站I0类型及性质以及模块的IO性质及数据类型等从诊断报文可以看出从站各种参数设置错误各种组态错误以及装置模块错误类型所以本文作者就是在对PROFIBUSDP报文进行详尽分析的基础上采用VC60开发了一款基于串口通讯的PROFIBUS性能分析诊断软件PROFIBUS工作机理11PROFIBUSDP编码技术PROFIBUSDP交换数据使用异步传输技术和NRZ编码NRZ编码的二进制信号0或1的信号电平在信号持续期间维持不变图1所示为NRZ码信号图起始位0101101奇偶校验位停止位0图1非归零码信号每个数据链路层协议数据单元应由一定数量的字符组成每个字符都是一个用于异步传输的起停字符每个字符由11个比特组成包括1个总是为二进制0的起始比特ST8个可以是二进制数0亦可以是二进制数1的信息比特1个可以是二进制1也可以是二进制数0的偶校验比特P1个总是为二进制数1的停止比特如图2所示图2单个字符格式接收器的比特同步总是从起始比特的下降沿开始也就是说在从二进制1转换到二进制数0时开始在比特时间的中间应扫描起始比特和所有后继的比特在比特时间的中间起始比特应是二进制数0否则认为同步失败并停止同步过程以二进制1的停止比特来结束字符的同步如果此时出现二进制数0来代替此停止比特则应认为并报告一个同步差错或字符差错并应等待下一个起始比特的前导沿12报文格式如图3所示PRFIBUSDP有以下5种报文格式其中SYN为同步周期它是一个最小的时间间隔在此时间间隔内每个站在它可以接收发送请求报文帧或令牌起始部分之前应从传输介质接收空闲状态idlestateidle二进制1同步周期最小为33个线空闲比特SD为起始定界符DA是目的地址SA是源地址FC是控制帧FCS是帧校验和ED为结束定界符值为16hL是信息字段长度其中SD110h用于请求FDL状态寻找一个新的活动的站点报文长度固定没有数据单元SD268h用于SRD服务报文的数据长度可变SD3A2h数据单元长度固定L总为8字节SD4DCh表示该报文为令牌报文SCE5h短确认报文发送的比特序列有效信息比特0b1b2b3b4b5b6b7b8P11st234567891011th20LSB27MSB起始比特ST八位位组偶数奇偶校验比特停止比特SP图3PROFIBUSDP链路层报文格式报文诊断软件的实现实验平台图4为作者组建的PROFIBUSDP网络实验系统结构图在网络系统中1类主站为SIEMENS公司的CPU3152DPPLCPC工控机作为2类主站通过现场总线接口卡CP5611与DP总线相连WAGO公司的750333BECKHOFF公司的BK3120SIEMENS公司的ET200L及和利时公司的LM3107PLC等PLC设备作为从站连接到DP网络中图4PROFIBUSDP网络实验系统结构图软件开发环境软件开发工具为VC60通过计算机标准串口通信将PROFIBUSDP报文采集到上位机进行处理PROFIBUSDP系统作为实验平台采用RS485RS232通信电缆将其RS485的一端接入PROFIBUSDP网络连接器的背插接口RS232一端直接接入到PC机的串口软件系统基本程序框图软件系统的程序基本架构流程图如图5所示二类主站IPCCP5611WAGO750333BECKHOFFBK3120SIEMENSET200LPROFIBUSDPPLCHOLLIASM3107一类主站PLCS7300SD2LELErSDrDASAFCDSAPSSAPDUFCSEDSD1DASAFCFCSEDSD3DASAFCDUFCSEDSD4DASASCSYNSYNSYNSYN无数据字段固定长度的报文格式LLL有数据字段固定长度的报文格式有可变数据字段固定长度的报文格式主要用于SRD服务报文令牌报文格式短确认报文格式图5基本程序框架流程图整个系统软件包括如下几个模块1程序主控模块负责实现程序逻辑与主界面调用串口通信模块和接收显示模块2串口通信模块负责实现串口通信任务PROFIBUSDP报文数据采集及串口参数设置3数据处理模块根据PROFIBUSDP协议报文格式将采集上来的数据按报文格式进行处理并存入临时缓冲区4接收显示模块负责实现接收数据的处理与显示5数据库模块及数据查询模块用来实现对采集到报文的历史数据的分析和查询24关键技术该软件主要是实现对PROFIBUS报文进行提取实现在线采集PROFIBUSDP报文数据从数据链路层角度对各种报文进行分析完成各种类型报文的显示完成对报文种类服务类型地址数据长度及数据单元等信息的提取显示并对诊断报文参数化报文及组态报文等的数据单元进行详细的分析得出总线性能的各种参数及故障原因将分析过的数据存储进数据库存入临时缓冲区根据需要将分析过的报文信息存入数据库实现历史查询如何实现报文帧的提取是本软件设计的一个关键问题由于PROFIBUS报文格式有很多种而且包括数据长度不固定的可变报文虽然各种报文都具有固定的报头报尾但是存在的问题是报头报尾并不是特定的字符有可能和报文中数据单元内容一样所以这里利用报头报尾进行报文的提取是不可行的作者在这里利用各种报文帧前的同步字符进行报文提取也就是说在每个完整报文帧传输之前其前面都有一个不小于33bit的同步时间在报文帧中间是没有任何间隔的利用这一同步时间在VC中利用超时函数对报文帧进行了完整地提取另外由于通信数据量很大速度较快这里采用了WINDOWS多线程技术一个线程为监视线程监视串口通讯一个为数据处理主线程另外一个为定时刷新数据库线程当监视线程监视到串口中有数据到达时就触发一个消息通知数据处理主线程数据处理主线程开始初始化串口开始接收根据协议格式进行数据处理将处理好的数据添加到数据库并在界面实时显示出来按报文类型进行查询结束打开串口关闭串口是否就去串口缓冲区中取出数据并进行数据处理定时器线程定时刷新数据库显示以实现实时显示功能作者在程序编写的过程中出现数据库不能实时刷新的情况后来发现问题出在WINDOWS的WMTIMER定时器上由于该定时器消息优先级较低可能造成WMTIMER消息的丢失所以不能实现数据库的实时刷新解决的方法是采用WINDOWS的多媒体定时器在使用多媒体定时器的过程中定时间隔的选取又是一个关键的问题定时间隔选取太小将会耗费大量的CPU内存造成系统死机定时间隔选取太大又不能完成实时显示功能这里又涉及到PROFIBUS总线信息循环时间的问题总线信息循环时间与总线传输的波特率从站的数量IO数据的数量从站需要的延迟时间以及主站的空闲时间等有关作者通过了大量的计算和多次实验调试寻找到一个合适的定时器间隔25显示界面该PROFIBUSDP报文分析软件的程序界面包括主界面串口配置界面报文过滤界面报文查询界面数据库存储界面以及历史查询界面等PROFIBUSDP分析诊断软件的运行主界面如图6窗口左上部分当前profibus报文组框内存放最近采集到的PROFIBUSDP报文信息并可通过工具栏上的记录移动按钮滚动察看记录右上方信息面板是用来显示所有查看报文的详细信息窗口下半部分以网格形式显示PROFIBUSDP历史信息若需要打开串口开始接收PROFIBUS报文信息则可选择命令菜单下的开始接收项若需停止接收PROFIBUS报文信息则可选择命令菜单下的停止接收项若需要配置串口参数则可选择命令菜单下的串口配置项此时将弹出串口配置对话框若需清除当前所有记录可选择记录菜单下的清除所有记录项命令如果需要分类查看各种报文可以选择查看命令菜单下的报文查询此时将弹出报文查询对话框可根据需要进行报文分类查看图6软件运行主界面3结束语该软件经过作者在PROFIBUS网络实验系统上的反复运行调试结果表明该软件能够实现对几种PROFIBUS报文进行分析能够完成采集显示分析存储和查询等功能为以后的研究开发奠定了基础同时具有一定的实用价值参考文献中华人民共和国机械行业标准测量和控制数字数据通信工业控制系统用现场总线类型3PROFIBUS规范M北京机械工业出版社2006王永华AndyVerwer现场总线技术及应有教程M从PROFIBUS到ASi北京机械工业出版社2006IECDigitaldatacommunicationsformeasurmentandcontrolFieldbusforuseinindustrialcontrolsystemsPart3DataLinkLayerservicedefinitionMThirdedition199910IECDigitaldatacommunicationsformeasurmentandcontrolFieldbusforuseinindustrialcontrolsystemsPart4DataLinkLayerprotocolspecificationMThirdedition199910陈幼平周砚陈冰等基于CPLD的ProfibusDP报文接收器的设计J测控技术2005246吴方余周勇一种基于数据库的串口数据采集保存方案J计算机与现代化200510龚建伟雄光明VisualCTurboC串口通信编程实践M电子工业出版社2004上海安科瑞电气股份有限公司地址上海市嘉定区马东工业园区育绿路253号技术支持徐敏1391711906502169158332服务热线8008206632邮编201801传真02169158303