dp网络中广播站地址的背包dp 二进制优化表达方式

基于PROFIBUS-DP的FCS性能研究及诊断软件开发 - 总线与接口 - 电子工程世界网
基于PROFIBUS-DP的FCS性能研究及诊断软件开发
15:09:55来源: jlck 关键字:&&&&&&
  PROFIBUS是工业自动化领域内市场最高的一种现场总线技术,它包括用于的和用于流程工业领域的PROFIBUS-PA,它是目前我国惟一的现场总线国家标准。随着越来越多工业控制系统采用了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码信号图。
  SHAPE * MERGEFORMAT
  图1 非归零码信号
  每个数据链路层协议数据单元应由一定数量的字符组成,每个字符都是一个用于异步传输的起&&停字符。
  每个字符由11个比特组成,包括1个总是为二进制&0&的起始比特(ST),8个可以是&0&亦可以是二进制数&1&的信息比特,1个可以是二进制&1&也可以是二进制数&0&的偶校验比特(P),1个总是为二进制数&1&的停止比特,如图2所示。
  SHAPE * MERGEFORMAT
  图2 单个字符格式
  接收器的比特同步总是从起始比特的下降沿开始,也就是说,在从二进制&1&转换到二进制数&0&时开始。在比特时间的中间应扫描起始比特和所有后继的比特。在比特时间的中间,起始比特应是二进制数&0&,否则认为同步失败并停止同步过程。以二进制&1&的停止比特来结束字符的同步,如果此时出现二进制数&0&来代替此停止比特,则应认为并报告一个同步差错或字符差错,并应等待下一个起始比特的前导沿。
  1.2 报文格式
  如图3所示,PRFIBUS-DP有以下5种报文格式。其中,SYN为同步周期,它是一个最小的时间间隔,在此时间间隔内,每个站在它可以接收发送/请求报文帧或令牌起始部分之前,应从传输介质接收空闲状态(idle state)(idle=二进制&1&)。同步周期最小为33个线空闲比特;SD为起始定界符,DA是目的地址,SA是源地址,FC是控制帧;是帧校验和,ED为结束定界符,值为16h,L是信息字段长度,其中SD1= 10h,用于请求FDL状态,寻找一个新的活动的站点,报文长度固定,没有数据单元;SD2= 68h,用于SRD服务,报文的数据长度可变;SD3 = A2h,数据单元长度固定(L总为8字节);SD4 = DCh,表示该报文为令牌报文;SC =E5h, 短确认报文。
  SHAPE * MERGEFORMAT
  图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网络中。
  SHAPE * MERGEFORMAT
  图4 PROFIBUS-DP网络实验系统结构图
  2.2 软件开发环境
  软件开发工具为VC++6.0,通过计算机标准,将PROFIBUS&DP报文采集到进行处理。PROFIBUS-DP系统作为实验平台,采用RS485/RS232通信电缆将其RS485的一端接入PROFIBUS-DP网络连接器的背插接口,RS232一端直接接入到PC机的串口。
  2.3 软件系统基本程序框图
  软件系统的程序基本架构流程图如图5所示。
  SHAPE * MERGEFORMAT
  图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-DP报文信息,并可通过工具栏上的记录移动按钮滚动察看记录;右上方&信息面板&是用来显示所有查看报文的详细信息。窗口下半部分以网格形式显示PROFIBUS-DP历史信息。
  若需要打开串口,开始接收PROFIBUS报文信息,则可选择&命令&菜单下的&开始接收&项;若需停止接收PROFIBUS报文信息,则可选择&命令&菜单下的&停止接收&项;若需要配置串口参数,则可选择&命令&菜单下的&串口配置&项,此时将弹出&串口配置对话框&,若需清除当前所有记录,可选择&记录&菜单下的&清除所有记录项&命令,如果需要分类查看各种报文,可以选择&查看&下的&报文查询&,此时将弹出&报文查询对话框&,可根据需要进行报文分类查看。
  图6 软件运行主界面
  3 结束语
  该软件经过作者在PROFIBUS网络实验系统上的反复运行调试,结果表明该软件能够实现对几种PROFIBUS报文进行分析,能够完成采集、显示、分析、存储和查询等功能,为以后的研究开发奠定了基础,同时具有一定的实用价值。
