软件协议范文
软件协议范文(精选9篇)
软件协议 第1篇
计算机世界中网络协议无处不在, 必须利用它才能实现计算机网络系统的正常运行。因而对于“计算机网络协议”的理解程度直接关系到对网络技术学习的好坏。该课程也是学生学习的重点和难点, 所以如何在教学中, 使抽象的网络协议原理分析变得更加生动具体显得十分重要。
使用传统的方法分析计算机网络协议, 显得枯燥、抽象。如在分析网络通信过程时, 往往会引入TCP/IP或者OSI参考模型的层次结构图来进行, 以此来描述传输的数据如何在分层的网络中逐层进行数据封装、拆分、重组以及传输的过程。通过此方式, 理解整个通信过程比较清晰, 但是它过于笼统, 对于如何封装、封装什么以及传输的实际过程却没有一个直观的认知, 更不能理解数据在通信过程中的具体格式, 因而学习效果不是很理想。
笔者在不断的实验实训教学中, 摸索出利用一台计算机上安装VMWare和Iris两个软件搭建网络协议分析实验平台, 可以取得很好的教学效果。该方法主要特点是: (1) 实现成本低。只需要一台计算机和两个软件; (2) 理论联系实际好。能发挥软件的设计、分析、模拟功能, 使学生“看得到”实验过程和效果; (3) 灵活性强。学生可以开放式实验, 自行设计、配置、测试实验, 学生实验的主动性和互动性得到了提高和增强。
2、利用软件构建网络协议分析实验平台
2.1 主要使用的两个软件
协议分析软件Iris是一款非常优秀的网络通讯分析工具, 全称Iris Network Traffic Analyzer, 为著名的网络安全公司e Eye Di gital Security开发。它可以帮助系统管理员轻易地捕获和查看进出网络的数据包, 进行分析和解码并生成多种形式的统计图表, 它可以探测本机端口和网络设备的使用情况, 有效地管理网络通讯。本文使用的版本为Version 4.0.7。
虚拟PC软件VMWare是一个使你可以在一台机器上同时运行二个或更多Windo ws、DOS、LINUX操作系统。与“多启动”系统相比, VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统, 在系统切换时需要重新启动机器。VMWare是真正“同时”运行, 多个操作系统在主系统的平台上, 就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据, 还可以通过网卡将几台虚拟机系统连接为一个局域网, 十分方便。本文使用的版本为Version 7.1.2。
2.2实验环境的搭建
2.1.1 实验平台的整体设计
说明:以下实验平台的设计是基于一台实体电脑上安装VMware后再实施!
2.1.2 协议分析平台
如图1, 在实体电脑上安装Windows X P系统, 作为FTP客户端主机。并在它上面安装Iris抓包软件, 然后进行抓包设置。如图2所示, 在Iris“地址簿”中设置将要通信的两台主机的IP地址, 并设置捕获数据的方向为“双向”。
2.1.3 C/S网络互联平台
如图1, 在VMWare虚拟的PC上安装Wi ndows Server 2000系统, 并利用此主机的II S服务, 配置一个简单的FTP服务器, 服务器IP地址为虚拟的本机IP地址:10.112.211.55, 子网掩码为255.255.255.0。接着设置FTP服务器主目录中属性:本地路径D:ceshi;目录列表风格:UNIX;权限:读取、日志访问。访问用户名为:Administrator, 访问密码为:123456;基本设置如图3所示。
3、利用实验平台分析网络协议
结合图1所示, 打开FTP客户端主机中的浏览器, 结合上述FTP服务器的设置, 在地址栏输入“FTP://Administrator:123456@10.112.211.55”, 就可以访问FTP服务器了。在点击访问前, 就可以进入Iris正式进行抓包了。按下Iris工具栏中“开始捕获”按钮。然后找到要下载的文件, 鼠标右击该文件, 在弹出的菜单中选择“复制到文件夹”开始下载, 下载结束后在Iris工具栏中点击“停止捕获”按钮。这样就捕获到了访问FTP服务期间所涉及到的网络协议过程。结合捕获的数据包分析整个FTP通信过程如下:
首先, 局域网通信是需要知道对方MAC地址的, FTP客户机便会利用ARP协议来获取服务器的MAC地址。如图4显示捕获的包中序号为1的包即为一个“ARP Request”的数据包, 要获取目的IP地址为“10.112.211.55”的MAC地址。因为这是一个广播包, 所以它的目的MAC地址“FF:FF:FF:FF:FF:FF”;FTP服务器收到这个请求包后, 返回客户机一个“ARP Reply”的一个应答包 (序号为2的数据包) , 此时在这个包中可以看到, 源地址填充了“00-50-8D-74-3C-EB”这个地址, 因为它是服务器发给客户机的, 所以该源地址也就是客户机所要请求获取的服务器的MAC地址, 这样ARP解析的过程就结束了, 客户机也就获取了和服务器在局域网中通信所需要的MAC地址。
然后, 在获取MAC地址后客户机就可以和FTP服务器建立FTP连接了, 从图5中也可以
看到连接建立的ARP地址解析过程、T CP协议的“三次握手”工程、FTP的用户登录过程。观察序号为3, 4, 5的数据包可知, 客户机发送初始序号为“2179495897”的包, 即SEQ=2179495897, ACK为0, 请求的FTP服务端口为21;FTP服务器收到这个请求包后, 发出SEQ=852469426的包进行应答, 同时将客户机初始请求序号的值加1, 以此进行确认, 即ACK=2179495898;客户机收到FTP服务器的确认包后, 将服务器的SEQ加1, 以此对服务器的报文进行确认, 即ACK=852469427。这样通过对捕获的三个包分析, 很清晰的呈现了“三次握手”的交互过程。从而打破了传统的关于“三次握手”基本理论的讲述方式 (如图6) 。
最后, 查看序号为7和9的数据包结构, 可以发现登录客户端登录FTP服务器时所使用的用户名和密码的数据包, 可见图7中“File Transfer Protocol”部分Request和Re quest Arguments属性对应的值可知:用户名为Administrator, 密码为123456。和在服务器中初始设置的一样, 由此也可以看出Iris针对安全检测也有一定功能。
结合图7还可以理解网络体系结构的层次性。图中可以清晰地看到一个包的具体格式和参数, 并能体现网络体系结构的层次性:最上层看到帧为物理层, 图中显示为MA C header (Ethernet II) 的帧格式;往下一层可以看到IPv4的数据报 (IPv4 Header) 格式;再往下一层是传输层, 可以看到TCP数据段 (T CP Header) ;最下层就是FTP服务的应用层协议数据格式 (File Transfer Protocol) 。
这里重点分析IPv4的数据报 (IPv4 Head er) 格式:图7中可以看到Version:4, 表示IP数据报协议版本信息为“4”;Header Length表示报头长度, Type of service (TOS) :0x00表示服务类型为默认, 用于指示路由器如何处理该数据;Total Length表示数据包总长度 (报头长度加数据区长度) ;Identification为标识字段, 用于重组时分片识别的标记;Flags为标志字段, 用于描述数据包是否分片且是否为最后一个分片;Fragment offse表示片偏移字段, 用于描述分片在整个数据包中的相对位置;Time to Live为生存周期, 这里为64;Proto col为协议字段, 这里“6”表示TCP协议;Ch ecksum为头校验和字段, 可以保证数据的完整性;Source IP Addewss为源主机IP地址;Des tination IP Address为目的主机IP地址;IP Op tions为选项字段, 主要用于控制与测试, 按需设置。
4、结语
实践证明, VMWare虚拟PC软件和Iris协议分析软件构建的网络协议分析实验平台, 不仅能仿真实现网络协议分析实验室的常见功能, 而且成本低。并且针对学生在计算机网络协议原理及结构的教学理解与掌握上, 有着理论联系实践的重要意义。
摘要:利用VMware Workstation虚拟PC软件和Iris网络封包分析软件建立单机模式下计算机网络协议分析实验平台。并以此为基础实现访问FTP服务器的流程, 针对ARP协议、TCP协议的三次握手过程、FTP用户验证进行协议分析, 使抽象的协议理论学习变成生动的实例解析, 以此提高网络协议的学习效果。
关键词:VMware,Workstation,Iris,实验平台,协议分析
参考文献
[1]李锦智.VMware在网络技术课程中的应用[J].电脑与电信, 2010, (01) .
[2]肖德宝.计算机网络[M].武汉:华中理工大学出版社, 1999.
软件代理协议 第2篇
发房软件产品区域总代理协议
甲方:成都领房科技信息服务有限公司
乙方:
现甲、乙双方以中华人民共和国相关法律法规为准则,以平等互利为宗旨,经友好协商,就乙方在指定地区独家总代理甲方发房软件系列产品事宜达成协议如下:
1、甲方开发乙方市场所需要的发房软件版本,建立对应的官方网站和数据库服务器。
2、乙方以成都领房科技信息服务有限公司并负责设立办 公场地,以及投入与市场相关设备和人员,确保市场正常运行。
3、乙方向甲方缴纳2日内支付全额代理费。
4、为了扶持乙方的代理市场,甲方提供在自年日至年日止不进行用户收入分成。年5:5进行分成;采取月结方式,乙方于每月10号前支付上月分成款项。
第六条 服务保障
1、甲方有责任对乙方委派的人员进行软件产品方面的技术培训,相关的差旅费用由乙 方自行承担。
2、作为对乙方的支持,甲方提供3个工作日的现场培训和技术支持服务。乙方负责向 客户提供良好的产品售前、售中和售后服务,包括:安装、调试、培训、故障排除等,甲方给予相应远程技术支持和指导。
第七条 双方权利和义务
甲方
1、规范市场体系管理,提供技术支持及非保密技术支持文件。
2、对乙方销售负责人员提供产品培训服务。
3、有计划的开展广告宣传、活动推广并事先通知乙方予以配合。
4、监督乙方的经销活动。
5、提供乙方市场软件版本的升级与维护。
6、甲方有义务为乙方所在区域用户提供正规发票,由乙方支付国家规定相应的税费。
7、在乙方未违反合同相关条款时,甲方不得以任何理由提出终止合同。
乙方
1、乙方不得违反甲方制定的销售政策,不得扰乱甲方正常销售秩序。
2、乙方不得生产、代理与甲方产品有竞争关系的其他任何产品。
3、乙方积极推广该产品。
4、乙方用甲方提供的产品名称。
5、乙方严格遵守甲方的价格政策。
6、乙方在本协议指定地区内展开业务,不得跨地域销售。
7、乙方有保护甲方产品的义务,不得以任何形式泄露甲方的产品机密。
8、帮助甲方进行市场调查、搜集相关信息,及时反映顾客的要求和意见。以便甲方了解市场动态,调整产品市场定位及策略。
第八条 合同的终止
1、合同期限届满时,如乙方达到本协议规定的事项,未给对方造成不良影响及后果,甲方在该区域优先选择乙方作为下一个协议期间的区域总代理。
2、乙方如因经营确实有困难,在不影响甲方的正常经营和处理好用户情况下,有权提
前终止合同,不视为违约。但须提前一个月向甲方申请。
3、如因甲方原因要提前终止合同的,须双方确认同意,甲方须按代理费的双倍偿还乙方;因此给乙方造成损失的,甲方应承担相应的赔偿责任和法律责任。
4、如因乙方原因要提前终止合同的,或是由于乙方销售中出现问题影响公司正常业务开发或给公司造成损失的),乙方需向甲方结清所有甲方应得分成款项;因此给甲方造成损失的,乙方应承担相应的赔偿责任和法律责任。
第九条违约责任与纠纷解决
1、就分成方式甲乙双方以按月结算方式,如乙方在规定的期限内未给甲方结算,甲方有权终止合同,由此给甲方带来经济损失,甲方有权追究其法律责任。
2、所有款项来往均按规定执行,如对方在规定的期限内未作出结算,每逾期支付一天,违约方向对方支付逾期部分款项的千分之五作为逾期违约金,并有权终止合同。
3、双方应严格按照此协议规定履行相关条款,如双方在履行合同时发生纠纷,应尽量协商解决;协商不成,任何一方可提请到有关仲裁部门申请仲裁。
未尽事宜,双方协商解决,并以附件方式加入本合同,补充条款具有同等的法律效力。
甲方:成都领房科技信息服务有限公司甲方:
代表签字:
网络协议仿真软件的设计与实现 第3篇
近年来, 随着Internet不断的发展变化出现很多新的需求, 人们开发新的协议和算法来满足这些变化的需求。由于网络协议是抽象的, 很多人不易理解, 所以用仿真软件的设计与实现来了解网络协议。
本论文采用了Win Pcap驱动对链路层数据帧进行高效捕获, 并针对四种具体协议ARP、IP、TCP、UDP进行协议分析。借助Win Pcap来研究Windows平台下的网络协议仿真技术, 这不仅能促进网络嗅探系统的改进和发展, 还能促进Win Pcap本身的发展。
2 网络协议及协议仿真技术
2.1 网络协议
2.1.1 OSI七层参考模型
在网络历史的早期, 国际标准化组织 (ISO) 和国际电报电话咨询委员会 (CCITT) 共同出版了开放系统互联的七层参考模型, 即应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。每一个层次上运行着不同的协议和服务, 并且上下层之间互相配合, 完成网络数据交换的功能。然而, OSI模型仅仅是一个参考模型, 并不是实际网络中应用的模型。实际上应用最广泛的商用网络模型是TCP/IP网络参考模型, 将网络划分为四层, 每一个层次上运行着不同的协议和服务。
(1) TCP/IP参考模型
TCP/IP参考模型被称作因特网分层模型、因特网参考模型 (Intemet Reference Model) 。TCP/IP协议被设计成四个层次, 其中应用层对应于OSI模型中的应用层、会话层、表示层, 传输层和网络层分别对应OSI中的相应层, 网络接口层对应于OSI中的数据链路层和物理层。
(2) OSI模型与TCP/IP模型的比较
与OSI参考模型不同, TCP/IP协议并不完全符合OSI的七层参考模型, 如表2-3所示。TCP/IP参考模型更侧重于互联设备间的数据传送, 更注重实用性, 而不是严格的功能层次划分。OSI参考模型在解释互联网络通信原理上比较适合, TCP/IP在实用性上面比较好, 因而成为了互联网络协议的市场标准。
2.2 仿真技术简介
本文所做的网络协议仿真软件实际是嗅探器, 嗅探器是指运行在TCP/IP协议、以太网协议、IPX协议或者其他协议的网络上, 可以获取网络信息流的软件或硬件。现在的嗅探器一般都是指软件意义上的, 而不是硬件意义上的, 软件嗅探器成本要比硬件嗅探器低得多, 并且使用方便, 但是在性能方面会比硬件嗅探器差, 后者一般是用在要求比较高的地方。
2.3 Win Pcap 简介
Win Pcap是由意大利的Fulvio Risso和Loris Degioanni等人实现的应用于Win32平台数据包捕获与分析的一种驱动软件包, 并提供了在Windows操作系统下的开放源代码, 是一套高性能API封装库, 有一套标准的抓包接口专门用于网络数据包的截获, 并在其基础上增加了自定义数据包的发送能力以及针对Win32平台的扩展函数, 独立于Windows操作系统的协议栈。
3 详细设计
3.1 系统功能模块图
软件主要由以下几部分构成:
界面 (CaptureP acket Dlg类) 减少用户等待程序启动时枯燥的时间, 同时显示作者和版本信息。
网卡选择 (Adapter Select类) 选择主机上的某一张网卡, 并与之绑定, 设之为混杂模式, 为后续抓包的基础。
过滤规则选择 (Filter类) 选择用户感兴趣的协议类型进行抓包, 本系统支持tcp, udp, arp, icmp.ip协议, 并且具有良好的扩展性
数据包处理和显示 (Packet Info类) 这是整个系统的核心部分。主要的作用就是将捕获到数据包根据不同协议, 进行数据包信息的展示, 数据内容和数据包数量的显示, 界面友好。同时为了避免长时间没有数据包到达而产生的堵塞情况, 本系统使用了创建子线程来对数据包进行处理。
数据保存 (CFile类) 将数据保存成xml形式, 以供将来查看。帮助文件 (已编译的HTML文件) 帮助第一次使用此软件的用户。
3.2 系统流程
程序在执行过程中有两个核心的工作, 一是调用Winpcap函数库实现下层抓包。二是对抓到的包文进行分析。下面分别列出两个核心过程的基本算法与相关的实现代码。
抓包算法:
第一:初始化Winpcap开发库
第二:获得当前的网卡列表, 同时要求用户指定要操作的网卡
第三:获得当前的过滤规则, 可为空
第四:调用库函数, pcap_loop, 同时并指定其回调函数, 其中其回调函数为数据包分析过程。
分析算法:
第一:得到数据包, 先将其转存到内存里, 以备以后再用。
第二:分析当前的数据包, 分析过程如下:
数据包的前14个字节 (Byte) 代表数据链路层的报文头, 其报文格式是前6Byte为目的MAC地址, 随后的6个Byte为源Mac地址, 最后的2Byte代表上层协议类型这个数据很重要, 是我们分析上层协议的依据。
第三:结束本次分析。
3.3 详细设计
3.3.1界面实现
(1) 菜单部分
菜单部分有四项:操作、设置、数据管理、帮助。
操作下面有启动、暂停、退出三个选项。
启动用于开启捕获数据包;暂停用于暂停数据包的捕获;退出用于退出本系统。
点击关闭按钮不会立即退出, 而是以系统托盘的形式在后台继续运行。
(2) 选择网卡
这个功能采用winpcap的pcap_findalldevs () 函数来实现, 它返回一个pcap_if结构的链表, 每个pcap_if结构含有一个网卡适配器的信息。其中name和description这两项分别包含了响应网卡的名称和描述, 使我们更清楚地了解网卡的信息, 增加了易读性。
(3) 过滤规则
也许我们只对一些特定的服务或者端口的通信感兴趣, 如我们想监听FTP服务的2l端口, 或Http服务的80端口, 我们把一些价值不大的包都过滤掉, 只留下我们想看到的数据包, 这就是数据包过滤模块的作用。此处使用了Win Pcap的两个关键函数pcap_compile () 和pcap_setfilter () 。
(4) 数据包捕获
上面我们已经设置好了数据的过滤规则, 然后就要使用pcap_dispatch () 或pcap_loop () 函数进行捕获。这两个函数功能非常相似, 区别是pcap_dispatch O当超时时间到了会返回, 而pcap_loop () 直到数据包被捕获才会返回。
(5) 数据包分析
数据在网络上传输的时候, 首先经过打包的一个过程, 每经过一层就会加上这一层的头部, 然后经过物理线路传输到另一台主机, 再进行解包, 即数据是先经过从上到下的一个封装, 然后再经过从下到上的一个解封的过程, 实现了计算机之间的数据交换。下面是数据包的协议解析流程。
1) 协议分析-以太网数据链路层帧类的实现
对于以太网的链路层数据帧来说, 前14个字节代表数据链路层的帧头, 其中前6个字节为目的网卡地址, 后面的6个字节为源网卡地址, 再后面的2字节代表数据帧所承载的上层协议类型, 提取出这两个字节的数据, 我们就可以得到上层协议的类型。
2) 协议分析-ARP帧类得实现
以下是ARP帧的结构, 根据ARP帧结构所涉及的类实现的部分代码如下:
3) 协议分析-IP数据包类的实现
IP头结构如表所示, 根据IP包结构所涉及的类得部分代码如下:
通过以上的设计过程实现了一个网络数据报抓包软件, 可以自定义过滤规则, 显示捕获数据包的列表, 以协议树的形式显示数据报的协议层次。
4 系统测试
测试环境的构建, 需要一台集线器, 三台计算机, 并都已经连接到因特网。网络抓包软件能完成预期的要求, 进行数据包截获、分析, 显示出分析结果。通过测试结果还可以观察到捕获模块能够实现将网络接口设置为混杂模式, 同时捕获局域网内的数据包。
5 结束语
本文主要通过对数据包的抓捕与分析机制进行研究, 参考了大量有关抓捕数据包的专业文献, 由此了解国内以及国际上主要的抓捕分析数据包的技术方法, 并通过制作一个共享环境下的的数据抓包软件的具体实现以对该机制进行深一步的了解, 实现了一个网络协议仿真软件, 经过实际测试证明可以比较高效地捕获到设定的数据包,
参考文献
[1]尤晋元, 史美林等著.Windows操作系统原理[M].北京:机械工业出版社, 2001.08.
[2]韩新宇, 章惠君.Windows下实现网络数据包捕获[J].维普资讯网.
[3]李久进.MFC深入浅出.MFC设计到MFC编程[M], 武汉:华中理工大学出版社, 1999.06.
[4]丁勇, 黄凌云, 蒋朝根.深入剖析嗅探器[J].微计算机应用, 2003.
[5]陈千, 马剑锋, 焦政.Sniffer技术在网络管理中的应用和研究[J].计算机工程与设计, 2004.
软件员工保密协议 第4篇
一、本协议为中国石油化工集团公司发布的员工保密协议示范文本,集团公司、股份公司各分(子)公司和资产经营公司各直属单位简称所属单位参照使用。
二、本协议甲方是用人单位,为中国石化(集团公司、股份公司、资产公司)所属单位;乙方是劳动者,为与甲方形成劳动关系的员工,乙方应在合同中准确填写身份证号码。
三、本协议中的空格()必须填写:第五条第二款空格内的年限,原则上为 3 年,双方也可另行商定;第八条(b)有限期保密时间原则上不低于 10 年;第十二条违约金金额由甲方根据乙方的涉密程度确定;第十八条协议签订地为甲方所在地。
四、签订本协议书,甲方必须使用本单位合同专用章,不得使用内部职能部门章或其他业务专用章代替;不得使用复印件。乙方本人应使用签字笔或钢笔签字。
五、本协议书在乙方上岗前签订。可以单独签订,也可以作为劳动合同附件。签订后甲方所执原件由人事部门存档。
软件协议 第5篇
关键词:Modbus协议,变频器,远程控制
1 引言
Modbus通信协议具有开放性好、易实现、扩展性好、可靠性高等优点,因而具有广阔的应用前景,被越来越多的设备厂商所支持。不同厂商生产的控制设备可以连成Modbus工业网络,由Modbus通信的主站对现场设备和仪表进行远程监控,实现非常好的监控效果和系统性能。目前Modbus通信主站主要是由PC机来做,因为在PC上开发Modbus通信主站软件更容易;但在某些工程项目应用中,用PLC作为Modbus通信的主站不仅可以完全满足系统性能需要,而且还会带来在成本和可靠性方面的优势。
2 Modbus通信协议
Modbus协议没有规定物理层,它定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。Modbus规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。Master可以单独和指定的S l a v e端通讯,也能以广播方式和所有Slave设备通讯。
控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信方式(波特率、校验方式等),在配置每个控制器的时候,在同一个Modbus网络上通信的所有设备都必须选择相同的传输模式和串口参数。
其中,ASCII模式和RTU模式的数据格式分别如表1和表2所示:
Modbus从设备地址范围为0247范围内的整数值,0是用作广播地址,使所有的设备都接受主站消息。Modbus协议需要对数据进行校验,除可以定义字符格式及奇偶校验方式外,ASCII模式采用LRC校验,RTU模式采用1 6位C R C校验。无论是L R C还是C R C,都是由传输设备计算后将码值加入到消息中,接收设备重新计算收到消息的码值,并与接收到的码值相比较,如果不同则发生错误。
Modbus命令码的可能范围为1255内的整数值,有些代码是通用的,适用于所有的控制器,有些则是应用于某种控制器,还有些保留以备后用。例如,对于台达变频器,该变频器支持的命令码如表3所示[1]:
Modbus的数据项则依不同的被控设备定义而具体含义不同。例如,在RTU模式下将6000(1770H)写入地址为01H的台达变频器的0100H地址,命令讯息.内容.如表4所示:
而且,命令讯息与正确的响应讯息数据内容格式依命令码类型不同而不同,要参照具体的定义才可以明确,而错误的响应则可能由不同的出错原因导致数据内容不同甚至没有响应。
3 Modbus主站软件设计
在设计Modbus主站软件时,选用西门子S7-200系列PLC来做Modbus主站与台达变频器通信,通讯链路采用RS485连接,可以实现PLC对变频器的远程控制。在PLC这一侧,选用自由口方式通信,它是一种完全可以由程序控制的串行通信方式,灵活性很好,可以实现Modbus通信。Modbus主站的通信工作流程如图1所示。
通信进行初始化工作可以在P L C首个扫描周期的初始化程序中完成[2],指令如下所示:
在初始化工作完成后,可以进行通信了,但是在利用通信进行远程控制前,应当尝试建立通信连接以检查通信是否存在故障,如对于台达变频器,将命令码为08H的指令发送给从站,从站返回的讯息与主站发送讯息完全相同,则表明通信工作正常。在通信正常的情况下,主站可以设置变频器的参数,在没有设置参数任务时,主站可以对变频器状态进行查询,以检查变频器是否存在故障。无论是检查通信链路还是做远程控制,Modbus通信模块都是要被调用的,该模块的设计是主站软件设计的关键。Modbus通信模块的软件流程图如图2所示:
对于P L C来说,由于受到最大允许扫描周期的限制,一次完整的通信过程不是在一个周期内完成的,而是分散到多个扫描周期完成。从图2不难看出,Modbus模块需要其他子程序和中断处理程序的支持,它们包括:
PrepCommand子程序按Modbus协议格式准备指令讯息并把讯息放入发送缓冲区。S e n d C o m m a n d子程序对讯息做C R C校验,把结果加到发送缓冲区并发送指令[3]。
XMT0_Complete中断处理程序响应发送完毕中断事件,置标识位并连接接收字符中断事件到Rcv_Character。
Rcv_Character中断处理程序每接收到一个字符该程序都会响应接收字符中断事件,将接收到的字符逐个存入接收缓冲区并计算接收字符数。
CheckRcvBuf子程序对接收缓冲区中数据做C R C校验并根据结果置有关标识位。
对于C R C校验,采用计算法得到CRC码值,其算法如图3和图4所描述:
在P L C中计算C R C校验码值,根据C R C校验算法本身就存在双重循环的特点,把计算任务分散到多个扫描周期中完成,每个扫描周期只做一个讯息字节的校验,这样可以避免扫描周期过长而引起的P L C故障。
4 结束语
上述PLC主站软件在Modbus通信中进行验证,通讯成功且稳定可靠,通讯周期所用时间也完全能满足远程控制的需要,目前已成功应用在海上平台通风系统项目中。鉴于Modbus的开放性和PLC的诸多优点,使得PLC做Modbus主站的研究在实际工程项目中具有很好的应用价值,Modbus的标准化和本文较少涉及具体PLC代码的描述方式也使文中所述方法更具借鉴意义。
参考文献
[1]DELTA公司,VFD-F风机水泵专用型交流马达驱动器使用手册[Z],2003
[2]SIEMENS公司,SIMATIC S7-200可编程序控制器系统手册[Z],2000
软件协议 第6篇
在传统的数字式交流伺服驱动器中, 多采用手动方式来设定驱动器的参数以及观测实时状态, 位置或速度指令则通过脉冲输入或模拟接口进行给定, 参数设定繁琐, 效率低, 操作性差;系统难以实时观测多个状态量, 也没有统一接口对参数和指令进行操作。现场总线网络技术的发展为解决这些问题提供了良好的契机。
CAN-bus是德国Bosch公司开发的一种串行通信网络, 属于现场总线的范畴[1], 基本协议只有物理层和数据链路层协议[2], 需要一个高层协议来定义CAN报文中的标识符和8字节数据的使用。CANopen是一个基于CAL (CAN应用层) 的子协议, 具有很好的模块化特性和很高的适应性, 通过扩展可以适用于大量的应用领域[3]。CANopen实时伺服驱动和运动控制子协议CiA DSP402是专门针对运动控制装置的协议规范, 该协议定义了统一的驱动器功能特性, 便于不同厂商的设备进行互换。
在运动控制系统中实现CANopenDS 402协议的方式主要有两种方案:一是硬件嵌入式实现, 通过扩充协议专用的通信卡来实现。其优点是不需要对现有的程序进行修改, 只需在扩展卡上实现协议, 但是需要专用的微控制器实现协议, 增加了硬件开销。文献[4]所述系统即采用了这种方式。二是软件植入式的实现, 直接利用运动控制系统板上的处理器编程实现协议优点是硬件开销小, 但需要修改系统原有程序, 并且会增加软件运行时间开销。本文主要研究以软件植入的方式在TITMS320F2812数字信号处理器构成的伺服系统中实现CANopenDS 402协议的方法。
1 CANopen协议实现分析
CANopen协议所规定的通信模型特点可以简单地由下面几点概括:
(1) 以COB-ID对CAN报文进行分类;不同类型的CAN报文在应用中有不同的功能;
(2) 对象字典定义;CANopen设备中的所有变量统一采用对象字典的方式进行管理;
(3) 可以根据实际应用, 将对象字典进行模块划分, 并定义标准的运行模式, 实现多种控制功能。
因此软件植入协议的实现方案可以围绕这三个方面进行分析。
1.1 CAN报文分类
CANopen协议将标准CAN报文按照COB-ID分为四类报文[5]:过程数据对象PDO, 服务数据对象SDO, 网络管理对象NMT, 预定义报文或者特殊功能对象。并且规定CAN报文中的11位COB-ID高4位作为功能码来区分不同类型的报文, 低7位作为网络节点编号。TMS320F2812DSP的eCAN模块对CAN报文采用邮箱管理方式, 每个CAN邮箱均支持29/11位的COB-ID的自由配置, 支持8字节的标准CAN报文收发, 对eCAN模块屏蔽寄存器编程可以指定邮箱只处理特定COB-ID的CAN报文, 实现报文的分类
1.2 对象字典 (ObjectDictionary)
CANopen协议的核心是对象字典, CANopenDS 402协议规定了字典中的标准对象, 对设备的操作均通过访问对象字典实现。对象字典通过索引-子索引的方式进行访问。而一般的伺服驱动器具有自身的参数结构, 因此系统可能并不包含协议所定义的标准对象, 需要在原有的参数结构的基础上加入标准对象对应的字典项;同时, 原有的系统参数结构可能并非按照协议规定的“索引-子索引”的数据结构进行定义, 必须对系统原有的参数结构进行适当的改造, 在不影响系统原有功能的基础上, 使其与协议兼容。
1.3 运动控制设备专用子协议CANopenDS 402协议
CANopen运动控制子协议CANopenDS 402协议主要使用了对象字典中的标准化设备规范区域 (索引号0x60000x9FFF) , 该索引范围定义了标准的运行模式以及设备的状态机切换, 如图1所示:
一般的伺服驱动器有自定义的运行状态管理流程以及方法, 并且定义了自己的运行模式, 因此在植入CANopen协议软件模块时, 需要考虑三个方面的问题:一, 如何在原有的系统中通过通信方式实现协议状态机, 且不影响原有系统的状态切换;二:如何在原有系统中增加协议定义的标准运行模式, 并且能和原有的运行模式兼容;三, 协议定义的标准运行模式如何跟原有系统的控制流程结构无缝接口。
2 CANopenDS 402协议软件植入实现
2.1 报文分类以及通信功能的实现
本文采用的伺服驱动器以TMS320F2812DSP作为主控制器, 其eCAN模块具有32个CAN邮箱, 数量足以实现协议规定的4类标准报文对象和邮箱的绑定。以实际应用中对于RPDO 1对象的绑定为例:RPDO 1对象采用协议默认的11位COB-ID值是0x200+NodeID, 其中NodeID为节点在网络中的编号, 将RP-DO 1绑定在11号邮箱, 只需将11号邮箱的ID寄存器设定为COB-ID值, 由于实际中eCAN模块采用的是扩展的29位ID, 需要将其左移18位。
四类不同类型报文的功能实现完全按照协议规定:NMT报文负责节点网络管理;SDO报文负责对象字典的读写操作;PDO报文负责对象字典中与运动控制相关的指令和状态的映射支持同步和异步两种传输方式;特殊报文对象在本设计中主要包含同步报文服务。
虽然协议中有自定义PDO映射的可选功能, 但是设计中从实用性出发, 采用了固定的PDO映射, 4组PDO对象按照预定义的方式对字典进行映射。
对于同步报文的处理, 由于所设计的伺服驱动器为CANopen从节点, 只需响应同步报文而无需产生同步报文, 因此可以利用处理器的CAN邮箱绑定接收同步报文, 再在相应邮箱的接收中断中写入同步处理函数即可实现从节点同步。
上述四类报文都只对由协议定义的对象字典进行操作, 因此通信协议的实现可以独立于原系统进行设计, 要将通信协议程序模块植入原有驱动器, 只要在原有程序的多级背景循环中选择适当位置调用通信函数。实际设计中选择在周期为1ms的循环中进行通信处理。其流程如图2所示:
2.2 对象字典与原驱动器的接口
实际设计中对象字典采用了以下数据结构:每一个对象都被定义为8字节线性数据结构, 从低字节开始依次为2字节的索引, 1字节的子索引, 1字节的读写权, 4字节的数据内容, 低字节在前, 长度少于4字节则高位以0填充。
在设计字典与原驱动器参数的接口方式时, 需要考虑以下两方面:一是协议规定所有伺服驱动器参数都能统一索引;另一方面对伺服驱动器的参变量分类:第一类是伺服驱动器的控制参数, 如各控制环节PID控制参数、滤波器参数等。其特点是在运行过程中不需要经常改动。第二类是伺服驱动器运行过程中的指令和状态量, 如电机的转速指令和转速反馈, 电流指令和电流反馈等。其特点是在运行过程中会经常改变。这两类参变量对实时性和灵活性的要求存在差异性, 要实现字典的统一索引, 则这两类不同特点的变量不能采用同样方式与字典接口。
实际设计中, 伺服驱动器的控制参数被定义到对象字典的厂商自定义区 (索引号0x2000-0x5FFF) , 为了防止全局控制参数产生二义性, 对象字典并未加入对控制参数的实体项, 只是加入了参数索引号, 即索引值0x2002定义为全局参数索引, 而子索引号直接采用伺服驱动器原有的参数编号。程序通过字典对控制参数量的访问则采用了程序区分的方式, 在字典访问程序中增加分支处理, 当判定索引号为驱动器控制参数时, 直接对原驱动器程序定义的参数变量数据结构进行操作;对于伺服驱动器运行过程中的指令和状态变量, 定义了中间数据结构进行接口, 对象字典的操作只访问中间数据结构, 而原程序通过访问中间数据结构来处理通信给定的指令量和状态量, 实现了通信协议模块的独立性。
2.3 应用子协议的实现
应用层子协议CANopenDS 402协议定义了设备状态机和标准运动控制模式, 如轨迹位置模式、轨迹速度模式、回零模式等[6]。如何利用伺服驱动器已有的三闭环控制结构, 实现状态机标准运行模式, 是实现应用层协议所规定的运动控制模式要解决的问题。
状态机的实现, 只需在原程序背景循环中加入状态机函数, 根据对象字典的控制字和状态字进行相应切换即可实现;而标准运行模式的实现, 则需要利用伺服驱动器原有的控制功能。驱动器原有的程序采用了结构化编程, 将运动控制的位置环、速度环和电流环设计成了独立的子模块进行调用, 每个模块都定义一个数据结构便于接口。要实现协议标准运行模式, 可以采用类似的方式, 对每种运行模式, 定义一个数据结构存放该模式所需的指令和状态与原有控制软件接口, 并在伺服驱动器主控程序中加入运行模式选择, 对不同的模式进行分支处理, 即可在兼容系统原有功能的基础上, 实现CANopenDS 402协议定义的运行模式。以轨迹位置模式为例, 其实现流程如图3所示:
3 CANopenDS 402协议实现及实验结果
下面以PC机为主站, 伺服驱动器为从站, 通过主站发送命令, 让从站运行在协议标准的轨迹位置模式下, 来验证CANopen协议实现的软件植入方法。
CANopenDS 402的轨迹位置模式支持多种可选的轨迹规划算法, 其中梯形轨迹规划作为常用的运行模式, 需要对系统给定三个运动参数:位置给定、最大速度以及加速度。CANopenDS402协议对象字典包含了以上的运动参数, 它们在字典中的索引为:位置给定 (索引号0x607A) , 轨迹速度即梯形轨迹最大速度 (索引号0x6081) , 轨迹加速度 (索引号0x6083) 。实际设计中对以上运动参数采用了PDO映射的方式, 以保证位置指令, 速度指令和加速度指令传输的效率。
主站利用PC机和PCI接口卡扩展出CAN总线接口, 主控软件使用VC++编程。利用主控软件对设备进行初始化配置后, 让设备进入运行状态, 并选择轨迹位置运行模式, 然后对从站依次发送PDO 3, PDO 2和PDO 1来指定位置轨迹运行模式中的加速度和减速度, 最大速度和位置指令, 并且发送最后一个PDO数据时将控制字中的命令执行位设置为则伺服驱动器立刻执行上位机所给定的轨迹规划命令。实际中使用的PDO映射表如图4所示:
伺服驱动器在接收到位置指令, 速度指令以及加速度指令后, 每个位置环周期都调用轨迹规划函数, 计算出位置环的位置给定增量值。实验中, 编码器分辨率为10000pulse, 系统的位置环周期为T=300μs。位置指令为Pref=0x1000pulse, 格式为32位整数;匀速段的速度指令给定为Vref=0xA0000pulse/T, 其中低16位表示小数部分, 则实际速度给定换算后为加速度给定为a=0x1000pulse/T 2, 低16位表示小数部分。对轨迹规划过程中驱动器速度指令和速度反馈采样, 通过CAN总线回送采样数据到PC机, 实验结果如图5所示 (速度反馈量化误差为20r/min) :
从实验结果可以看到, 伺服电机可以按照梯形规律进行加减速。验证了软件植入CANopenDS 402应用层协议的正确性。该方法可以扩展系统的应用, 完成分布式网络化控制。
4 结论
本文采用了以软件植入的方式实现了CANopenDS 402协议, 实验结果表明, 植入的CANopenDS 402协议软件模块能够很好的与原系统软件兼容, 实现方法简单易行, 可以方便地扩展系统的控制功能。
参考文献
[1]王黎明, 等.CAN现场总线系统的设计与应用[M].北京:电子工业出版社, 2008.
[2]史久根, 等.CAN现场总线系统设计技术[M].北京:国防工业出版社, 2004.
[3]饶运涛, 等.现场总线CAN原理与应用技术[M].第2版.北京:北京航空航天大学出版社, 2007.
[4]李博, 李晓汀, 郇极.CANopen运动控制协议驱动程序设计[J].组合机床与自动化加工技术, 2007, 4:52~55.
[5]CAN in Automation.CiA Draft Standard301V4.02[Z].13February2002.
软件协议 第7篇
关键词:嵌入式微控制器,ARM,远程更新,以太网,TFTP,bootloader,NORFLASH固化
0引言
以太网以其高速、高效、高性能的优点, 已经在金融、商业和各种工矿企业得到了广泛应用。现在, 越来越多的微控制系统都设计了以太网通信接口, 这给软件的远程更新提供了有利条件。传统的ARM微控制器软件更新方式是通过现场对芯片编程或者将其回收编程来实现的[1]。在产品数量较多、产品分布区域较广的情况下, 采用该方式实现对软件的更新将耗费大量的人力和物力。因此, 实现远程更新就显得尤为重要。能进行远程更新的系统可以大大节省维护升级成本, 同时也能增强产品的竞争力[2]。
在实现远程更新便利性的同时, 也要保证微处理器的运行软件在完成更新之后能够正常启动并可靠运转。本文提出利用bootloader技术[3]对无操作系统运行环境下的微处理器的运行软件实现远程更新, 即开发一个bootloader程序来实现微控制系统开机启动后的远程通信和程序下载固化, 并启动所下载的新应用程序, 从而实现嵌入式系统软件的远程更新。Bootloader程序基于TFTP通信协议, 这样能充分提高对大文件的下载速度[4], 并有效地提高远程更新的可靠性。
1系统结构
ARM软件远程更新系统主要由以太网接口模块、微处理器模块以及存储器模块3个部分组成, 如图1所示。
微控制器选用具有ARM7内核的LPC2290。LPC2290没有片内FLASH, 其外部存储器模块分为NOR FLASH和RAM两部分。NOR FLASH选用2 MB SST39VF1601, RAM选用8 MB MT45W4MW16。以太网接口芯片选用的是DM9000E 10/100 M以太网控制器。另外, 将LPC2290的一个GPIO口连接一个按键, 作为升级请求按键;再选择一个GPIO口连接LED指示灯, 作为升级开始/完成指示灯。
2系统工作原理
将设计好的bootloader程序固化在从NOR FLASH起始地址开始的低地址区域, 剩余地址空间用于存放用户应用程序。系统通电启动后, 将从NOR FLASH引导运行。此时, bootloader程序将完成对LPC2290和RAM的初始化, 并将bootloader代码的剩余执行部分复制到RAM中运行;然后完成DM9000E的初始化, 接着打开LPC2290内部的定时器来检测升级请求按键是否被按下。如果在定时时间内检测到升级请求按键被按下, 则使指示灯闪烁一次, 表示升级开始。此时bootloader程序将通过TFTP协议向上位机服务器请求下载新的应用程序。接收到的TFTP数据包首先缓存在RAM中, 随后bootloader程序调用NOR FLASH擦除程序擦除用户应用程序地址段一个block的存储区, 然后将数据包的内容以字编程的方式固化在该存储区。将所有接收到的数据包固化到NOR FLASH之后, 程序退出与上位机服务器的TFTP通信, 然后点亮升级完成指示灯并跳转到用户应用程序的首地址, 开始执行新的应用程序。此时, 原来的应用程序已经被擦除, 并被新的应用程序所覆盖。若升级请求按键没有在定时时间内被按下, 则程序直接跳转到用户应用程序的首地址开始执行。
3系统硬件设计
对于系统微控制器LPC2290, BOOT[1:0]脚的状态控制着引导方式。这里选择将P2.27脚接下拉电阻, 使得复位时LPC2290的BOOT[1:0]状态值为01, 表示从Bank0引导启动。LPC2290含有外部存储器控制器EMC。EMC是一个AMBA AHB总线上的从模块, 它为AMBA AHB系统总线和外部存储器器件提供了一个接口。该模块可同时支持多达4个单独配置的存储器组, 每个存储器组都支持SRAM、ROM、FLASH存储器或一些外部I/O器件[5]。
3.1 以太网接口电路设计
LPC2290使用16位总线方式对DM9000E进行控制, 并使其工作在100 M全双工模式下。以太网接口电路如图2所示。LPC2290的数据总线D0~D15与DM9000E的SD0~SD15连接, 地址线也相应连接。LPC2290的片选线CS3与DM9000E芯片的AEN端连接, LPC2290的地址线A2与DM9000E芯片的命令/数据使能端CMD连接。这样, 结合片选线得到的DM9000E的地址端口的32位地址为0x83000300, 其数据端口的32位地址为0x83000304。
3.2 存储器接口电路设计
对于LPC2290与SST39VF1601的接口电路, LPC2290的片选线CS0与SST39VF1601的
对于LPC2290与MT45W4MW16的接口电路, 由于MT45W4MW16也是采用16位总线接口, 所以使用LPC2290的地址总线A1~A23与其连接。LPC2290的片选线CS1与MT45W4MW16的
4系统软件设计
所设计的bootloader程序主要完成系统初始化、开始TFTP通信、对FLASH进行擦写操作和执行程序的跳转等功能。整个软件的工作流程如图3所示。
4.1 系统初始化程序
系统初始化程序依次完成对外部总线控制器的初始化、对堆栈的初始化、对定时器配置和对DM9000E网卡芯片的初始化。实现对DM9000E网卡芯片的初始化必须通过设置DM9000E网卡芯片内部的寄存器才能完成。通过如下几个读端口与写端口的宏定义:
分别实现了DM9000内部寄存器读函数DM9000_regr () 和DM9000E内部寄存器写函数DM9000_regw () , 并由eth_init () 函数完成对DM9000E网卡芯片的初始化。DM9000E网卡芯片的初始化流程:首先复位DM9000E网卡芯片, 延时1 ms后激活DM9000E内部PHY的功能, 然后设置PHY的工作模式;清除状态标志位, 清除中断标志位;设置DM9000E的MAC地址;使能DM9000E的接收功能;中断使能;最后延时等待初始化完成。
系统初始化完成之后程序进入定时检测按键状态阶段。在所设定的5 s定时时间内, 系统循环检测与升级请求按键相连的GPIO口的输入电平状态。如果检测到低电平, 程序将进入TFTP通信模块。
4.2 TFTP通信模块程序
TFTP即简单文件传输协议, 是一种基于UDP 的传输协议, 比FTP协议简单和短小, 因此, 更有利于在存储资源相对较少的嵌入式系统中使用。TFTP协议同样分为客户端和服务器端, 将嵌入式目标平台作为客户端, 远程PC作为服务器端。除了需要实现应用层的TFTP协议之外, 还需要实现数据链路层的ARP协议, 用以获得远程PC的MAC地址, 以及网络层的IP协议和传输层的UDP协议。
TFTP共有5种类型的报文:RRQ、WRQ、DATA、ACK和ERROR[3]。每个TFTP数据报的前面添加8 B的UDP首部形成UDP报文, UDP报文的前面添加20 B的IP首部形成IP数据报。将通过TFTP协议下载新的应用程序的过程设计成客户端从服务器端读文件的过程, 其大致流程:首先, bootloader程序在进入TFTP通信模块后, 将向远处PC服务器发送读请求RRQ的TFTP数据报。该数据报包含需要读取的二进制文件名和文件模式, 这里设置文件模式为octet。如果这个文件能被这个客户端读取, PC服务器端将返回块编号为1的数据分组DATA。客户端将发送块编号为1的ACK, 确认收到数据分组。服务器端随后发送块编号为2的数据, 客户端发回块编号为2的ACK。重复该过程直到这个文件传送完毕。除了最后一个数据分组可能含有不足512 B的数据外, 其它每个数据分组均含有512 B的数据。当客户端收到一个不足512 B的数据分组时, 说明文件读取完毕。随后, 程序将退出TFTP通信模块, 进入跳转子程序。跳转子程序由汇编语言编写, 直接对ARM的程序指针PC进行操作, 完成程序的跳转, 执行新的应用程序。
由于TFTP基于不可靠的UDP协议, 因此, 必须在程序中添加能够保证数据有效传输的机制来及时处理分组丢失的情况。在程序中设置了定时机制来达到超时重传的目的, 这样能有效提高远程更新的可靠性。为了能够同时完成对多个客户端的软件升级, 程序中采用了随机端口机制, 即每个客户端采用随机端口号。
4.3 NOR FLASH操作模块程序
在TFTP通信模块程序中, 每收到一个DATA数据分组, 程序将调用NOR FLASH操作函数实现对数据包的FLASH固化。由于所设计的bootloader程序需要固化在NOR FLASH的起始地址, 且因为其大小小于64 KB, 因此, 对NOR FLASH的存储空间作了如图4所示的布局。通过TFTP接收到的数据包将被固化在从0x80010000地址开始的地方, 新的应用程序将覆盖旧的应用程序。在跳转子程序中就是将程序指针PC指向该地址, 从而开始执行新的应用程序。
NOR FLASH操作模块程序中实现了FLASH擦除函数flash_erase () 和FLASH编程函数write_word () 。在对NOR FLASH编程之前, 首先要擦除NOR FLASH。NOR FLASH擦除分为扇区擦除、块擦除和整片擦除。程序中选用块擦除方式。对SST39VF1601的擦除步骤:首先写2个解锁周期, 即在地址0x5555写入0x00AA和在地址0x2AAA写入0x0055;紧接一个设置周期, 即在地址0x5555写入0x0080;接着还是写2个解锁周期;最后一个总线周期向要擦除的块地址写入0x0050, 然后等待擦除的完成。对SST39VF1601的编程采用字编程写入方式, 分4个总线周期完成, 具体步骤:首先写2个解锁周期, 即在地址0x5555写入0x00AA和在地址0x2AAA写入0x0055;紧接一个设置周期, 即在地址0x5555写入0x00A0;第四个周期向要写入的地址写入数据, 然后等待编程的完成。
5结语
提出了一种基于TFTP协议的ARM软件远程更新方案, 设计并实现了远程更新系统。该系统充分利用了以太网的传输能力和其便捷性。通过实验测试, 基于TFTP协议的ARM软件远程更新系统能够保证数据的正确传输和存储。该系统的实现使得对嵌入式系统软件的升级维护难度大大降低, 具有较好的应用前景。
参考文献
[1]栗欣, 周东辉, 孙晓苗, 等.单片机程序远程升级的设计[J].微计算机信息, 2006, 11 (2) :75-77.
[2]姜小梅, 李祥和, 任朝荣, 等.基于ARM的IAP在线及远程升级技术[J].计算机应用, 2008, 28 (2) :123-125.
[3]单承刚, 戴学丰, 刘树东, 等.基于ARM的嵌入式Bootloader设计与启动过程[J].微计算机信息, 2006, 11 (2) :139-142.
[4]汪小燕, 连晓平, 董燕, 等.基于TFTP协议的嵌入式系统开发方法设计与实现[J].华中科技大学学报:自然科学版, 2006, 34 (12) :56-58.
[5]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社, 2005.
软件协议 第8篇
关键词:工业组态软件,非标准通信协议,串口通信,协议转换
数据采集与监视控制系统 (Supervisory Control and Data Aquisition, SCADA) 广泛应用于电力、石油、化工等领域, 其系统包括以下几个组成部分:人机界面 (Human Machine Interface, HMI) 、远程终端控制系统 (RTU) 以及通信网络。其中RTU通过连接传感器采集数据, 并将采集的数据传送给HMI;操作员可以用HMI了解系统状态, 并决定是否要调整RTU的控制;通信网络则提供HMI与RTU之间传输数据的管道。监控中心的HMI组态软件与RTU终端设备, 采用少数几种标准的通信协议进行通信, 如果RTU终端设备采用的是这几种标准通信协议之一, 则可以直接接入系统与组态软件进行通信, 但如果RTU终端使用的不是这几种标准的通信协议, 则无法直接与组态软件连接, 并且由于涉及到许多复杂的专业计算, 又使得这些设备难以被替代。为此, 可采用VC++串口通信技术编写一个协议转换软件, 通过对非标准协议与标准协议的互相转换来实现非标准通信协议组件的接入。
1 标准协议与非标准协议
协议转换软件能实现组态软件接入非标准协议组件需要满足两个条件:组态软件所使用的标准协议与非标准协议组件使用的协议能互相转换;VC++编写的软件能与其它软件或设备进行串口通信。
方案中的组态软件是组态王, 组态王使用Mod BusRTU标准协议与RTU终端设备通信。Mod Bus-RTU协议按主从方式通信, 系统中只有一个主机, 可以有一个或多个从机, 每个从机有唯一的地址。主机和从机的通讯以查询/应答的方式进行, 一次通信过程由主机构建并发送查询数据帧开始。所有的从机都将查看查询数据帧中的地址并与本机地址比较:如果与本机地址不一致, 则不作处理;如果与本机的地址一致, 则按功能码的要求完成操作并构建应答数据帧并发送给主机, 从而结束一次通信过程[1,2]。
Mod Bus-RTU协议数据帧的格式如图11所示。
对于查询帧, 地址码表示主机要查询哪一个从机, 功能码通知从机应该执行何种操作, 数据提供了为执行该操作而需要的一些附加信息, 对于正常情况下的应答帧, 地址码是本机的地址, 功能码与查询帧相同, 数据是从机按要求提供给主机的数据信息。数据校验都采用16位CRC校验方式。
方案中非标准协议组件是成都某公司生产的雷电监测仪。该雷电监测仪使用的是企业自行定义的一种485通信协议[3], 该通信方式只要雷电监测仪检测到雷击事件或跳闸事件, 就会自动将相应的数据帧通过485串口发送给上位机, 同时上位机也可以发送指令查询历史数据。该自定义协议数据帧的格式如图2所示。
帧头是两个固定的字节0xaa55, 长度是除帧头外本数据帧的字节数, 命令表示检测到的是什么事件, 数据提供了所检测到事件的检测结果, 数据校验采用累加和校验方式[3]。
对比以上两种协议的通信方式和数据帧格式可知, 两种协议在数据帧上具有较好的对应关系, 在通信方式上存在的主要问题是Mod Bus-RTU协议采取主从式通信, 只有在组态软件发送查询帧时, 从机才能向组态软件发送应答帧, 而自定义协议规定雷电监测仪只要检测到相关事件就自动向上位机发送数据帧, 不会等待上位机的查询帧。为此, 可以在协议转换软件中设置一个数据缓冲区, 用来暂时存放接收到的数据帧, 等到被查询时再发送组态软件, 这样就可以实现两种协议的互相转换。
2 VC++串口通信技术
使用VC++实现串口通信[4]的方法有3种:使用MSComm控件、使用CSerial Port类或者使用Windows API函数实现串口通信。MSComm控件由微软提供, 编程过程较容易, 但控件内部函数不开放不透明。Windows API是所有Windows应用程序的基础, 但编程过程比较繁琐。CSerial Port类是一个免费开放的串口通信类, 不仅编程过程较容易, 而且类函数均开放透明, 允许使用者进行改造。因此, 本方案的串口通信使用CSerial Port类来实现。
CSerial Port是一个基于多线程的串口通信类, 其工作流程如下:首先设置好串口参数, 再开启串口监测工作线程, 串口监测工作线程检测到串口接收到的数据、流控制事件或其他串口事件后, 就以消息方式通知主程序, 激发消息处理函数来进行数据处理, 这是对接收数据而言的;发送数据可以直接向串口发送[4]。
CSerial Port类定义了多个消息, 但在一般的串口通信编程中只需要处理WM_COMM_RXCHAR这一个消息。WM_COMM_RXCHAR消息的功能是表示串口接收到一个字符并已放入接收缓冲区。
CSerial Port类还定义了多个函数, 但在一般的串口通信编程中经常用到的是Init Port () 、Start Monitoring () 、Stop Monitor () 、Close Monitor () 和Write To Port () 。
Init Port () 在串口通信过程中首先被调用。此函数的作用是初始化串口, 即设置串口的通信参数:需要打开的串口号、波特率、奇偶校验方式、数据位、停止位。这里还可以用来进行事件的设定, 如果串口初始化成功, 就返回true, 若串口被其它设备占用、不存在、或存在其它故障, 就返回false, 编程者可以提示串口操作是否成功。
Start Monitoring () 函数一般紧跟在Init Port () 之后调用。此函数的作用是启动串口监测线程, 如果线程启动成功, 则函数返回true。在调用Init Port () 函数和Start Monitoring () 函数后, 串口就被打开, 各种串口状态和事件就可以被检测到了。
在串口通信过程中, 当需要通过串口发送数据时, 可调用Write To Port () 函数。该函数的功能是写串口, 即向串口发送字符。
在串口通信过程中, 当需要暂停或停止串口监测时, 可调用Stop Monitor () 函数。调用该函数后串口被暂停或停止, 但串口资源仍被占用。
Close Monitor () 函数的功能是关闭串口, 释放串口资源。调用该函数后, 如果要继续使用串口, 需要重新调用Init Port () 和Start Monitoring () 函数。
3 协议转换软件的实现
3.1 软件的总体结构
协议转换软件有3个线程, 主线程显示主界面, 用来设置参数及显示串口通信数据, 两个串口通信线程分别用来与组态王和非标准协议组件通信。软件各部分功能采用模块化处理, 使程序简洁易懂, 便于移植。
(1) 线程间数据传输模块。用于主线程与两个子线程之间传递数据。主界面上设置的参数通过全局变量传递给子线程, 子线程中对参数的修改也通过全局变量反映到主界面。子线程之间的线程同步使用互斥对象 (CMutex) 来实现。
(2) 串口通信模块。用于与组态王和雷电监测仪进行通信。监听并接收来自于组态王和雷电监测仪的数据帧, 并将转换后的数据帧发送给这两个设备。
(3) 协议转换模块。用于Mod Bus-RTU协议数据帧与雷电监测仪非标准协议数据帧的转换。将接收到的Mod Bus-RTU协议数据帧中的数据提取出来, 按照非标准协议构造成新的数据帧, 然后发送给雷电监测仪。同理, 将接收到的非标准协议数据帧中的数据提取出来, 按照Mod Bus-RTU协议生成新的数据帧, 然后在被查询时发送给组态软件。
(4) 数据校验模块。用于对串口接收和发送的数据帧进行校验。Mod Bus-RTU协议数据帧所使用的是16位CRC校验, 非标协议数据帧所使用的是累加和校验。对于接收到的数据帧通过比较按照相应协议的校验方式计算的校验码与接收到数据帧中的校验码是否相同来判断接收到的数据帧是否有效;对于待发送的数据帧则按照相应协议的校验方式来计算生成该数据帧的校验码。
3.2 串口通信模块
串口通信分为串口接收和串口发送。串口发送, 只要在需要发送时调用写串口函数Write To Port () 就可以将数据帧发送出去了。由于串口接收到数据帧的时间是随机的, 所以需要对串口进行持续监测, 以便接收到数据帧后能及时处理。串口通信线程的接收处理流程如图3所示。
3.3 协议转换模块
串口接收到数据帧后将数据帧存放在数据缓存区中。当软件检测到数据缓存区中有新的数据帧时, 就会启动协议转换过程。协议转换的流程如图4所示。
3.4 软件的界面
软件编写好之后和组态软件一起运行于Windows平台。默认状态下软件是在后台运行的, 只有在需要查看时才调出如图5所示的协议转换软件运行主界面。图5中485串口和Mod Bus串口用于设置协议转换软件与雷电监测仪和组态王进行通信的串口号。485接收窗口和Mod Bus接收窗口用于显示接收到的数据帧, 以便查看软件与组态王和雷电监测仪的通信是否正常。
软件工作流程为:首先设置485串口和Mod Bus串口的串口号, 然后打开串口开始对串口进行持续监测, 如果监测到来自组态王的数据帧, 则将其显示在Mod Bus接收窗口, 然后根据组态王数据帧的指令或直接到数据缓冲区中取出新接收到的雷电监测仪数据帧, 转换为应答帧发送给组态王, 或者将组态王数据帧转换为符合非标准协议的数据帧后发送给雷电监测仪。如果监测到来自雷电监测仪的数据帧, 则将其显示在485接收窗口, 然后存放到数据缓冲区中, 等待组态王的查询。
4 结束语
组态软件广泛应用于各领域的监控系统中, 需要与各种使用非标准通信协议的设备互连。本文介绍了一种采用VC++串口通信技术编写一个协议转换软件来解决工业组态软件接入非标准通信协议组件的方案。该协议转换软件已在某智能化电力监控系统中得到应用, 为解决组态软件接入非标准通信协议组件的问题提供了一个参考。
参考文献
[1]吕国芳, 唐海龙, 李进.基于ModBus RTU的串口调试软件的实现[J].计算机技术与发展, 2009, 19 (9) :236-238.
[2]颜河恒, 王晓华, 佟为明.Modbus关键技术分析及节点开发[J].自动化技术与应用, 2006, 25 (5) :49-51.
[3]四川中光防雷科技股份有限公司.ZGLF-2通信协议[M].成都:四川中光防雷科技股份有限公司, 2012.
软件协议 第9篇
TCP/IP协议是当前Internet (广域网) 和以太网 (局域网) 普遍使用的基本的通信协议簇, TCP/IP协议不是一个协议, 而是由一系列协议 (包括TCP和IP协议) 组成的协议簇, 正是因为有了TCP/IP协议, Internet才得以迅速发展成为世界上最大的、开放的计算机TCPIPTCP/IPInternet通信网络。通信网络。
在使用Windows操作系统的主机中, 系统会自动为主机中的网卡绑定TCP/IP协议, 简单配置一下该协议, 主机就可以使用该WindowsTCP/IP网卡与其它主机进行通信了。网卡与其它主机进行通信了。
TCP/IP协议是美国国防部 (DoD) 基于战争的需要, 在寻求把分散的计算机互联成网络的过程, 随着第一个计算机网络ARPA网的出现而出现的。由于TCP/IP协议最初只是在一个小范围内应用, 缺少安全性方面的考虑, 随着计算机网络的普及, TCP/IP逐渐成为一种开放的网络标准协议, 其安全性缺陷也逐渐显现, 主要表现在以下几个方面:
1) TCP/IP协议使用明文传输数据, 不对数据进行加密处理。如果传输的数据被截获, 就会有泄密的风险。
2) TCP/IP协议没有认证机制。发送者无法确认接受方是不是合法的接收者, 同样, 接收者也无法确认数据的发送方是不是合法的发送者。
3) TCP/IP协议没有数据完整性检测机制。即使要传输的数据在传输的过程中被第三方篡改过, 接收者也无从知晓。
2Sniffer软件的数据捕获与解码
Sniffer是一款可以对计算机网络上发生的不同的数据传送进行跟踪、分析从而对网络行为进行统计、管理的软件。Sniffer提供了丰富的图形工具, 可以非常直观地呈现当前网络的连接情况。
Sniffer软件还可以对发生在本网络内的数据传送进行捕获, 并进而在网络模型的数据链路层、网络层、传输层等各层进行解码分析, 从而找出数据传送的规律或问题。从这一点上看, Sniffer就像是一个外科医生, 它可以深入到网络通信的内部, 获取网络通Sniffer信的数据。
在SnifferPro 4.70软件的主界面中, 在菜单“Capture”下, 点击“Start”菜单项, 就可以对以后发生在网络内的通信进行数据捕获了, 当通信完毕, 点击“Stop”可终止捕获, 或者是点击“Stop and Display”终止捕获并可查看捕获的数据。
上述操作也可以使用工具栏上的开始捕获按钮“”, 捕获完成后, 点击终止捕获并查看按钮“”对捕获数据进行查看和分析。
特别需要指出的是, 即使数据传送发生在与本主机并不相干的其它主机之间, 本机上的Sniffer软件也可捕获得到, 因此, 可以利用Sniffer软件进行网络监听, 作为“被动攻击”的工具。所谓被对攻击, 就是对目标网络并不采取主动的攻击行为, 而是对流经本地的数据流进行捕获并分析数据内容, 从而获知一些敏感信息。
当前所广泛使用的以太网 (局域网) 或者是Internet (广域网) 都是使用TCP/IP协议进行工作的, TCP/IP协议是明文传输的, 没有采取加密措施, 这种明文传输的数据一旦被拦截、捕获, 就会发生信息泄露, 给正常的数据通信造成威胁。该文就是利用Sniffer软件可以对网络内的数据传送进行捕获这一功能, 获取网络内的数据通信的一些样本, 再对这些样本进行分析, 从而更加清楚地看出TCP/IP协议缺乏安全机制这一特点。
3TCP/IP数据通信实例的Sniffer分析
在使用TCP/IP协议的网络中, 可以进行多种类型的数据通信服务, 其中Telnet是一种应用较广泛的服务, 它是一个通过创建虚拟终端提供连接到远程主机从而可以实现终端仿真的TCP/IP应用。Telnet远程登录服务通常需要通过用户名和口令进行认证, 其实现过程一般分为以下几个步骤:
1) 本地与远程主机建立连接。该过程实际上是建立一个TCP连接, 用户必须知道远程主机的IP地址或域名。
2) 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT (Net Virtual Terminal) 格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包。
3) 将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端, 包括输入命令回显和命令执行结果。
4) 最后, 本地终端撤消与远程主机之间的连接。
本文就以Telnet服务为实例, 使用SnifferPro 4.70, 抓取其通信过程中的数据, 获取其用以建立TCP连接的用户和密码以及在连接建立完成后所发送的通信数据。
首先, 确定好用以进行Telnet远程连接的主机其Telnet服务已经开启。在本实例中, 远程主机IP地址为192.168.0.106, 本地主机IP地址为192.168.0.100, 在捕获数据前, 可以先进行Telnet远程登录测试, 以确保实验可以正常进行。
在确定远程主机可以正常Telnet登录后, 打开Sniffer Pro软件, 点击工具栏上的开始捕获按钮, Sniffer就开始对网络内的数据通信进行捕获数据了。此时, 打开本地主机的命令提示符窗口, 在命令提示符下输入telnet 192.168.0.106, 回车后输入远程登录的用户名和administrator, 密码345678, 就可以Telnet到远程主机。
Telnet登录成功后, 就可以操作远程主机了, 比如, 要查看远程主机当前的文件目录, 可以在命令提示符下输入dir命令, 该命令返回远程主机当前目录的文件列表。
Telnet登录用户
Telnet登录密码
完成以上操作后, 此时回到Sniffer Pro界面, 点击工具栏上的终止捕获并查看按钮, 图1是对捕获的数据进行解码分析得到的结果, Decode视图的最上面一个窗格记录了数据通信的总过程, 包括Telnet从建立TCP连接的“三次握手”到输入用户和密码进行用户认证, 以及认证成功后在远程主机上所进行的操作。
仔细分析并追踪以上过程, 不难发现, Telnet用以建立TCP连接的用户名为administrator, 如图1, 密码为3456788, 如图2。
继续向下追踪, 在Telnet的TCP连接成功并通过用户认证后, 同样可以解析出在远程主机上进行了显示主机当前目录的dir操作, 如图3。
Sniffer捕获到的操作命令
从以上捕获结果可以看出, 使用TCP/IP协议进行数据通信的Telnet服务, 从初始TCP连接的建立到用户认证, 以及通过用户认证后在远程主机上所执行的命令, 都可以被Sniffer捕获并分析出来。这种数据通信过程如果被截获, 用户名和密码就会被第三方所掌握, 远程主机上的资料也会泄露, 由此会带来很大的安全问题。
4 基于TCP/IP协议的数据通信安全
通过对网络内数据通信的Sniffer捕获并解码, 可以清楚地看出, TCP/IP协议并没有提供数据通信的安全机制, 从这一点上说, TCP/IP协议是存在安全缺陷的。但这并不能否认TCP/IP在网络通信中的作用, 正是有了TCP/IP协议, 才有了今天Internet的蓬勃发展, 其在网络通信中基础性作用和地位至今无法憾动, 更没有哪一种协议能够取代TCP/IP协议。
人们要做的是在TCP/IP协议的基础上, 增加安全性的措施, 对TCP/IP加以弥补和完善。从TCP/IP网络模型上看, 可以从应用层、传输层或者网际层入手, 增加安全性的措施和机制, 提高TCP/IP网络的通信安全。
从应用层来看, 可以对要传输的数据加密, 这样加密后的数据, 即使被第三方所捕获, 也无从获知其内容, 避免数据泄露。在应用层上还可以对要传数据进行哈希运算, 以防止要传输的数据被篡改。
SSL (Secure Sockets Layer安全套接层) , 及其继任者传输层安全 (Transport Layer Security, TLS) 是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间, 为数据通讯提供安全支持。
从网际层来看, 最典型的安全机制当属IPSec。IPSec通过端对端的安全性来提供主动的保护以防止私有网络与Internet的攻击。IPSec协议不是一个单独的协议, 它给出了应用于IP层上网络数据安全的一整套体系结构, 包括网络认证协议AuthenticationHeader (AH) 、封装安全载荷协议Encapsulating Security Payload (ESP) 、密钥管理协议Internet Key Exchange (IKE) 和用于网络认证及加密的一些算法等。这些协议用于提供数据认证、数据完整性和加密性三种保护形式。
Sniffer捕获并解码的SSH通信
另一个与Telnet通信非常类似的服务叫做SSH服务, 它是一种改进了的Telnet服务, SSH在应用层和传输层都增加了安全防护, 因此, 可以有效地杜绝Telnet通信中的一些安全问题。如图4是使用Sniffer捕获的SSH通信数据, 并不能解码出认证的用户名和密码, 也无从知晓数据通信内容。
TCP/IP协议对计算机网络特别是Internet的产生和发展奠定了基础, 但其自身缺乏安全机制, 在信息化不断深入推进的当今社会, 确保信息安全显得尤其重要。TCP/IP协议虽然自身缺乏安全方面的考虑, 但其毕竟是一个开放的协议, 人们可以基于TCP/IP协议进行安全方面的开发, 人类有智慧创造一个为现代社会提供各种便利的计算机网络, 就有智慧让其更安全、更完善。
参考文献
[1]Tanen baum A.S, 潘爱民译.计算机网络第4版[M].北京:清华大学出版社, 2005.
软件协议范文
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


