Profibus总线是现在在工业自动化范畴内市场占有率最高的一种现场总线技能,Profibus总线包含了用于制造业自动化的Profibus-DP和用于流程工业范畴的Profibus-PA以及用于工厂办理自动化的Profibus-FMS,它是现在我国专一的现场总线国家规范。
跟着越来越多工业操控体系选用了Profibus现场总线技能,对这些操控体系进行具体的、直观的和实时的在线剖析与确诊成为了最根本的要求,要想完结这样的使命,就需求有相应的工程剖析确诊东西。国内外现在所研讨的这些总线功用剖析确诊工程东西存在着功用不行全面、界面不行完善、价格昂贵、不适合中国国情等问题。开发一款能够对总线体系进行剖析和确诊,便利的、功用价格比高的剖析确诊工程东西必将成为急需的产品。
因为在PRIFBUS传输报文能够反映出总线功用的许多参数,包含各种毛病状况。比方:从参数化报文能够看出主站和从站的联系,从站的操作办法,包含通道参数、功用设定、设备参数和ID号等。从组态报文能够看出从站I/0类型及性质,以及模块的I/O性质及数据类型等。从确诊报文能够看出从站各种参数设置过错,各种组态过错,以及设备模块过错类型。所以,本文作者便是在对Profibus-DP报文进行翔实剖析的基础上,选用VC++ 6.0开发了一款依据串口通讯的Profibus功用剖析确诊软件。
1 Profibus作业机理
1.1 Profibus-DP编码技能
PROFIBUS-DP交流数据运用异步传输技能和NRZ编码。NRZ编码的二进制信号“0”或“1”的信号电平在信号继续期间保持不变。图1所示为NRZ码信号图。
图1 非归零码信号
每个数据链路层协议数据单元应由必定数量的字符组成,每个字符都是一个用于异步传输的起——停字符。
每个字符由11个比特组成,包含1个总是为二进制“0”的开端比特(ST),8个能够是二进制数“0”亦能够是二进制数“1”的信息比特,1个能够是二进制“1”也能够是二进制数“0”的偶校验比特(P),1个总是为二进制数“1”的中止比特,如图2所示。
图2 单个字符格局
接纳器的比特同步总是从开端比特的下降沿开端,也便是说,在从二进制“1”转换到二进制数“0”时开端。在比特时刻的中心应扫描开端比特和一切后继的比特。在比特时刻的中心,开端比特应是二进制数“0”,不然以为同步失利并中止同步进程。以二进制“1”的中止比特来完毕字符的同步,假如此刻呈现二进制数“0”来替代此中止比特,则应以为并陈述一个同步过失或字符过失,并应等候下一个开端比特的前导沿。
1.2 报文格局
如图3所示,PRFIBUS-DP有以下5种报文格局。其间,SYN为同步周期,它是一个最小的时刻距离,在此刻刻距离内,每个站在它能够接纳发送/恳求报文帧或令牌开端部分之前,应从传输介质接纳闲暇状况(idle state)(idle=二进制“1”)。同步周期最小为33个线闲暇比特;SD为开端定界符,DA是意图地址,SA是源地址,FC是操控帧;FCS是帧校验和,ED为完毕定界符,值为16h,L是信息字段长度,其间SD1= 10h,用于恳求FDL状况,寻觅一个新的活动的站点,报文长度固定,没有数据单元;SD2= 68h,用于SRD服务,报文的数据长度可变;SD3 = A2h,数据单元长度固定(L总为8字节);SD4 = DCh,表明该报文为令牌报文;SC =E5h, 短承认报文。
图3 PROFIBUS—DP链路层报文格局
2 报文确诊软件的完结
2.1 试验渠道
图4为作者组成的PROFIBUS-DP网络试验体系结构图。在网络体系中,1类主站为SIEMENS公司的CPU315-2DP PLC,PC工控机作为2 类主站,经过现场总线接口卡CP5611与DP 总线相连, WAGO公司的750-333、BECKHOFF公司的BK3120、SIEMENS公司的ET200-L及和利时公司的LM3107 PLC等PLC设备作为从站连接到DP网络中。
图4 PROFIBUS-DP网络试验体系结构图
2.2 软件开发环境
软件开发东西为VC++6.0,经过核算机规范串口通讯,将PROFIBUS—DP报文收集到上位机进行处理。PROFIBUS-DP体系作为试验渠道,选用RS485/RS232通讯电缆将其RS485的一端接入PROFIBUS-DP网络连接器的背插接口,RS232一端直接接入到PC机的串口。
2.3 软件体系根本程序框图
软件体系的程序根本架构流程图如图5所示。
图5根本程序结构流程图
整个体系软件包含如下几个模块:
1)程序主控模块:担任完结程序逻辑与主界面,调用串口通讯模块和接纳显现模块。
2)串口通讯模块:担任完结串口通讯使命,PROFIBUS-DP报文数据收集及串口参数设置。
3)数据处理模块:依据PROFIBUS-DP协议报文格局,将收集上来的数据按报文格局进行处理,并存入暂时缓冲区。
4)接纳显现模块:担任完结接纳数据的处理与显现。
5)数据库模块及数据查询模块,用来完结对收集到报文的前史数据的剖析和查询。
2.4 要害技能
该软件主要是完结对PROFIBUS报文进行提取,完结在线收集PROFIBUS-DP报文数据,从数据链路层视点对各种报文进行剖析,完结各品种型报文的显现,完结对报文品种、服务类型、地址、数据长度及数据单元等信息的提取显现,并对确诊报文、参数化报文及组态报文等的数据单元进行具体的剖析,得出总线功用的各种参数及毛病原因,将剖析过的数据存储进数据库,存入暂时缓冲区,依据需求将剖析过的报文信息存入数据库,完结前史查询。
怎么完结报文帧的提取是本软件设计的一个要害问题。因为PROFIBUS报文格局有许多种,并且包含数据长度不固定的可变报文。尽管各种报文都具有固定的报头、报尾,可是存在的问题是报头报尾并不是特定的字符,有或许和报文中数据单元内容相同,所以这儿运用报头报尾进行报文的提取是不可行的。作者在这儿运用各种报文帧前的同步字符进行报文提取,也便是说,在每个完好报文帧传输之前,其前面都有一个不小于33bit的同步时刻,在报文帧中心是没有任何距离的,运用这一同步时刻,在VC++中运用超时函数,对报文帧进行了完好地提取。
别的,因为通讯数据量很大,速度较快,这儿选用了WINDOWS多线程技能。一个线程为监督线程,监督串口通讯,一个为数据处理主线程,别的一个为守时改写数据库线程。当监督线程监督到串口中有数据抵达时,就触发一个音讯告诉数据处理主线程,数据处理主线程就去串口缓冲区中取出数据,并进行数据处理。守时器线程守时改写数据库显现,以完结实时显现功用。
作者在程序编写的进程中,呈现数据库不能实时改写的状况,后来发现问题出在WINDOWS的WM_TIMER守时器上,因为该守时器音讯优先级较低,或许形成WM_TIMER音讯的丢掉,所以不能完结数据库的实时改写。处理的办法是选用WINDOWS的多媒体守时器。在运用多媒体守时器的进程中,守时刻隔的选取又是一个要害的问题,守时刻隔选取太小,将会消耗很多的CPU内存,形成体系“死机”, 守时刻隔选取太大,又不能完结“实时”显现功用。这儿又涉及到PROFIBUS总线信息循环时刻的问题,总线信息循环时刻与总线传输的波特率、从站的数量、I/O数据的数量、从站需求的延迟时刻以及主站的闲暇时刻等有关。作者经过了很多的核算和屡次试验调试,寻觅到一个适宜的守时器距离。
2.5 显现界面
该PROFIBUS-DP报文剖析软件的程序界面包含主界面、串口装备界面、报文过滤界面、报文查询界面、数据库存储界面以及前史查询界面等。
PROFIBUS-DP剖析确诊软件的运转主界面如图6,窗口左上部分“当时profibus报文”组框内寄存最近收集到的PROFIBUS-DP报文信息,并可经过东西栏上的记载移动按钮翻滚观察记载;右上方“信息面板”是用来显现一切检查报文的具体信息。窗口下半部分以网格方式显现PROFIBUS-DP前史信息。
若需求翻开串口,开端接纳PROFIBUS报文信息,则可挑选“指令”菜单下的“开端接纳”项;若需中止接纳PROFIBUS报文信息,则可挑选“指令”菜单下的“中止接纳”项;若需求装备串口参数,则可挑选“指令”菜单下的“串口装备”项,此刻将弹出“串口装备对话框”,若需铲除当时一切记载,可挑选“记载”菜单下的“铲除一切记载项”指令,假如需求分类检查各种报文,能够挑选“检查”指令菜单下的“报文查询”,此刻将弹出“报文查询对话框”,可依据需求进行报文分类检查。
图6 软件运转主界面