(检测技术与自动化装置专业论文)基于canopen的过程控制系统的设计.pdf_第1页
(检测技术与自动化装置专业论文)基于canopen的过程控制系统的设计.pdf_第2页
(检测技术与自动化装置专业论文)基于canopen的过程控制系统的设计.pdf_第3页
(检测技术与自动化装置专业论文)基于canopen的过程控制系统的设计.pdf_第4页
(检测技术与自动化装置专业论文)基于canopen的过程控制系统的设计.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(检测技术与自动化装置专业论文)基于canopen的过程控制系统的设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 随着现代工业和科学技术的发展,现场总线技术在工业生产和科学研究等领 域都获得了巨大的发展。本课题结合浙江中控科教仪器有限公司的a e 2 0 0 0 a 型 过程控制实验系统,设计了基于c a n o p c n 通信的控制器,以现场总线c a n o p e n 协议为过程控制系统的网络环境,实现对多路参数的控制。根据系统需求设计嵌 入式系统硬件、系统软件、c a n o p e n 通讯、多参数控制任务等,并对设计结果 进行验证。 硬件部分以飞思卡尔公司的1 6 位控制器m c 9 s 1 2 ) p 5 1 2 为核心控制芯片, 设计了a d 、d a 、以及c a n 通信模块,构成c a n o p e n 从节点嵌入式硬件系统, 给出硬件的设计及调试过程。 在c a n o p e n 协议栈方面,提出了在m c 9 s 1 2 x d p 5 1 2 平台上实现c a n o p e n 网络从节点的方法,并将协议栈移植到uc o s 操作系统上,大大提高了 c a n o p c n 协议栈的应用灵活性和可扩展性。 应用方面,介绍了基于p i d 算法的液位、压力、流量多参数控制系统,设计 了实时操作系统下的液位、压力、流量的控制任务,并与c a n o p e n 通讯任务结 合。最终完成对本课题设计的c a n o p c n 从节点的验证。 关键字c a n o p c n 协议;l ac o s i i 操作系统;多参数控制 北京工业大学工学硕士学位论文 量曼曼曼曼皇曼曼曼曼曼皇曼曼量曼曼! 皇! 曼曼曼置曼曼曼曼曼曼曼曼曼曼曼曼曼曼鼍曼o m l_ m。mm m mm - - 皇曼皇曼鼍曼寰 a bs t r a c t a st h em o d e mi n d u s t r i a la n ds c i e n t i f i ct e c h n o l o g i c a ld e v e l o p m e n t , f i e l db u si n i n d u s t r i a lp r o d u c t i o n , s c i e n t i f i cr e s e a r c ha n do t h e rf i e l d sh a v ea l s ob e e nt r e m e n d o u s d e v e l o p m e n t t h ei s s u eu s e sz h e j i a n gs c i e n c ea n de d u c a t i o ni n s t r u m e n tc o ,l t d a e 2 0 0 0 a - p r o c e s sc o n t r o lo f t h ee x p e r i m e n t a ls y s t e mt od e v e l o pt h ec o n t r o l l e rb a s e d o nc a n o p e nc o m m u n i c a t i o nw h i c hi st h en e t w o r ke n v i r o n m e n to fp r o c e s sc o n t r o l s y s t e m i n t r o d u c eh o wt od e s i g nt h ee m b e d d e dh a r d w a r es y s t e m ,s o f t w a r es y s t e m , c a n o p e nc o m m u n i c a t i o n s ,m u l t i - p a r a m e t e r sc o n t r o lm s ka c c o r d i n g t o s y s t e m r e q u i r e m e n t s ,a n dt e s tt h es y s t e m t h eh a r d w a r ei sb a s e do nf r e e s c a l ec o n t r o l l e r sm c 9 s12 x d p 512a st h ec o r ec h i p , i n c l u d i n ga d ,d a ,a sw e l la sc a n c o m m u n i c a t i o nm o d u l e d e s i g nt h ec a n o p e n s l a v en o d ee m b e d d e ds y s t e m t h i sa r t i c l ei n t r o d u c e sh o wt od e s i g na n dd e b u gt h e h a r d w a r e t h ek e yp r i n c i p l eo fh a r d w a r ei sa l s og i v e n t h es y s t e ms o f t w a r ed e s i g nr e f e r st oam e t h o dt or e a l i z eas l a v en o d eb a s e do n t h em c 9 s x l2 d p 512p l a t f o r m a n dp o r tt h ec o d eo nl x c o s i io p e r a t i o ns y s t e m t h i s n e wm e t h o dg r e a t l yr e d u c i n gt h ed e v e l o p m e n tc y c l ea n di n c r e a s et h ef l e x i l i t yo ft h e c o d e t h ea p p l i c a t i o ni sf o c u s e do nt h el i q u i dl e v e lp i dc o n t r o ls y s t e m t h i sa r t i c l e i n t r o d u c e dh o wt od e s i g nl i q u i dl e v e l ,p r e s s u r e ,a n df l o wp i dc o n t r o ls y s t e mt a s ki n r e a l t i m eo p e r a t i o ns y s t e ma n dh o wt oc o m b i n ei tw i t hc a n o p e nc o m m u n i c a t i o n t a s k a tl a s tt e s tt h ew h o l es y s t e m k e yw o r d s :c a n o p e np r o t o c o l ;uc o s 一o p e r a t i o ns y s t e m ;m u l t i - p a r a m e t e r s c o n t r 0 1 - 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:球卑 日期舻。弓口 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名狐阜 剔谧辄石筇醐吩。 第1 章绪论 曼曼曼寡曼皇寡hi i i i_ _ _ i i 1 1 1 1 研究的背景 第l 章绪论 现场总线在控制系统中的应用使各领域的综合自动化控制技术飞速发展,成 为控制领域的一个新热点。c a n ( c o n t r o l l e r a r e an e t w o r k ) 总线是现场总线领域中 一种很有前途的技术,具有可靠性高、抗干扰强、开发简单、造价低廉以及短帧 传输和无破坏仲裁技术的优点。它是一种多主方式的串行数据通讯总线,网络中 没有节点的地址信息,而是通过标识符来识别不同的报文,采用非破坏性总线仲 裁技术。 2 0 世纪8 0 年代初期,由于欧洲汽车工业发展的需要,最先由德国b o s c h 公司 提出c a n 总线方案以解决汽车控制装置间的通信问题。为促进c a n 的发展,1 9 9 2 年在欧洲成立了国际用户和厂商协会( c a ni na u t o m a t i o n ,简称c i a ) 。c a n 本 身并非一个完整的协议,只包括物理层和数据链路层两个底层协议,没有定义应 用层,这为其应用提供了较大的灵活性,也成为它的缺点。要进行高效率的通讯 还要进一步开发高层协议。为了满足不同的应用领域和不同用户的需求,现已开 发出了很多基于c a n 的协议,目前已发展成为工业标准的高层协议有: c a l c a n o p e n 、d e v i c e n e t 等。c a n o p e n f l a c i a ( c a ni n a u t o m a t i o n ) i 拘会员开发, 是c a l ( c a ni n a p p l i c a t i o n ) 的个子集,广泛用于机械制造、车辆、铁路、船舶、 制药和食品加工等工业控制领域,d e v i c e n e t 是由美国w o c k w e l l 的a _ b 公司开发的 开放式网络标准,属于设备级网络总线,包括传感器和执行机构,现已成为i e c 标准( i e c 6 2 0 2 6 ) ,成为c a n 高层协议的标准之一i l 】。 本课题主要是针对c a n o p c n 协议栈的开发应用。c a n o p e n 协议栈的开发可以 有以下三种方案1 2 】,本课题采用方案2 。 方案1 :在c a n o p e n c h i p 基础上开发c a n o p c n 节点。 方案2 :通过对c a n o p c n 协议栈的二次开发,在单片机上实现嵌入式 c a n o p e n 节点。 方案3 :利用c a n o p e nm a s t e ra p i 在p c 机上实现c a n o p c n 节点。 北京工业大学工学硕士学位论文 1 2 课题相关技术研究现状 1 2 1c a n 总线 c a n 总线全称是“控制器局域网( c o n t r o l l e ra r e an e t w o r k ) ,是一种串行通 信协议,能够有效支持分布式实时控制,支持高速网络和低成本的多线制网络, 具有可靠性高、应用广泛的优点。高速c a n 应用于汽车电子、发动机控制单元、 传感器、防滑系统等,通信速率可达1 m b i t s ,低速c a n 可应用于车灯控制、电 动门窗等车身控制,可以取代接线配线装置。根据i s o o s i 参考模型,如图1 1 所 示,c a n 被细分为不同的层次 5 】1 3 3 1 。 ( 1 ) 数据链路层 包括逻辑链路控制子层和介质访问控制子层。在c a n 2 0 a 规范中,数据链路 层的l l c 子层和m a c 子层的服务及功能分别被解释为“目标层一和“传输层 。 逻辑链路子层作用范围包括:为远程数据请求以及数据传输提供服务;确定l l c 子层接受的报文中那些报文实际上被验收;为恢复管理和过载通知提供手段。介 质访问控制子层m a c 的作用主要是传送的规则,也就是控制帧的结构、执行仲 裁、错误检测、错误的标定、故障的界定。总线上什么时候开始发送报文及什么 时候开始接受报文,均在m a c 字层里确定。 ( 2 ) 物理层 物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。 第1 章绪论 图1 1c a n 的i s o o s i 参考模型的层结构 f i g l 1i s o o s il a y e ra r c h i t e c t u r eo fc a n c a n 报文有两种不同的帧格式,不同之处为标识符域的长度不同,含有1 l 位标识符的帧称为标准帧,含有2 9 位标识符的帧称为扩展巾贞【羽。是c a n 报 文的标识符,1 1 位2 9 位。r t r 如果值为0 ,代表该报文是普通报文,包含数据 位。r t r 如果值为1 ,代表报文是远程请求报文,不包含数据。d n 是数据位。 通常一个c a n 报文包括0 到8 个数据字节。 由于c a n 总线采用了许多新技术及独特设计,c a n 总线的数据通信具有突 出的可靠性、实时性和灵活性。已成为国际标准化组织i s o l l 8 9 8 标准,具有如下 特性1 6 7 1 : c a n 采用多主方式工作,网络上任意节点均可以在任意时刻主动地向网 络上的其它节点发送信息,而不分主从,通讯方式灵活。 c a n 信息帧采用短帧结构,每一帧的有效字节数为8 个,这样传输时间 短,受干扰的概率低。 c a n 协议废除了传统的站地址编码,而是对通讯数据块进行编码,使网 络中的节点个数在理论上不受限制,网络中的不同节点同时接到相同的数据,使 总线上传输的信息总量减少。 c a n 网络上的信息可分成不同的优先级,满足不同的实时性要求。 北京工业大学工学硕士学位论文 c a n 采用非破坏性总线裁决技术( c s m a c d ) ,大大节省了总线冲突裁决 时间;最重要的是在网络负载很重的情况下也不会出现网络瘫痪情况( 以太网则 可能) 。 c a n 网络具有点对点、一点对多点和全局广播等几种通讯方式;具有极 好的检错效果,c a n 的每帧信息都具有c r c 校验和其它检错措旋,保证了错误 的输出率极低。 c a n 的直接通讯距离最远可达1 0 k m ( 速率5 k b p s 以下) ;通讯速率最高可 达1 m b p s ( 此时距离长4 0 m ) ;最多可接节点达1 1 0 个。 由于具有以上特性,c a n 总线越来越受到人们的重视,目前已有许多大公 司的产品采用了这一技术。c a n 总线的应用范围很广,其中汽车和交通领域占 应用总数的8 0 以上,在工业控制、楼宇自动化、机器人领域、装载器械、嵌入 式网络、混合引擎控制、和医学电子、电话系统等行业都有着成功的应用。目前, 支持c a n 协议的有i n t e l 、m o t o r o l a 、p h i l i p s 、s i e m e n s 、n e c 、s i l i o n i 、h o n e y w e l l 等百余家国际著名大公司。 1 2 2c a n o p e n 协议 从o s i 网络模型的角度来看,c a n 总线仅仅定义了第1 层( 物理层) 、第2 层( 数据链路层) 。实际设计中,这两层完全由硬件实现,无需再为此开发相关 软硬件。同时,c a n 只定义物理层和数据链路层,没有规定应用层,本身并不 完整,需要一个高层协议来定义c a n 报文中的1 1 2 9 位标识符、8 字节数据的使 用。c a n o p e n 协议预研阶段是1 9 9 5 年在以b o s c h 公司为首的团队下开发的,后 来成为c i a ( c a n i na u t o m a t i o n ) 定义的标准之一,它是基于c a n 总线的高层协 议,是一个开放的、标准化的高层协议;这个协议支持各种c a n 厂商设备的互 用互换性,能够实现在c a n 网络中提供标准的、统一的系统通讯模式,提供设 备功能描述方式,执行网络管理功能。在o s i 模型中,c a n 标准、c a n o p e n 协 议之间的关系如图1 2 所示【9 l 【1 0 1 1 2 9 3 2 1 。 第1 章绪论 设备行规 设备行规 - o s i7 应用层 通讯协议d s 3 0 1 - n s t2 数据链路层c a n 控制器 c a n 2 0 a _- o s i1 物理层c a n 收发器i s o1 1 8 9 8 - i 图1 - 2c a n o p e n 在i s o o s i 层结构中的位置 f i g l - 2t h ep o s i t i o no fc a n o p c n i ni s o o s il a y e ra r c h i t e c t u r e c a n o p e n 协议详细规定了通讯模式、网络管理以及相关参数的设定和不同 领域应用的典型模式等内容。c a n o p e n 通讯模型定义了4 种报文【1 1 】【1 2 】【3 0 】: 管理报文( n m t ) 、过程数据对象( p d o ) 、服务数据对象( s d o ) 、预定义报文 或特殊功能对象。管理报文( n m t ) 作用是管理网络和d 分配,例如初始化网络, 配置和网络管理。过程数据对象( p d o ) 对小型的数据进行高速数据交换,通常采 用事件触发、循环或请求方式发送,一个p d o 最大可传输8 字节数据。服务数 据对象( s d o ) 主要用于在设备配置过程中传输参数以及传输大数据块。s d o 传送 报文可以不受长度的限制。预定义报文或特殊功能对象主要包括同步报文 ( s y n c ) 、时间戳对象( t t m es t a m p ) 、紧急事件报文( e m e r g e n c y ) 、节点保护报文 ( n o d eg u a r d i n g ) 。 c a n o p e n 最核心的部分是对象字典( o b j e c td i c t i o n a r y ) 。简单地说,对象字典 就是一张表,承载着整个网络所具备的数据并描述c a n o p e n 的配置和节点功能。 c a n o p c n 网络中,通信对象和应用对象之间,以对象字典为接口,应用程序通过 读写对象字典,就可以实现c a n o p e n 通信。对象字典是一个有序的表格;每个对 象采用一个1 6 位的主索引值来寻址,共有6 5 ,5 3 5 个,每个主索引最多可以有2 5 6 个子索引。子索引是一个8 位的数据,是为了允许访问数据结构中的单个元素而 定义的,每个主索引至少包含一个子索引【l3 1 。对象字典的结构参照表1 1 。 北京工业大学工学硕士学位论文 表1 - 1 对象字典结构 t a b l e l 一1t h es t r u c t u r eo f o b j e c td i c t i o n a r y 索引对象 0 0 0 0 h 保留 0 0 0 1 h 0 0 1 f h基本数据类型 0 0 2 0 h 0 0 3 f h复杂数据类型 0 0 4 0 h 0 0 5 f h 生产商相关数据类型 0 0 6 0 h 0 0 7 f h设备描述的基本数据类型 0 0 8 0 h 0 0 9 f h设备描述的复杂数据类型 0 0 a 0 h - 0 f f f h保留 1 0 0 0 h 1 f f f h通讯参数 2 0 0 0 h 5 f 】p f h 制造商的特殊设备描述文件 6 0 0 0 h - 9 f f f h标准设备描述文件 a 0 0 0 h b f f f h标准接口描述文件 c 0 0 0 h f f f f h保留 1 2 3c a n o p e n 协议栈介绍 c a n o p e n 协议的说明是可以免费下载的,要根据协议自行开发c a n o p e n 协 议栈,大约需要1 2 个月甚至更长时间来达到适合嵌入式应用的比较稳定的结果。 现在市场上的c a n o p e n 协议栈软件大约要7 万至l o 万人民币,商用c a n o p e n 协议栈代码价格昂贵,若购买现成的协议栈,不但会增加开发成本,还会增加开 发难度。因此进行c a n o p e n 协议的开发,首先想到的是如何利用现有的开源代 码。在开源代码方面,现在能够找到的有两个组织的c a n o p e n 协议栈可供使用。 一个是由美国的嵌入式系统研究会( e m b e d d e ds y s t e m s a c a d e m y ) 支持的微 型c a n o p e n 项目( m i c r oc a n o p e n ) 3 1 。该项目提供的开源c a n o p e n 协议栈并 不支持所有的c a n o p e n 功能,仅作为学习目的公开。它的体积很小,可以在8 0 5 1 位控制器上实现,并只需要4 k 字节的代码空间和1 7 0 字节的数据空间。 另一个是由法国的l o l it e c h 资助的c a n f e s t i v a l 项目【4 】。与微型c a n o p e n 项目不同的是,该项目是一个由开源社区l g p l 授权的较为完整的c a n o p e n 协 议栈,需要4 0 k 字节以上的代码空间。 第1 章绪论 1 2 4 嵌入式系统 由于硬件的限制,在使用m c u 设计嵌入式系统的初期,程序设计人员得到 的是只有硬件系统的“裸机”,没有任何类似于操作系统的软件作为开发平台, 对c p u ,r a m 等这些硬件资源的管理工作都必须由程序员自己编写程序来解决, 从而使程序员工作的十分辛苦,并使程序的开发效率菜极低。现在由于技术进步, 单片系统硬件的规模越来越大,功能越来越强,从而给运行嵌入式操作系统提供 保证。运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进 行统一协调、指挥和控制的系统软件就叫做嵌入式操作系统。 嵌入式操作系统按应用范围划分,可分为通用型嵌入式操作系统和专用型嵌 入式操作系统。通用型可应用于多种应用环境,例如常见的w i n d o w $ c e 、 v x w o r k s 、pc l i n u x 及uc 幻s 等;专用型嵌入式操作系统则用于一些特定的领 域,例如移动电话的s y m b i a n 、手持数字设备( p d a ) 的p a l mo s 等【1 4 1 。 1 3 课题的任务 1 、分析c a n o p e n 高层协议,本课题主要实现c a n o p e n 从节点的基本功能。 2 、c a n o p c n 从节点模块的硬件设计与实现。本课题采用飞思卡尔公司的 m c 9 s 1 2 x d p 5 1 2 作为c p u ,c a n 总线通讯收发芯片由t j a l 0 5 0 、配合两个高速 光耦来实现,用来完成数据通讯和控制任务,从节点模块还包括d a 转换、a d 转换、l e d 、l c d 接口、键盘接口、f l e x r a y 控制器、u s b 、以太网芯片、继电 器模块等,便于扩展应用。 3 、实现基于实时操作系统l ac o s i i 的c a n o p c n 网络从节点,完成c a n 总线数据通讯、网络管理和相应的控制任务。 4 、探索c a n o p e n 实时数据传输的改进,增强c a n 总线的实时性,进一步 增强工业控制网络的控制效果。 1 4 本章小结 本章介绍了课题的研究背景及相关技术的研究现状,详细阐述了c a n 网络 的分层结构、c a n o p e n 协议的通信对象的定义、c a n o p e n 协议栈的分类以及嵌 入式系统的种类,最后介绍了本课题的研究任务。 北京工业大学工学硕士学位论文 第2 章从站代码的设计 2 1c a n o p e n 协议中的c a n 报文 c a n o p e n 报文以c a n 标准报文为依据,l l 位标识符中的前4 位是报文的功 能码,后7 位是节点号,共同组成c o b i d 以区分不同节点的不同报文。不同通 信对象具有不同的功能码【3 1 1 ,按优先级从高到低排列,如表2 1 所示。 表2 - 1 功能码定义 t a b l e 2 - 1t h ed e f i n i t i o no f f u n c t i o n nc o d e 报文类型 功能码c o b 范围 n m t0 0 0 00 0 0 h s y n c0 0 0 10 8 0 h e m 匣r g e n c y0 0 0 10 8 1 h - o f f h t i n 匝 0 0 1 0 1 0 0 h p d 0 1 ( 发送) 0 0 1 l1 8 l h 1 f f h p d 0 1 ( 接收) 0 1 0 02 0 1 h 2 7 f h p d 0 2 ( 发送) 0 1 0 12 81 h - 2 f f h p d 0 2 ( 接收) 0 1 1 03 0 1 h 3 7 f l l p d 0 3 ( 发送)0 1 1 13 8l h 3 f f h p d 0 3 ( 接收) 1 0 0 04 0 1 h - 4 7 f h p d 0 4 ( 发送) 1 0 0 14 8 1 h - 4 f f h p d 0 4 ( 接收) 1 0 1 05 0 1 h 5 7 f h s d o ( 发送) 1 0 1 l5 8 l h - 5 f f h s d o ( 接收) 1 1 0 06 0 1 h 6 7 f h n m te r r o rc o n t r o l1 1 1 07 0 1 h - 7 7 f h 2 1 1 网络管理报文 网络管理报文( n m t ) e h 主站发出,用来更改从节点运行状态,c a n 标准报 文的功能码之后的字节是r t r 位,该位为0 表示报文是n m t 报文。r t r 之后 的字节是节点状态位,节点分别处于预运行、运行、停止状态时,该字节取值为 8 0 、0 1 、0 2 。节点状态位之后是n m t 发往的节点号,如果要向所有节点广播信 第2 章从站代码的设计 息,节点号是0 0 。 2 1 2 节点保护报文 节点保护机制是指主节点向从节点发送读取状态的报文,从节点将自己的状 态回复给主节点,以确定从节点是否工作正常。例如,如果主节点向节点号为5 的从节点发送报文7 0 5 读取从节点状态,从节点此时处于停止状态,则返回报文 7 0 50 5 ,主节点发送0 0 08 00 5 ,将从节点状态改为预运行,主节点再次发送7 0 5 , 则从节点返回报文7 0 5f f 。 2 1 3 心跳报文 从节点进入预运行状态时,如果心跳报文功能被启动,就会周期性的发送心 跳报文。对象字典索引1 0 1 7 子索引0 0 表示发送心跳报文间隔的时间。例如要使 节点号为5 的从节点每隔l o o m s 发送一次心跳报文,主节点发送s d o 格式为: 6 0 52 b1 71 00 06 4 0 00 00 0 ,其中6 0 5 是发送s d o 的c o b i d ,2 b 代表该s d o 的命令字,1 71 0 代表索引1 0 1 7 ,0 0 代表子索引,6 4 是发送心跳报文间隔的时 间的1 6 进制表示。 2 1 4 服务数据对象 服务数据对象( s d o ) 用来读写对象字典。请求读写的是客户,被请求的是服 务器,读是下载,写是上传。s d o 通讯传送优先级较低的信息,一次可传送任 意多个字节。本课题中支持的s d o 报文格式为s d o 上传厂f 载加速传输。即所 有的s d o 都包含8 个字节长度。例如,如果主节点向从节点索引为0 x 1 4 0 0 ,子 索引为2 里写入1 个字节的数据0 x f d ,则主节点发送数据帧:6 0 52 f0 01 40 2f d o o0 00 0 。从节点响应:5 8 56 00 01 40 20 00 00 00 0 。如果主节点向从节点索引为 0 x 1 6 0 3 ,子索引为1 里写入4 个字节的数据0 x 6 0 1 2 0 2 0 8 ,则主节点发送数据帧: 6 0 52 30 31 60 10 80 21 26 0 。从节点响应:5 8 56 00 31 60 10 0 0 0 0 00 0 。如果主节 点读从节点索引为0 x 1 4 0 0 ,子索引为2 里1 个字节的数据0 x f d ,则主节点发送 数据帧:6 0 54 00 01 40 20 0 0 00 00 0 。从节点响应5 8 54 f0 01 40 2f d0 00 00 0 。 如果主节点读从节点索引为0 x 1 6 0 3 ,子索引为1 里4 个字节的数据0 x 6 0 1 2 0 2 0 8 , 则主节点发送数据帧6 0 54 00 31 60 10 00 00 00 0 从节点响应5 8 54 30 31 60 10 8 0 2 】26 0 。 北京工业大学工学硕士学位论文 2 1 5 过程数据报文 过程数据对象( p d o ) 用来传输实时数据,分为周期、非周期传送模式和同步、 非同步传送模式,数据内容由s d o 来配置。一次可传送0 到8 个字节。 如果要配置发送p d o ,例如要求是配置发送p d o 所在对象字典的索引项 1 8 0 0 + n ,c o b l d 为0 x 3 8 7 ,p d o 发送按照同步周期发送,依次包含数据x ( 2 个 字节) 和y ( 4 个字节) 。 数据x 被定义在索引0 x 6 0 0 0 子索引0 3 中 数据y 被定义在索引0 x 2 0 1 0 子索引2 1 中 配置步骤如下: 向索引1 8 0 0 + n 子索引0 l 中写入e o b l d 子索引0 2 中写入发送模式,1 - 0 x f 0 代表每收到t 个s y n c 报文发送一次 p d o ,f d 代表每收到p d o 请求时发送一次p d o ,f f 代表每当事件到来时发送 一次p d o 。 向代表p d o 映射的索引1 a 0 0 + n 子索引0 中写入包含在p d o 中的数据个 数 子索引0 l 写入要发送的第一个数据的索引子索引和数据长度,写入6 0 0 0 0 30 8 子索引0 2 写入要发送的第二个数据的索引子索引和数据长度,写入2 0 1 0 2 12 0 比如要配置节点号为5 的从节点的1 8 0 2 索引,使其每3 个同步周期发送1 次p d o ,s d o 配置报文如下定义: 6 0 52 30 21 80 10 0 0 00 7 3 8 6 0 52 f0 21 80 20 30 0 0 00 0 6 0 52 f0 21 a0 0 0 2 0 0 0 00 0 6 0 52 30 21 a 0 10 80 30 06 0 6 0 52 30 21 a 0 22 02 11 01 0 如果要配置接收p d o ,例如要求是配置接收p d o 所在对象字典的索引项 1 4 0 0 + n ,e o b l d 为0 x 1 8 3 ,p d o 按照同步周期接收,依次包含数据x ( 2 个字节) 和y ( 4 个字节) 。 数据x 被定义在索引0 x 6 0 0 0 子索引0 3 中 数据y 被定义在索引0 x 2 0 1 0 子索引2 l 中 配置步骤如下: 向索引1 4 0 0 + n 子索引0 1 中写入e o b l d 子索引0 2 中写入接收模式,1 - 0 x f 0 代表每收到t 个s y n c 报文接收一次 第2 覃从站代码的设计 p d o ,f d 代表每收到p d o 请求时接收一次p d o ,f f 代表每当事件到来时接收 一次p d o 。 向代表p d o 映射的索引1 6 0 0 + n 子索引0 中写入包含在p d o 中的数据个 数 子索引0 1 写入要接收的第一个数据的索引子索引和数据长度,写入6 0 0 0 0 30 8 子索引0 2 写入要接收的第二个数据的索引子索引和数据长度,写入2 0 1 0 2 l2 0 比如要配置节点号为5 的从节点的1 8 0 2 索引,使其每3 个同步周期发送1 次p d o ,s d o 配置报文如下定义: 6 0 52 30 21 40 10 00 00 31 8 6 0 52 f0 21 40 20 30 0 0 0 0 0 6 0 52 f0 21 60 0 0 20 0 0 00 0 6 0 52 30 21 60 10 80 30 06 0 6 0 52 30 2 】60 22 02 11010 2 1 6 同步报文 同步报文是针对主节点来说的,从节点一般不发送同步报文。对象字典索引 1 0 0 7 子索引0 0 表示主节点发送同步报文的周期。例如要使主节点每隔 1 0 0 0 m s ( 0 x 2 7 ) 发送一次心跳报文,配置格式为6 0 12 30 61 00 01 02 7 0 00 0 。使之 开始发送同步报文,向主节点索引1 0 0 5 子索引o 中写入0 x 4 0 0 0 0 0 8 0 。 2 2 从站协议栈的总体结构 c a n o p e n 从协议栈的设计采用状态机的形式,根据c a n o p e n 协议d s 3 0 1 的规定,节点共有4 种状态,分别是初始化、预运行、运行、停止。根据节点所 处的不同状态。节点上电后,进入初始化状态,对c a n 硬件进行初始化,设置 节点号,建立对象字典1 0 0 5 h 、1 0 0 6 h 、1 0 0 7 h 、1 0 1 7 h 索引项,然后自动进入 预运行状态。进入与运行状态的节点可以接收来自主节点除p d o 之外所有的报 文,并启动心跳报文管理函数。从预运行状态进入运行状态是由主节点发送n m t 命令来启动的。在运行状态的从节点可以发送并接受p d o i 报文。停止状态的从 节点只能接受主节点的n m t 报文。从协议栈整体流程图如图2 1 所示。 北京工业大学工学硕士学位论文 图2 - 1 从协议栈总体流程图 f i g u r e2 - 1t h et o t a jp r o c e s so fs l a v es t a c k - 1 2 - 第2 章从站代码的设计 2 2 1 报文的底层处理过程 从节点上电启动后,一直循环运行状态机,等待来自主节点的管理报文,当 报文到来的时候,基于中断的接收报文机制产生中断,中断由m c 9 s 1 2 x d p 5 1 2 的硬件产生,中断向量是在c o d e w o r r i o r 的p r m 文件中定义,定义如下: v e c t o ra d d i 也s s0 x f f 9 2c a n 4 h d i r e v 其中,0 x f f 9 2 是中断函数c a n 4 h d l r c v 的中断向量地址。v e c t o r a d d r e s s 是用来定义中断向量的格式。 中断发生后c a n o p e n 处理接收报文。fc a l l)与中断函数_receive( v o i d i n t e r r u p te a n 4 h d l r c v ( v o i d ) 成对出现。接收过程为:首先中断发生,定义的指向 报文堆栈的t _ _ p o i n t e r s t a c k 类型的结构体p t r m s g r c v 中的p t r m s g r c v w 被置位, 即向报文堆栈中写信息使能,该操作导致了中断函数开始接收报文。 t y p e d e fs t r u c t u n s 8w :接收使能 u n s 8r ;产发送使能 ) t _ p o i n t e r s t a c k ; 中断发生后,c a n 接收寄存器c a n r c v d t a 里的数据全赋值给r c o b i d , r l e n ,r d a m 这三个变量。 r c o b i d = i o p o r t s 一1 6 ( c a n 4 + c a n r c v i d ) 5 ; r l e n = i o _ p o r t s _ 8 ( c a n 4 + c a n r c v l e n ) & 0 x 0 f ; r d a t a 0 = i o _ p o r t s _ 8 ( c m q 4 + c m 妤v d t a + 0 ) ; r d a t a 1 = i o _ p o r t s 一8 ( c a n 4 + c a 小瓜c v d t a + 1 ) ; r d a t a 2 2 i o _ p o r t s 一8 ( c a n 4 + c a n r c v d t a + 2 ) ; r d a t a 3 = i o _ p o r t s8 ( c a n 4 + c a n r c v d t a + 3 ) ; r d a t a 4 = i o _ p o r t s _ 8 ( c a n 4 + c a n r c v d t a + 4 ) ; r d a t a 5 = i o _ p o r t s _ 8 ( c a n 4 + c a n r c v d t a + 5 ) ; r d a t a 6 = i o _ _ p o r t s 一8 ( c a n 4 + c a n r c v d t a + 6 ) ; r d a t a 7 = 1 0p o r t s _ 8 ( c a n 4 + c a n r c v d t a + 7 ) ; i o _ _ p o r t s _ 8 ( c a n 4 + c a n r f l g ) i = o x 0 1 ; i o _ p o r t s s ( c a n 4 + c a n c t l 0 ) i = 0 x 8 0 ; c a n 接收中断触发了fc a l lr e c e i v e ( ) 。c a n o p e n 协议中规定了有6 种通信 对象,分别是n m t 、s y n c 、t i m es t a m p 、p d o 、s d o 、n o d eg u a r d 等, 只有确定了报文的类别,才能去发挥不同报文应起的作用。通过定义不同功能函 数的方法来实现报文的解析。功能函数包括:p r o c e e d n m t s t a t e c h a n g e ( ) ,改变 从节点状态;p r o c e e d s y n c ( ) ,用于接收同步报文;p r o c e e d p d o ( ) ,处理p d o ; 1 3 北京工业大学工学硕士学位论文 p r o c e e d s d o ( ) ,处理s d o 。如图2 2 所示。 图2 - 2 接收报文流程图 f i g u r e2 - 2t h ep r o c e s so fr e c e i v i n gm e s s a g e s 2 3s d o 报文的处理 2 3 1s d o 报文分析 s d o 用来访问设备的对象字典。访问者被称为客户( c l i e n t ) ,对象字典被访 问并且提供所请求服务的c a n o p e n 设备被称作服务器( s e r v e r ) 。客户的c a n 报 文和服务器的应答c a n 报文都包含8 字节的数据( 尽管不是所有的数据都有意 义) 。一个客户请求对应一个服务器应答。 s d o 有两种传输机制: 加速传输( e x p e d i t e dt r a n s f e r ) :最多传输4 字节的数据 第2 章从站代码的设计 分段传送( s e g m e n t e dt r a n s f e r ) :传输数据长度大于4 字节 s d o 基本结构如下: c l i e n t - - s e r v e r | s e r v e r _ c l i e n t b y t e ob y t e l -b ”e 3b y t e 4 2 7 s d o c o m m a n d s p e c i f 对象索对象字索数据 i e r引引 牛 或者是 c l i e n t s e r v e r s e r v e r - 卜c l i e n t b v t e o b y t e l 7 0 s d 0c o m m a n d最大7 字节 s p e c i f i e r 数据 s d 0c o m m a n ds p e c i f i e r ( s d o 命令字) 包含如下信息: 下载上传( d o w n l o a d u p l o a d ) 请求应答( r e q u e s t r e s p o n s e ) 分段力口速传送( s e g m e n t e d e x p e d i t e dt r a n s f e r ) c a n 帧数据字节长度 用于后续每个分段的交替清零和置位的触发位( t o g g l eb i t ) c a n o p e n 中s d o 的功能根据主从的不同而分别充当s e r v e r 和c l i e n t ,本课 题中的c a n o p e n 节点是从节点,所以从节点是s e r v e r ,根据d s 3 0 1 的规定,s d o 对s e r v e 的操作可以分为,向s e r v e r 对象字典中写数据和从s e r v e r 对象字典中读 数据。 当判断收到的报文是何种s d o 之后,就开始对s d o 作相应处理。将s d o 中的数据逐一赋值给s d o 专用的结构体变量,包括8 个字节的数据,s d o 命令 字,数据长度,然后打包成要发送出去的s d o 报文,将s d o 发送出去。 发送s d o 的函数包括两部分功能。首先是将处理完后的s d o 解析,获取对 象字典索引号为1 2 0 0 的项,赋值给待发送的s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论