简单Profibus/DP实验系统的组建
简单Profibus/DP实验系统的组建 |
Writed by 远方 DND-DeviceNet
引言: 为了让更多刚接触到Profibus系统的朋友能对Profibus的网络架构及系统运行机制有一个整体的认识,笔者根据自身的运用经历编写这篇文章,以期望能带领各位读者快速进入到Profibus的世界。 本文所采用的系统是Siemens S7 300的CPU,加上ET200M并带AI和DI模块,另加一Siemens MMX420变频器带Profibus接口板组成。系统的目的是实现远程控制变频器启动,停止,及频率给定的操作,并实现变频器参数的访问。
|
六、数据监控
上面的几章,已经完成了整个Profibus/DP系统的实现,为进一步的了解DP的工作机制,此章的重点将是数据的监控与分析,通过PLC的一些监视功能及加入我们自己的一些辅助手段,可以很清楚的观测到整个DP总线运行的过程。此章是理解DP运行机制及进行DP从站开发的重点。
当确定梯形图程序已经正确在PLC中运行,将PLC的KEY拨到RUN。在梯形图编辑窗口,选择菜单PLC -> Monitor/Modify Variables,可以启动变量监视窗口。如图,在窗口的Address栏位输入需要监视的变量的地址。我们输入MW40到MW46,此4 Words为我们试先写入准备用来访问变频器的数据。最后再输入MW10,此地址存放的是我们写数据到变频器的操作的返回值,如果操作正确此值为0。
点击菜单Variable -> Monitor或按Ctrl+F7或点击眼镜图标,开始监视所输入的地址的变量值。 |
|||
从监视的结果中,我们看到MW40的值为12BCHEX,接下去的3 words的值都为0,这与我们试先写入的值相符,另外,MW10的返回值为0,则表示送数据到变频器的操作成功。 | |||
接着,我们输入MW30到MW36的位址,此位址存放从变频器读回来的数据。后面接着再输入MW12,这个位址存放从变频器读数据回来的操作是否成功,为0则表示成功。
从数据中,我们可以看到,MW30为12BCHEX,与发送的相同,MW32,MW34为0,MW36值为0006HEX,这个位址表示从变频器读回来的参数值,即我们需要读取的参数量0700的值为6。 MW12为0表示此读数据操作成功。 同理,可以使用此方法去监视不同的其它变量。 |
|||
也许我们更关心DP总线上面的数据,上面看到的数据都是由PLC内存区里面提取的,那么,作为DP从站,PLC是如何把数据送达到变频器,而变频器又是如何将数据送回给PLC的呢?
这些部分都是由Profibus/DP总线的协议来完成的。 Profibus/DP协议是一个复杂的通讯协议,在此我们只作简单的概述,以方便描述其数据通讯的过程。 |
|||
首先我们来看看Profibus的重要电文结构 | |||
(1)令牌信息。
Profibus支持多主站系统,每个主站按时间分配其总线控制权,使用令牌在主站之间传递信息,如果主站获得上一个主站传递来的令牌,则立即有对总线的控制权,当其令牌时间到达,则使用此电文将令牌传递给下一个主站。 |
SD4 = 0XDC,DA = 目标地址,SA = 源地址 |
||
(2)FDL状态请求电文。
在进行Cyclic 数据交换之前,主站间通讯,主站与从站间通讯都交由FDL状态请求电文来实现。 |
SD1 = 0X10,FC = 功能码 (Function Code)FCS = 帧检查顺序 (Frame Check Sequence) |
||
|
|||
我们继续了解DP从站的状态机制。一个DP的从站有四种状态:No Power、WAIT_PRM、WAIT_CFG、DATA_EXCH。
当从站Power On,如果从站支持Set_Slave_Add报文,则处理此报文,如果不支持,则跳过。此时,从站等待主站的请求诊断电文(Slave_Diag),然后把自己的状态告知主站,此时从站进入WAIT_PRM状态,主站知道从站正在等待参数化(Parameterization)报文,于是就会发出参数化报文。从站收到后取出报文中的参数对自身进行配置,并立即进入WAIT_CFG状态,主站继续送Configuration的报文到从站,Configuration报文里所带的数据主要是从站IO长度的数据,它表明从站可与主站进行的PKW和PZD的IO数据长度各是多少。从站会将此数据与自身比对,如果符合自身所支持的某一个格式,则配置通讯格式。最后主站会使用(Slave_Diag)报文来再次获取从站的状态,如果从站配置成功,则进入DATA_EXCH状态,此时主站知道从站已经在等待进行IO数据交换,立即会发送IO数据报文与从站进行数据交换。这样的数据交换被称为Cyclic数据交换,会一直持续下去。 |
|||
接下来,我们找寻一些方法,来抓取DP总线上实际在运行的数据,分析整个数据交换的过程。
由于Profibus采用高速的RS485通讯,但支持的频率范围从9.6Kbit/s到12Mbit/s,故我们在低速(9.6Kbit/S)的情况下,可以使用PC的COM口来采集总线上面的数据。具体的实现方法很简单,我们用一个RS485到RS232的转换模块,如研华的Data Acquisition Modules ADAM-4520 RS232 to RS485 isolated converter,将PC与总线相连接,DP总线的A和B分别接到converter的输入(注意数据的方向),转换模块需要9V的DC供电。另一端与PC相连,为使用简单,我们使用CVFD软件的数据接收功能来接收总线上面的数据。 Profibus的数据为11bit,数据格式为<8,E,1>,这里我们要设定baud rate 为9.6K,因前面配置Profibus网络的时候,我们设定了速率为9.6Kbit/s,选择RTU模式。
点击START,开始接收数据,这时总线上面的所有数据就被采集到PC上了。为了我们可以看到一个从站连接的全过程,我们将MMX的总线接头拨下,然后再插上插头,这样我们可以看到MMX与主站进行连接的过程。当拨下插头时,主站会报错误SF和BUSF,再行插上插头的时候,BUSF消失,但SF还是亮RED,这时我们要将程序复位,将PLC的KEY拨回STOP,再拨到RUN即可消除。 |
|||
接下来我们对所采集的数据进行整理及分析。点击介面上的Save to file按钮,将数据保存到PC硬盘上,此例中的文件可以从这里下载(data.txt 55.2KB)。 | |||
首先我们来看看Profibus数据电文的DSAP和SSAP(服务存取点)的功能分配:
SSAP为源服务存取点,都为62(0X3E)。而DSAP为目标服务存取点,不同的DSAP表示主站想要进行的不同的动作。我们常用的DSAP为如下几种: 58(0X3A)Global_Control 60(0X3C)Slave_Diag 61(0X3D)Set_Prm 62(0X3E)Chk_Cfg Default:Data_Exchange Global_Control用于广播信息及全局控制,一般发送的目标地址(DA)为0XFF。 Slave_Diag用于请求从站的诊断信息,以获取从站目前的状态。 Set_Prm传送必要的参数及用户自定义扩展参数给从站,用户自定义扩展参数可以在GSD文件中试先写好,主站会将这些参数送给从站,从站接收后自行进行处理及相应的配置。 Chk_Cfg是Congfiure报文,里面包含了从站所要进行的IO数据交换的信息,如PKW及PZD的长度。 Data_Exchange用于Cyclic IO数据交换,此为默认的SAP,故在Cyclic 数据报文中,无DSAP 也无SSAP。 有关各种报文的数据所表达的详细意义,请查阅文件(ProfibusDP.pdf 1.45M)。 |
|||
接下来我们对所采集的数据进行分析整理,然后抓取出对我们有用的数据进行分析。
首先我们按照上述的数据报文结构对数据进行换行处理,存在四种报文:令牌(0XDC开头),FDL状态请求(0X10开头),数据交换(0X68开头),短应答(0XE5),FDL与数据报文都以ED[0X16]结尾。然后根据电文中DA及SA的信息,我们去除节点3(ET200M)与主站之间产生的报文,只保留节点0X10(MMX)与主站之间产生的报文。 [01]主站扫描其它是否有新的节点加入。主站从站地址1开始往上扫描,到126止,当前扫描地址0X6A(106)。 [02]令牌传送报文。主站之间传递令牌信息,如果总线上面只有一个主站,也会进行令牌传送,只不过从自己传到自己。 [03]主站请求诊断信息报文,主站要获取从站16(MMX)的信息,DSAP = 0X3C(Slave_Diag),但此时从站未接上,故无应答。主站会一直发送此信息,直到从站有应答。 [08][09]从站16接上总线,进行应答。请参阅上面的附件对报文的数据进行解读。 [14][15]主站发送参数化报文DSAP = 0X3D(Set_Prm),从站接收参数化数据并立即回应短应答信息(只有一个0XE5),告知数据已经正确接收到,但数据是否有效还不知道。 [20]主站继续发送Configure报文DSAP = 0X3E(Chk_Cfg),此例中IO配置数据为0XF3,0XF1表示PKW的Input/Output都为4words,PZD的Input/Output都为2words。从站收到此报文后立即发送0XE5短应答报文告知主站已经收到报文,但会继续与自身所设定的值进行比较,如果有相符的设定,则进入Data_Exchange状态。 [26][27]主站再次获取从站16的诊断信息,这时,主站知道从站正在等待进行IO数据交换。 [32][33]此为状态请求报文,目前从站本应该进行IO数据交换,但主站由于其错误状态还没有被清除,故不能正确送数据到总线,便利用状态请求报文与从站进行交换。这时我们需要清除PLC程序执行的错误,将KEY拨回到STOP,然后再拨回RUN状态即可以消除由于从站16掉线时发生的程序执行错误。 |
[01]\x10\x6A\x02\x49\xB5\x16 [02]\xDC\x02\x02 [03]\x68\x05\x05\x68\x90\x82\x6D\x3C\x3E\xF9\x16 [04]\x10\x03\x02\x7D\x82\x16 [05]\x68\x09\x09\x68\x02\x03\x08\x01\x00\x00\x08\x02\xF0\x08\x16 [06]\x10\x6B\x02\x49\xB6\x16 [07]\xDC\x02\x02 [08]\x68\x05\x05\x68\x90\x82\x6D\x3C\x3E\xF9\x16 [09]\x68\x0B\x0B\x68\x82\x90\x08\x3E\x3C\x02\x05\x00\xFF\x80\xB5\xCF\x16 [10]\x10\x03\x02\x5D\x62\x16 [11]\x68\x09\x09\x68\x02\x03\x08\x01\x00\x00\x08\x02\xF0\x08\x16 [12]\x10\x6C\x02\x49\xB7\x16 [13]\xDC\x02\x02 [14]\x68\x0C\x0C\x68\x90\x82\x5D\x3D\x3E\xB8\x15\x17\x0B\x80\xB5\x00\x0E\x16 [15]\xE5 [16]\x10\x03\x02\x7D\x82\x16 [17]\x68\x09\x09\x68\x02\x03\x08\x01\x00\x00\x08\x02\xF0\x08\x16 [18]\x10\x6D\x02\x49\xB8\x16 [19]\xDC\x02\x02 [20]\x68\x07\x07\x68\x90\x82\x7D\x3E\x3E\xF3\xF1\xEF\x16 [21]\xE5 [22]\x10\x03\x02\x5D\x62\x16 [23]\x68\x09\x09\x68\x02\x03\x08\x01\x00\x00\x08\x02\xF0\x08\x16 [24]\x10\x6E\x02\x49\xB9\x16 [25]\xDC\x02\x02 [26]\x68\x05\x05\x68\x90\x82\x5D\x3C\x3E\xE9\x16 [27]\x68\x0B\x0B\x68\x82\x90\x08\x3E\x3C\x00\x0C\x00\x02\x80\xB5\xD7\x16 [28]\x10\x03\x02\x7D\x82\x16 [29]\x68\x09\x09\x68\x02\x03\x08\x01\x00\x00\x08\x02\xF0\x08\x16 [30]\x10\x6F\x02\x49\xBA\x16 [31]\xDC\x02\x02 [32]\x10\x10\x02\x7D\x8F\x16 [33]\x68\x0F\x0F\x68\x02\x10\x08\x12\xBC\x00\x00\x00\x00\x00\x06\xFB\xB4\x00\x00\x9D\x16 [34]\x10\x03\x02\x5D\x62\x16 [35]\x68\x09\x09\x68\x02\x03\x08\x01\x00\x00\x08\x02\xF0\x08\x16 [36]\x10\x70\x02\x49\xBB\x16 [37]\xDC\x02\x02 [38]\x10\x10\x02\x5D\x6F\x16 [39]\x68\x0F\x0F\x68\x02\x10\x08\x12\xBC\x00\x00\x00\x00\x00\x06\xFB\xB4\x00\x00\x9D\x16 [40]\x10\x03\x02\x7D\x82\x16 |
||
当我们清除掉PLC程序执行的错误后,数据交换回复到正常状态。
[02][03]仍然处于状态请求。 [04][09]当PLC的KEY在切换的时候,就会发送全局控制报文DSAP = 0X3A(Global_Control),[09]不属于DP协议范围。 [10][11]现在主站已经正确的将数据送到从站16了,从站也正确的将自己的数据送回到主站。 [16][17]PKW操作已经开始,但变频器还没有回送参数值。 [22][23]PKW操作中,变频器已经开始回送数据,其要读取的参数值为0X06。 从这些数据,我们不难看出,我们预想的PKW及PZD的操作一工正常,在PZD区域,主站送数据00 00 02 F0到变频器,前一个字表示Control Word,都为0则无操作动作,后一个字表示Refer Frequency,值为0X02F0,而从变频器返回的值中,我们接收到数据FB B4 00 00,前一个字表示Status Word,是变频器的状态值,后一字表示Out Freq,输出频率,目前输出频率为0,表示处于STOP状态。 |
[01]\xDC\x02\x02 [02]\x10\x10\x02\x7D\x8F\x16 [03]\x68\x0F\x0F\x68\x02\x10\x08\x12\xBC\x00\x00\x00\x00\x00\x06\xFB\xB4\x00\x00\x9D\x16 [04]\x68\x07\x07\x68\xFF\x82\x46\x3A\x3E\x00\x00\x3F\x16 [05]\x10\x03\x02\x5D\x62\x16 [06]\x68\x09\x09\x68\x02\x03\x08\x01\x00\x00\x08\x02\xF0\x08\x16 [07]\x10\x4D\x02\x49\x98\x16 [08]\xDC\x02\x02 [09]\x68\x09\x09\x68\xFF\x82\x44\x34\x36\x5D\x00\x68\x00\xF4\x16 [10]\x68\x0F\x0F\x68\x10\x02\x5D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6F\x16 |
||
至此,关于如何组建简单Profibus/DP实验网络及一些简单的数据分析方法就基本介绍完毕。Profibus是一种在实际项目中用得很多,市场占有率极大的现场级工业控制网络,其最高通讯速度可以达到12M,在业界也算是高居第一。开发能接入Prifibus总线的现场设备,将使产品本身的集成能力更加强大,市场效用也明显提升。 | |||
~~全文完~~
简单Profibus/DP实验系统的组建相关推荐
- HART/PROFIBUS DP网关
型号:HPM-610 基本说明:实现HART设备与PROFIBUS DP总线系统的互联. 1.支持1个HART通道,HART通道支持连接的HART从站设备多达15个: 2.HART侧可配置为第一主站或 ...
- 简单的eda实验vga在linux系统中,EDA实验报告-VGA彩条显示.doc
VGA彩条信号显示控制 一.实验目的: 1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用: 2. 理解状态机的工作原理和设计方法: 3. 熟悉 VGA 接口协议规范. 4.通 ...
- 简单的eda实验vga在linux系统中,《EDA实验报告VGA彩条显示.doc
<EDA实验报告VGA彩条显示 VGA彩条信号显示控制 一.实验目的: 1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用: 2. 理解状态机的工作原理和设计方法: 3. ...
- 柔性生产制造实验系统
ZN-RX3FMS柔性生产制造实验系统 一.产品概述 ZN-RX3FMS柔性生产系统是使用柔性制造技术中具代表性的制造自动化系统,可实现多品种.中小批量的加工管理.柔性制造技术是在自动化技术.信息技术 ...
- PROFIBUS DP 网络部署的四大要点
PROFIBUS 线缆 PROFIBUS-DP 物理层支持屏蔽双绞线和光纤两种介质,其中 RS485 传输方式应用最为广泛. PROFIBUS-DP 规定的电缆有 A 型和 B 型两种.技术参数如表中 ...
- linux内核实验平台搭建,搭建自己的Linux实验系统(一)
当你对操作系统已经有了基本的把握:而且对Linux也有了初步的了解,可是,如果你是一个程序员,你肯定还是会觉得惴惴不安:Linux到底是怎么回事? 求知和求实是程序员的天性,我们当然有义务满足自己的天 ...
- css 模拟器方向_GDS变方向动态循环单剪实验系统VDDCSS
原标题:GDS变方向动态循环单剪实验系统VDDCSS 变方向循环简单剪切(VDDCSS)允许在两个方向进行简单剪切,而不是标准单向.这通过具有作用于其上的次级剪切作动器来实现,此剪切作动器与主剪切作动 ...
- 于掌控板实现简单的抢答器系统
基于掌控板实现简单的抢答器系统/手动判断正误,随机发送题目 一.实验目的及要求 实现掌控板抢答器功能. 二.实验原理与内容 基于TinywebDB实现云数据库出题 基于掌控板实现按键抢答和判题 基于M ...
- el-jy-ii计算机组成原理实验报告,EL-JY-II型计算机组成原理实验系统
一.适用范围: EL-JY-II型计算机组成原理实验系统是为<计算机组成原理>课程的教学实验而研制的,涵盖了目前流行教材的主要内容,能完成主要的基本部件实验和整机模拟实验,同时也可供计算机 ...
最新文章
- matlab 坐标修改gca及Matlab中输入上标、下标、希腊字母,特殊符号或字体
- 【译】Economics of Fees and Gas
- tcp协议接收方对out of order的分段是如何处理的?_TCP协议与流通信
- tf 如何进行svd_Tensorflow快餐教程(6) - 矩阵分解
- Centos7忘记密码——转
- 【Codeforces - 1000C】Covered Points Count(思维,离散化,差分)
- dotty编译器语法特性之一交叉类型,联合类型和文本单例类型
- DecimalFormat 用法
- es6语法在ios低版本的支持性
- 基于机器视觉的马达孔直径中心距、齿数线序测量
- HDU-2050-折线分割平面
- POJ 1066 Treasure Hunt(计算几何)
- 常用的python模块及安装方法
- Atitit 信息检索 v3 t55.docx Atitit 现代信息检索 目录 1.1. 信息检索(索引 索引 结构化文本	1 1.2. Atitit 重要章节	1 1.3. 息检索建模	1 1.
- vue导出自定义的excel表格
- 综合项目之闪讯破解(一)之 闪讯拨号用户名核心算法
- WhatsApp群发系统-SendWS拓客系统功能后台介绍(五):WhatsApp筛号群发,群发超链
- Php扫码签到功能怎么实现,扫码签到常用方法_云分组小程序
- 用matlab做音乐仿真,Matlab课程设计报告--MATLAB GUI的音乐键盘仿真
- 游戏手柄按键遥杆值检测
热门文章
- Flash 望庐山瀑布特效
- 【RDMA】IRN|Revisiting Network Support for RDMA-(重新审视RDMA的网络支持)
- 每日简报 4月6日简报新鲜事 在这里,60秒读懂世界
- 《对话》:求解“精英思想”与“企业实践”的统一
- Nature | 细菌分子靶向病毒DNA
- Decode 函数的用法
- TopStatck 物联网云组态平台
- Linux测试远程端口是否开放
- 第七章:小朱笔记hadoop之源码分析-hdfs分析 Datanode 心跳分析
- “被玩坏了”的Dropout