关键字:&&&&&&
编辑:什么鱼 引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。每日登录:+1西币&+1积分
&下次自动登录
绑定第三方账号登录 & & &
扫描二维码登录支持中心移动端
获取动态密码
售前文档售后文档热门视频系列热门版区售后服务概述自助服务帮助信息
You are here:
如何理解DP网络的串联
热点活动:
置评已完成,谢谢!
您现在可以为该问题添加标签。
如何理解DP网络的串联
- 已解决问题
都说DP网络是串联,如何理解这个串联,从DP插头来看,进线-设备-出线??如果是,为什么我拔掉DP头后(中间节点),只有这个设备报通讯故障,其他的没有呢
产品版区:
悬赏分:20 | 解决时间: 22:42:35 | 提问者:& - 学长&nbsp&nbsp第2级
问题ID:62033
在回答你的问题之前必须要要搞清一个通信的基本概念“串行通信”,串行通信是通过一根导线将发送方与接收方进行连接,传输数据的每个二进制位,按照规定的顺序在同一导线上依次发送和接收。串行通信的特点是通信控制复杂,但通信电缆少,成本低。PROFIBUS-DP现场总线通信就是利用RS-485标准串行接口通信方式,利用PROFIBUS电缆中两根线连接到PROFIBUS接头(DP总线只需9针中的3和8引脚),DP网络使用串行通信,所以DP从站挂在DP网络上,但并不是串联连接,这是两个不同的概念。DP网络中主站与DP从站之间的通讯基于主--从原理,即主站向从站发出请求,按照站号(DP地址)顺序轮询从站。西门子的专用PROFIBUS电缆中有两根线,一根为红色,上面标有“B’,一根为绿色,上面标有”A’,这两根线只要与DP网络接头上相对应的“A”和“B’接线端子相连即可;从主站出发,每个DP网络接头上都有四个接线端A1,B1(与主站或上一个DP从站相连接),A2,B2(连接下一个从站),并且都有一个末端电阻,DP从站在中间末端电阻置”OFF“,首尾端置”ON“;中间的DP从站只是一个DP网络节点,如果拔掉DP通信连接头,DP网络仍然正常通信(通过DP接头穿过),并没有从此节点断开,只是此DP从站不存在而已,CPU报分布式I/O故障,如果下载OB86块到CPU,CPU正常工作,只是其上SF红灯亮,从此可以看出DP网络并不是串联,如果串联,其中任何一个节点断开,系统不可能正常通讯。
顶级工程师&nbsp&nbsp第12级&
以下网友赞了您的问题:
填写您的评论...
提问者对于答案的评价:看来还得找点通讯基础的书看看
看了这个问题的网友还看了
本版相关问题
本版精华问答
等您来回答
作者/最新回复
最后回复时间
看起来像是串联的,其实是并联的。
- 中级工程师&nbsp&nbsp第10级
& 18:37:43
1、profibus总线是紫色的屏蔽双绞线,两芯线分别是红色和绿色,和总线连接器连接的时候要按颜色来接线,一般A1、A2为绿色,B1、B2为红色。&2、profibus总线上的设备都是一进一出串联起来的,所以终端的两个设备都是接总线连接器的进线端(A1和B1),中间的设备都是进线接A1、B1,出线接A2、B2.&3、终端电阻拨码的位置是两端的设备(就是只有进线的设备)打到“ON”的位置,中间的设备打到“OFF”的位置,原因如下,每个总线连接器上都有一个200欧姆的终端电阻,只有两端的设备才需要连接终端电阻,目的是总线上的阻抗匹配,减少信号衰减,当终端电阻在ON的位置时,A1、B1和终端电阻联通,和A2、B2断开,当终端电阻在OFF的位置时,A1、B1和终端电阻断开,和A2、B2联通。&4、接线完毕之后,你最好拿万用表来检查一下接线,A1、B1和总线连接器前面的管脚3和8是联通,所以你需要把两端插头的管脚3之间和管脚8之间量一下是否连通,然后3和8之间的电阻是否在110欧姆左右(因为连端都连接终端电阻,相当于两个220欧姆的电阻并联)。&回答者:&yhk&-&初级工程师&&第9级&&&09:16
- 中级工程师&nbsp&nbsp第10级
& 18:40:51
!!!也许你可以这样理解:这个串联不能将它想成网络的串联,网络还是并联关系的,比如一个PLC主站挂几个DP从站等,几个从站对于PLC主站来说是并联关系的。这个串联应该是接线的串联。接DP线时你应该可以发现,中间的都会将DP接头上的拨开关打到OFF档。这样的话就相当于一条连通的线了。也就是将它们串联起来了。当一个站丢失时是会报错的,但是如果你将它打到ON档时,即使DP头接的很牢有时会出现丢站的报错。
- 初级技术员&nbsp&nbsp第5级
& 20:04:35
其实说的串联是指的他的链接方式&,&就一根线网线把所有的站点都连起来了。。。你不要把电路中的串联和这个同样理解,这里你断掉一个站&&但是其他的站还是链接着,&不和电路里面的短路一样
- 中级技术员&nbsp&nbsp第6级
& 20:52:27
网络当然是串联的,可是如果你看一下DP的接头就会发现当终端电阻在OFF状态下进出两根线是互相短接的,所以你拔下DP头网络并没有断。可是如果你把DP线拆下那么其后面的全部掉线。DP接头原理见
- 高级技术员&nbsp&nbsp第7级
& 20:56:17
“在一条PROFIBUS总线上,位于总线中间的站点掉电,从电路连接上不会影响整个网络的通信功能,如果设备检修而要停掉总线两端任一站点,这将失去终端电阻的功能,使整个网络通信中断。”在《西门子工业网络通信指南》上册里有提到,但是对于为什么“位于总线中间的站点掉电,从电路连接上不会影响整个网络的通信功能”没看到官方解释。提醒你一点:当你拔掉DP头后,只要终端电阻打到OFF,这根DP线还是通的,相当于DP头把两根DP线连接起来了。
- 初级工程师&nbsp&nbsp第9级
& 21:11:26
DP网络通讯上的站点是电路上是并联在一起,也就是所有站点都是并联在DP总线上,这样即使有一个站点断掉,也不会影响到其他的站点通讯情况。
- 高级技术员&nbsp&nbsp第7级
& 22:59:55
楼上解释的很好,收藏了!
- 助理工程师&nbsp&nbsp第8级
& 23:41:33
上一页1下一页&
扫描打开手机版
支持中心新发布“关注”功能了!实时查看彼此动态,更方便地进行技术交流。
不管是“关注”与“被关注”,相信都是一个美好的开始!
还有多重奖励派送,快快行动起来吧!
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!相关文章推荐
对于一串自然数序列0,1,2,3,4,5,6......,n。
冰神给了你一个任务,就是求,0到n中,所有自然数的二进制码中的‘1’的个数
举个例子:当n=5的时候
orz Shallwe
题目来源:https://vjudge.net/problem/HDU-5014
给出一个n,外加一个0-n无序序列(n+1个数),给出一个公式:
t=a[0]^b[0]+a[1]^b...
时间限制:1000ms
单点时限:1000ms
内存限制:256MB
Once upon a time, there was a little dog YK. One day, he w...
1318 : 非法二进制数时间限制:10000ms
单点时限:1000ms
内存限制:256MB
如果一个二进制数包含连续的两个1,我们就称这个二进制数是非法的。小Hi想知道在所有 n ...
Wavel Sequence
Time Limit:
MS (Java/Others)
Memory Limit: 288 K (Java/Others)...
分梨子时间限制: 1 Sec
内存限制: 64 MB题目描述  Finley家的院子里有棵梨树,最近收获了许多梨子。于是,Finley决定挑出一些梨子,分给幼稚园的宝宝们。可是梨子大小味道都不太一样...
数位dp的题, 难
In xPath1.0, evaluation of expression will return one of the four basic results, one is node-set the...
在使用hibernate保存数据的时候,出现了could not get next sequence value这个错误,这个错误的意思就是找不到序列中的下一个值。解决这个问题具体按如下分析:
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)DP000002 TCP_IP协议与子网规划ISSUE1.0_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
DP000002 TCP_IP协议与子网规划ISSUE1.0
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩39页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢zoj 3471【二进制压缩状态DP】
编辑:www.fx114.net
本篇文章主要介绍了"zoj 3471【二进制压缩状态DP】",主要涉及到zoj 3471【二进制压缩状态DP】方面的内容,对于zoj 3471【二进制压缩状态DP】感兴趣的同学可以参考一下。
http://acm./onlinejudge/showProblem.do?problemCode=3471
位运算的确很神的说。。。
我这里用1代表爆了,0代表没爆,用二进制记录每种状态,废话少说,上代码。
#include &vector&
#include &list&
#include &map&
#include &set&
#include &string.h&
#include &deque&
#include &stack&
#include &bitset&
#include &algorithm&
#include &functional&
#include &numeric&
#include &utility&
#include &sstream&
#include &iostream&
#include &iomanip&
#include &cstdio&
#include &cmath&
#include &cstdlib&
#include &ctime&
#define LL long long
#define pi acos(-1)
#define INF
#define eps 1e-8
//****************************************
//Author: leolin
//****************************************
int m[15][15];
int dp[(1&&10)+10];
int main()
while(scanf(&%d&,&n) && n)
int i,j,k;
for(i=0;i&n;i++)
for(j=0;j&n;j++)
scanf(&%d&,&m[i][j]);
int M=1&&n;
for(i=0;i&M;i++)dp[i]=0;
for(k=0;k&M;k++)
for(i=0;i&n;i++)
if((k&(1&&i))==0)//i is not bao!
for(j=0;j&n;j++)
if(i!=j && (k&(1&&j))==0 )//j is bao!
dp[k|(1&&j)]=max( dp[k]+m[i][j],dp[k|(1&&j)]);
int ans=0;
for(i=0;i&M;i++)
ans=max(ans,dp[i]);
printf(&%d\n&,ans);
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:}

我要回帖

更多关于 以二进制方式读取文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信