毕业设计基于串行总线的运行维护系统设计.doc_第1页
毕业设计基于串行总线的运行维护系统设计.doc_第2页
毕业设计基于串行总线的运行维护系统设计.doc_第3页
毕业设计基于串行总线的运行维护系统设计.doc_第4页
毕业设计基于串行总线的运行维护系统设计.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

深 圳 大 学 专升本 毕 业 论 文 设计 题目 基于串行总线的运行维护系统基于串行总线的运行维护系统 姓名 XXX 专业 计算机科学与技术计算机科学与技术 学院 计算机与软件学院计算机与软件学院 学号 2011103213168XXXX 指导教师 XXX 2013 年 05 月 20 日 深圳大学专升本毕业论文 设计 诚信声明深圳大学专升本毕业论文 设计 诚信声明 本人郑重声明 所呈交的毕业论文 设计 题目 基于串行总 线的运行维护系统 是本人在指导教师的指导下 独立进行研究工 作所取得的成果 对本文的研究做出重要贡献的个人和集体 均已 在文中以明确方式注明 除此之外 本论文不包含任何其他个人或 集体已经发表或撰写过的作品成果 本人完全意识到本声明的法律 结果 毕业论文 设计 作者签名 日期 年 月 日 目目 录录 专升本 毕 专升本 毕 业业 论论 文 设计 文 设计 1 摘要摘要 4 引言引言 5 1 1 运行维护系统概述 5 1 2 串行总线概述 5 1 2 1 串行总线特点 5 1 2 2 串行总线原理 6 开发技术概述开发技术概述 6 2 1 四层开发结构简述 6 2 1 1 物理层 6 2 1 2 数据链路层 7 2 1 3 协议层 7 2 1 4 应用层 8 2 2MFC 技术简介 9 2 3 动态链接库简介 9 3 运行维护系统总体设计运行维护系统总体设计 10 3 1 需求分析 10 3 1 1 编写的目的及背景 10 3 1 2 功能需求 10 3 1 3 系统性能需求 11 3 2 系统分析 11 3 2 1 技术可行性 11 3 2 2 经济可行性 11 3 2 3 操作可行性 11 3 2 功能模块划分 11 4 系统的实现系统的实现 12 4 1 运用 API 函数实现串口操作 12 4 1 1 串口相关 API 函数介绍 12 4 1 2 运行维护系统中串口操作的实现 13 4 2 通讯协议的建立 14 4 2 1 上位机与下位机指命解析 14 4 2 2 上位机与下位机通信操作流程图 15 4 3 数据交换层代码的封装 15 4 4 用户界面层的实现 17 4 4 1 打开与关闭串口 17 4 4 2 数字输入输出 17 4 4 3 脉宽调制 18 4 4 4 数模与模数转换 18 4 4 5 电机控制 19 4 4 6 信息栏 20 5 软件的使用软件的使用 20 6 结束语结束语 21 参考文献参考文献 22 ABSTRACT ABSTRACT 23 附录附录 关键代码说明关键代码说明 24 基于串行总线的运行维护系统基于串行总线的运行维护系统 计算机与软件学院 计算机科学与技术 王 艳 学号 20111032131681054 摘要摘要 设备电气自动化的发展已经有几十年的历史 其在国内的发展速度也在不断加快 各种 类型 PLC 在设备自动化中的应用虽然非常广泛 但是其价格一直居高不下 这就给其在国内 的市场带来很大的局限性 在设备自动化中 单片机系统成本低 设计方案较灵活 从而节省工程材料达到降低成本 的目的 在设备自动化的改造中进行此类问题的分析和研究 可以使系统达到一个非常理 想的效果 而通信在自动化行业里不可缺少的环节 本文所涉及的是 传输距离不超过 15 米 所传输数据量较小的 PC 机和单片机的串行通信 RS232C 串行通信在控制领域里应用得很广泛 但在实际应用中又会因所控制的对象 所解决的问题不同而各具特点 如 PC 机对外围设备的读写控件电气元器件或获取其状态 从而对各种类型的设备进行自动化控制 作为一个实际应用项目 本论文也在研究 构建时充分考虑了应用方的需求 以求能 让设计的东西真正付诸于实际的应用之中 关键词关键词 串行通信 运行维护系统 动态链接库 上位机 下位机 引言引言 1 1 运行维护系统概述运行维护系统概述 自动运行维护系统对生产的影响越来越深刻 加快机械制造业技术的改造是自动化技 术与进步发展的主要方向和任务 在技术上依然与外国先进的制造技术相差甚远 所以我 们需要结合自身的实际情况 稳扎稳打走出符合我们实际情况的发展道路 运行维护系统的应用和发展 首先要与生产实际相结合 以发展实用机械自动化技术 为主 我们首先应该明白 发展自动化技术的最终目的是为了服务于生产 因此 运行维 护系统技术的发展 应符合企业运营 生产的需求 以生产中所需条件为导向 在产品的 加工生产中 只有采用与此产品相适应的自动化生产技术 才能让产品取得良好的经济效 益与技术效益 1 2 串行总线概述串行总线概述 随着计算机技术的迅速发展及其在各领域的广泛应用 远程控制以及数据采集系统多采 用上位机和下位机的主从工作方式 由于串行通信具有高效可靠 价格便宜 遵循统一的标准 等特点 因而成为主要的通信手段 微机的分析处理能力较强 有很好的人机界面和大容量的 多种存储方式 所以上位机一般采用微机 而单片机具有价格低 功能强 抗干扰能力好 以及 面向控制等特点 所以下位机采用单片机来构成主从式多机工作模式 本次设计的任务是给出在分布式控制系统中上位 机与下位单片机 LPC2368 之 间进行异步串行通信的解决方案 实现了上位机向多个 最多 8 个 下位机发送信息以及 下位机接收上位机的数据并能够向上位机发送数据的功能 要求在实际运行过程中 简单 方便 稳定可靠 较好地解决上位机与下位机之间的通信问题 1 2 1 串行总线特点串行总线特点 1 异步通讯模式 包括线路空闲 地址位通信协议 2 有两个单独的移位寄存器 输入 输出移位寄存器 3 传输 7 位或 8 位数据 可采用奇偶或无校验 4 可编程实现波特率调整 5 分别发 收单独中断 6 有效地检测到起始位实现从低功耗唤醒 7 状态标志检测错误或者地址位 1 2 2 串行总线原理串行总线原理 在 PC 机和多台单片机的通讯中 确定一个明确而合理的通讯协议是关键 包括对数 据格式 通讯方式 传送速度 传送步骤 检纠错方式以及控制字符定义等问题做出统一 规定 由于已经选择了 UART 的多机通信模式 为了区别不同的分机 必须为每个分机分配 一个唯一的地址 此地址唯一区别各单片机 数据格式采用数据包的形式 一次传输一组 数据 数据包格式如表 1 1 所示 起使标志位下位机地址操作命令数据长度数据内容和校验结束标志 表 1 1 1 起始标志位 1 个字节 2 分机地址 1 个字节 3 命令 数据 1 个字节 4 数据长度 1 个字节 5 数据内容 n 个字节 6 和检验 2 个字节 7 结束标志位 1 个字节 数据格式中的地址位表示与 PC 机通讯的单片机地址 操作命令则表示此次通讯要完 成的操作 在单片机发送上位机接收的时候 协议规定命令 FFH 为上报数据 此时数据 包中的数据长度 数据内容 和检验三个域便填充实际发送数据的个数 数据及和校验 命令 F0H F3H 则表示单片机给 PC 机的反馈信息 此时数据包中的数据长度 数据内容 和检验三个域为空 其中当命令为 F0H 表示接收成功 F1H 表示接收失败并要求重发 F2H 表示单片机有数据上报要求 F3H 表示单片机无数据上报要求 操作命令域在 PC 机 发送单片机接收的时候也有相似的协议规定 开发技术概述开发技术概述 2 1 四层开发结构简述四层开发结构简述 2 1 1 物理层物理层 功能是实现原始数据在通信通道上传输 它是数据通信的基础功能 物理层四个特性 是机械特性 电气特性 功能特性和规程特性 如图 2 1 EIA RS 232C 对电器特性 逻辑电平和各种信号线功能都作了规定 具体如下 1 在 TxD 和 RxD 上 逻辑 1 MARK 3V 15V 逻辑 0 SPACE 3 15V 2 在 RTS CTS DSR DTR 和 DCD 等控制线上 信号有效 接通 ON 状态 正电压 3V 15V 信号无效 断开 OFF 状态 负电压 3V 15V 图 2 1 2 1 2 数据链路层数据链路层 链路层可以粗略地理解为数据通道 物理层要为终端设备间的数据通信提供传输媒体 及其连接 媒体是长期的 连接是有生存期的 在连接生存期内 收发两端可以进行不等的一次 或多次数据通信 每次通信都要经过建立通信联络和拆除通信联络两过程 这种建立起来的数 据收发关系就叫作数据链路 而在物理媒体上传输的数据难免受到各种不可靠因素的影响而 产生差错 为了弥补物理层上的不足 为上层提供无差错的数据传输 就要能对数据进行检错 和纠错 数据链路的建立 拆除 对数据的检错 纠错是数据链路层的基本任务 2 1 3 协议层协议层 串口通信概念非常简单 串口按位 bit 发送和接收字节 尽管比按字节 byte 的 并行通信慢 但是串口可以在使用一根线发送数据的同时用另一根线接收数据 串口是计算机上一种非常通用设备通信的协议 不要与通用串行总线 Universal SerialBus 或者 USB 混淆 大多数计算机包含两个基于 RS232 的串口 串口同时也是仪器 仪表设备通用的通信接口 很多 GPIB 兼容的设备也带有 RS 232 口 同时 串口通信协议 也可以用于获取远程采集设备的数据 串口通信的概念非常简单 串口按位 bit 发送和接收字节 尽管比按字节 byte 的并行通信慢 但是串口可以在使用一根线发送数据的同时用另一根线接收数据 它很简 单并且能够实现远距离通信 比如 IEEE488 定义并行通行状态时 规定设备线总长不得超 过 20 米 并且任意两个设备间的长度不得超过 2 米 而对于串口而言 长度可达 1200 米 典型地 串口用于 ASCII 码字符的传输 通信使用 3 根线完成 1 地线 2 发送 3 接收 由于串口通信是异步的 端口能够在一根线上发送数据同时在另一根线上接收 数据 其他线用于握手 但是不是必须的 串口通信最重要的参数是波特率 数据位 停止位和 奇偶校验 对于两个进行通行的端口 这些参数必须匹配 1 波特率 这是一个衡量通信速度的参数 它表示每秒钟传送的 bit 的个数 例如 300 波特表示每秒钟发送 300 个 bit 当我们提到时钟周期时 我们就是指波特率例如如果 协议需要 4800 波特率 那么时钟是 4800Hz 这意味着串口通信在数据线上的采样率为 4800Hz 通常电话线的波特率为 14400 28800 和 36600 波特率可以远远大于这些值 但 是波特率和距离成反比 高波特率常常用于放置的很近的仪器间的通信 典型的例子就是 GPIB 设备的通信 2 数据位 这是衡量通信中实际数据位的参数 当计算机发送一个信息包 实际的 数据不会是 8 位的 标准的值是 5 7 和 8 位 如何设置取决于你想传送的信息 比如 标 准的 ASCII 码是 0 127 7 位 扩展的 ASCII 码是 0 255 8 位 如果数据使用简单的 文本 标准 ASCII 码 那么每个数据包使用 7 位数据 每个包是指一个字节 包括开始 停止位 数据位和奇偶校验位 由于实际数据位取决于通信协议的选取 术语 包 指任何 通信的情况 3 停止位 用于表示单个包的最后一位 典型的值为 1 1 5 和 2 位 由于数据是在 传输线上定时的 并且每一个设备有其自己的时钟 很可能在通信中两台设备间出现了小 小的不同步 因此停止位不仅仅是表示传输的结束 并且提供计算机校正时钟同步的机会 适用于停止位的位数越多 不同时钟同步的容忍程度越大 但是数据传输率同时也越慢 4 奇偶校验位 在串口通信中一种简单的检错方式 有四种检错方式 偶 奇 高 和低 当然没有校验位也是可以的 对于偶和奇校验的情况 串口会设置校验位 数据位 后面的一位 用一个值确保传输的数据有偶个或者奇个逻辑高位 例如 如果数据是 011 那么对于偶校验 校验位为 0 保证逻辑高的位数是偶数个 如果是奇校验 校验位 为 1 这样就有 3 个逻辑高位 高位和低位不真正的检查数据 简单置位逻辑高或者逻辑 低校验 这样使得接收设备能够知道一个位的状态 有机会判断是否有噪声干扰了通信或 者是否传输和接收数据是否不同步 2 1 4 应用层应用层 上位机应用做为人机交互的界面 的在进行数据通信的软件设计时必须解决好两个方 面的问题 一是可靠性 二是速度 而这两方面的问题可靠性是第一位的 速度只能是在可靠 的基础上的速度 可靠快速转输的实现需要上下位机软件以及通信协议等各个环节的可靠和 其间的相互配合 2 2MFC 技术简介技术简介 MFC 微软基础类 Microsoft Foundation Classes 同 VCL 类似 是一种 Application Framework 随微软 Visual C 开发工具发布 目前最新版本为 8 0 截止 2007 年初 该 类库提供一组通用的可重用的类库供开发人员使用 大部分类均从 CObject 直接或间接派 生 只有少部分类例外 MFC 应用程序的总体结构通常由 由开发人员从 MFC 类派生的几个类和一个 CWinApp 类对象 应用程序对象 组成 MFC 提供了 MFC AppWizard 自动生成框架 MFC 微软基础类 Microsoft Foundation Classes 实际上是微软提供的 用于在 C 环境 下编写应用程序的一个框架和引擎 VC 是 WinOS 下开发人员使用的专业 C SDK SDK Standard SoftWare Develop Kit 专业软件开发平台 MFC 就是挂在它之上的一个 辅助软件开发包 MFC 作为与 VC 血肉相连的部分 注意 C 和 VC 的区别 C 是一种 程序设计语言 是一种大家都承认的软件编制的通用规范 而 VC 只是一个编译器 或者说是 一种编译器 源程序编辑器的 IDE WS PlatForm 这跟 Pascal 和 Dephi 的关系一个道理 Pascal 是 Dephi 的语言基础 Dephi 使用 Pascal 规范来进行 Win 下应用程序的开发和编译 却不同于 Basic 语言和 VB 的关系 Basic 语言在 VB 开发出来被应用的年代已经成了 Basic 语言的新 规范 VB 新加的 Basic 语言要素 如面向对象程序设计的要素 是一种性质上的飞跃 使 VB 既 是一个 IDE 又成长成一个新的程序设计语言 MFC 同 BC 集成的 VCL 一样是一个非外挂 式的软件包 类库 只不过 MFC 类是微软为 VC 专配的 MFC 是 Win API 与 C 的结合 API 即微软提供的 WinOS 下应用程序的编程语言接口 是一种软件编程的规范 但不是一种程序开发语言本身 可以允许用户使用各种各样的第三方 如我是一方 微软是一方 Borland 就是第三方 的编程语言来进行对 Win OS 下应用程序的开 发 使这些被开发出来的应用程序能在 WinOS 下运行 比如 VB VC Java Dehpi 编程语言函 数本质上全部源于 API 因此用它们开发出来的应用程序都能工作在 WinOS 的消息机制和 绘图里 遵守 WinOS 作为一个操作系统的内部实现 这其实也是一种必要 微软如果不提供 API 这个世上对 Win 编程的工作就不会存在 微软的产品就会迅速从时尚变成垃圾 上面说 到 MFC 是微软对 API 函数的专用 C 封装 这种结合一方面让用户使用微软的专业 C SDK 来进行 Win 下应用程序的开发变得容易 因为 MFC 是对 API 的封装 微软做了大量的 工作 隐藏了好多程序开发人员在 Win 下用 C BYTE WritePoint BYTE FullFlag BYTE CycleBuffer BUFSIZE class AFX CLASS EXPORT CUart public CUart void public CUart void public HANDLE m hComm 串口句柄 OVERLAPPED m sOverLapped 定义overlapped 异步操作 结构体 COMSTAT m sComStat 定义串口状态结构体 UartBuffer stBuffer 定义接收缓冲区 public BOOL OpenComPort char chPortName 打开串口 BOOL SetupBitRate DWORD dwBaudRate 设置通信波特率 BOOL SetupTimeout DWORD dwRdInterval DWORD dwRdTotalMul DWORD dwRdTotalConst DWORD dwWtTotalMul DWORD dwWtTotalConst 设备串口超时 DWORD ReceiveChar void 读缓冲区数据 void WriteChar BYTE chTXBuffer DWORD dwSendCount 将数据写向发送缓冲区 4 2 通讯协议的建立通讯协议的建立 4 2 1 上位机与下位机指命解析上位机与下位机指命解析 如表 4 1 建立上位与下位机命令解析 如上位机发送 0 x00000101 最低 8 位 bit0 bit7 为命令位 01 为向下位机发送写数字输出指令 其次 8 位 bit8 18 数据位第 1 参 数 如 01 为写数字输出 1 号端口 Bit7 0 为读状态 Bit7 1 为写数据参数 功能命令字 Bit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8toBit31 置位数字输出0 x0100000000 清零数字输出0 x0201000000 设置数模值0 x0311000000 设置脉宽调制0 x0400100000 2 参 数 停止脉宽调制0 x0510100000 设置马达方向0 x0601100000 设置马达速度0 x0711100000 设置马达位移0 x0800010000 运行马达0 x0910010000 停止马达0 x0A01010000 保留0 x0B11010000 保留0 x0C00110000 获取数字输出0 x8110000001 获取数字输入0 x8201000001 获取数模值0 x8311000001 获取模数值0 x8400100001 2 参 数 获取脉宽调制0 x8510100001 2 参 数 获取马达速度0 x8601100001 获取马达位置0 x8711100001 获取马达方向0 x8800010001 保留0 x8910010001 保留0 x8A01010001 表 4 1 4 2 2 上位机与下位机通信操作流程图上位机与下位机通信操作流程图 如图 4 1 为上位机与下位机通信机制图 图 4 1 4 3 数据交换层代码的封装数据交换层代码的封装 1 通过调用 WINDOWS 的读与文件 API 来对串口进行操作 对这些操作封装成类 CUart 2 将 CCommandWord 扩展了上位机与上位机的数据操作 扩展功能函数如下 class AFX CLASS EXPORT CCommandWord public CCommandWord void public CCommandWord void public BOOL SetDataOutPut DWORD PortNum 置位数字输出 BOOL ClrDataOutPut DWORD PortNum 清零数字输出 DWORD GetDataOutPut void 获得数字输出状态 DWORD GetDataInPut void 获得数字输入状态 BOOL SetPWM DWORD PortNum 设置脉宽调制 DWORD GetPWM DWORD PortNum 获得脉宽调制值 DWORD GetAD DWORD PortNum 获得模拟转换数字值 BOOL SetDA DWORD PortNum 设置数字转换模拟值 DWORD GetDA DWORD PortNum 获得数字转换模拟值 BOOL SetMotorLoop void 电机开始循环运行 BOOL StopMotorLoop void 停止电机循环运行 BOOL JogMotorForward void 点动电机正向运行 BOOL JogMotorReserve void 点动电机反向运行 BOOL SetMotorZero void 点动电机设置零位 BOOL SetMotorInstance DWORD instance 设置电机运动距离 BOOL SetMotorMaxSpeed DWORD maxSpeed 设置电机运动最大速度 BOOL SetMotorDecSpeed DWORD addSpeed 设置电机加减速度 BOOL SetMotorInitSpeed DWORD initSpeed 设置电机运动初始速度 BOOL SetMotorStopSpeed DWORD stopSpeed 设置电机运动停止速度 public CUart CommandUart 定义CUart成员 3 将 1 与 2 的两个类封装在 Common dll 文件中以方便上业务软件的调用 4 4 用户界面层的实现用户界面层的实现 4 4 1 打开与关闭串口打开与关闭串口 图 4 2 包括打开与关闭串口 对信息栏内容进行清空与测试串口 消息函数如下 1 afx msg void OnBnClickedOpenComm 打开关闭串口 2 afx msg void OnBnClickedButtonClearinfo 清空信息栏 3 afx msg void OnBnClickedTestComm 测试串口 图 4 2 4 4 2 数字输入输出数字输入输出 图 4 3 数字输出消息响应函数如下 1 afx msg void OnStnClickeStaticdDo0 DO1 2 afx msg void OnStnClickedStaticDo01 DO2 3 afx msg void OnStnClickedStaticDo02 DO3 4 afx msg void OnStnClickedStaticDo03 DO4 5 afx msg void OnStnClickedStaticDo4 DO5 6 afx msg void OnStnClickedStaticDo05 DO6 7 afx msg void OnStnClickedStaticDo06 DO7 8 afx msg void OnStnClickedStaticDo07 DO8 图 4 3 数字输入通过定时器消息响应函数如下 afx msg void OnTimerDi UINT PTR nIDEvent DI0 DI7 图 4 3 4 4 3 脉宽调制脉宽调制 图 4 4 脉宽调制消息响应函数如下 1 afx msg void OnNMReleasedcaptureSliderPwm1 NMHDR pNMHDR LRESULT pResult PWM1 2 afx msg void OnNMReleasedcaptureSliderPwm2 NMHDR pNMHDR LRESULT pResult PWM2 3 afx msg void OnNMReleasedcaptureSliderPwm3 NMHDR pNMHDR LRESULT pResult PWM3 4 afx msg void OnNMReleasedcaptureSliderPwm4 NMHDR pNMHDR LRESULT pResult PWM4 图 4 4 4 4 4 数模与模数转换数模与模数转换 图 4 5 脉宽调制消息响应函数如下 1 afx msg void OnEnChangeEditDa0 DA0 afx msg void OnEnKillfocusEditDa0 DA0 2 afx msg void OnEnChangeEditDa1 DA1 afx msg void OnEnKillfocusEditDa1 DA1 3 afx msg void OnEnChangeEditDa2 DA2 afx msg void OnEnKillfocusEditDa2 DA2 图 4 5 4 4 5 电机控制电机控制 图 4 6 电机控制消息响应函数如下 1 afx msg void OnBnClickedButtonMotorloop 2 afx msg void OnBnClickedButtonJogforward 3 afx msg void OnBnClickedButtonSetzero 4 afx msg void OnBnClickedButtonStoploop 5 afx msg void OnBnClickedButtonJobreserve 图 4 6 4 4 6 信息栏信息栏 图 4 7 清空信息栏 图 4 7 5 软件的使用软件的使用 1 信息栏 显示测试时的一些信息 目前仅有 PF 下载成功与否的显示 其他都是用弹出对话框 提示 2 马达位置 设置和获取马达位置以及软件限位上下限 取值范围都是 230 单位为软件步 其中 设置马达位置和设置上下限功能只在马达静止时有用 设置马达位置功能常用于马达归位 后设置马达的零位 3 数字输入 获取传感器及马达运动状态 传感器状态用 16 进制数字表示 马达运动状态 1 对应静 止 2 对应运动 点击获取传感器获取当前传感器状态 并用 8 个 LED 示意图直观显示 点击获取状态可以获得马达当前状态 4 数字输出 设置 获取 DO 端口功能以及设置单个 DO 管脚的电平高低状态 设置 DO Pin 和 ClrDOPin 分别将对应的管脚设置为高电平和低电平 Disable 键将设置 DO 口为高阻态 随后对 DO Pin 的操作将被忽略 5 运动 这些功能只能在正常模式下工作 programing 模式暂不支持 在其他模式下将被忽略 在参数栏中输入各参数 点击各按钮驱动马达运动 如果没有报错只说明发送运动命令成 功 并未反映马达是否运动 具体 Motor 是否运动还取决于硬件连接 以及 Motor 的当前 位置是否超出了软件限位的限制等因素 其中相对距离 D 软件步 速度 V 软件步 秒 绝对位置 P PF Num N 延迟 毫秒 T 点击 匀速 相对距离 将使对应马达以 V 匀 速运动 D 匀速 绝对距离 使马达以速度 V 运动到 P PF 相对距离 使马达按照 N 运动 D PF 绝对位置 使马达按照 N 运动到 P 开始循环 使马达 PF 运动 D 停止 T 再 PF 运 动 D 停止 T 如此循环 5 PWM 设置 设置 PWM 的脉宽和 channel 脉宽取值范围 0 1000 Channel 取值范围 0 5 6 数模 模数转换 获取 DAC 通过串行总线获取当前 DAC 设置值 设置 DAC 设置下位机的 DAC 输出 取值范围在 0 1023 之间 输出电压值为 Data 1024 Vref MC100 的 Vref 为 3 3V 并 且模拟电源和数字电源没有隔离 DAC 转换精度受了一定的影响 获取 ADC 读取下位机 ADC 管脚电压值 下位机 ADC 管脚对应的输入电压为 pResult 1024 Vref MC100 的 Vref 为 3 3V 并且模拟电源和数字电源没有隔离 精度受了一定的影响 6 结束语结束语 经过近三个月的设计 在老师的悉心指导和严格要求下 我完成了基于串行总线的运 行维护系统设计 毕业设计是对近三年本科学习成果的一次大检阅 平时课堂上学到的知 识很难融会贯通 通过本次毕业设计 让我们平时课堂上的知识得到了进一步的巩固 通 过毕业设计基本可以将平时所学的一些知识应用到实际的设计中 设计刚开始时 绕了很 多弯路 甚至出现一些错误 造成了很多次的返工 但是 正是这一次次的尝试磨练了我 的耐性并加强了我对软件的操作水平 在这次设计中 我不仅收获了专业知识 还在与同 学的沟通交流方面有了很大的提高 毕业设计忙了两个多月 通过毕业设计的磨练 我相 信我能够更好的将工作做好 把握机遇 在大学里我们得到了最好的锻炼 我们要将学到 的知识转换成力量 为了自己的梦想而努力 参考文献参考文献 1 郑振杰 C 程序设计 北京人民邮电出版社 2005 4 2 柴欣 C C 程序设计 河北大学出版社 2002 8 3 余苏宁 王明福 C 程序设计 北京高等教育出版社 2003 6 4 吕凤翥 C 语言程序设计 第 2 版 电子工业出版社 2007 2 5 李云清 杨庆红 揭安全 数据结构 人民邮电大学出版社 2004 6 6 求是科技 单片机典型模块设计实例导航 人民邮电出版社 2002 7 7 刘守义 王静霞 单片机应用技术 西安电子科技大学出版社 2002 8 8 姚予疆 通信设备接口协议手册 人民邮电大学出版社 2005 4 9 赵炯等 串行数据传输协议的剖析研究 计算机工程 2004 5 10 周韧研 商斌 串口通信开发入门与编程实践 电子工业出版社 2009 4 11 马玉春 串行通信协议的研究及应用 计算机应用研究 2010 3 12 孙光 高效率串行通信协议的设计 仪表技术 2008 7 13 张雷等 串行通信协议的研究与实现 电子工业出版社 2009 4 致谢致谢 本文能顺利完成 首先最要感谢的是我的导师钱嘉伟老师倾注了大量的心血 从选题 到开题报告 从写作提纲 到一遍又一遍地指出每稿中的具体问题 严格把关 循循善诱 此我表示衷心的感谢 同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及 关心我的同学和朋友 通过这此论文再一次系统的学习串行总线相关知识 对先前所撑握 的知识再次巩固 在短暂的几个月的相处时间里 老师渊博的知识 敏锐的思路和实事求是的工作作风 给我留下了深刻的印象 这将使得我终身受益 谨此向老师表示衷心的感谢和崇高的敬意 同时我也感谢我同组的姜明同学及刘燕军同学 是他们在我设计出现困难时热情的帮助了 我 最后 也感谢在我毕设开发过程中 所有帮助过我指导过我的同学和老师们 The operation maintenance system based on RS232 bus ABSTRACTABSTRACT Electrical automation equipment development has got decades of history its pace of development in China is also accelerating Various types of PLC automation application in the device is although very broad but its price has been high which gives it a great deal in the domestic market limitations In automation equipment the SCM system is low cost and designed more flexible thereby it s saving construction materials to reduce costs In the transformation of automation equipment for this kind of problem analysis and research allow the system to achieve a very satisfactory result The communication in the automation industry is an indispensable part This paper is concerned with not more than 15 meters transmission distance which is able to produce smaller amount of data transmitted by the PC and the microcontroller serial communication RS232C serial communication applications in the control field are very wide but still result in practical applications controlled object to solve each with different characteristics such as a PC peripheral device is to read and write on the electrical components or controls access to its state and so with the types of devices for automation As a practical application projects this paper is also studying to build fully account the needs of the application side in order to make design something truly and put it into practical applications Key words Serial communication Operation and maintenance system Dynamic link library Pc Lower machine 指导教师 指导教师 XXX 教授教授 附录附录 关键代码说明关键代码说明 BOOL CUart OpenComPort char chPortName 打串口 m hComm CreateFile chPortName GENERIC READ GENERIC WRITE 0 0 OPEN EXISTING FILE FLAG OVERLAPPED 0 if m hComm INVALID HANDLE VALUE CloseHandle m hComm return FALSE else return TRUE BOOL CUart SetupBitRate DWORD dwBaudRate 设置波特率 DCB dcb memset if GetCommState m hComm dcb DCBlength sizeof dcb dcb BaudRate dwBaudRate dcb ByteSize 8 dcb fParity 1 dcb Parity 1 dcb StopBits 2 if SetCommState m hComm return TRUE BOOL CUart SetupTimeout DWORD dwRdInterval DWORD dwRdTotalMul DWORD dwRdTotalConst DWORD dwWtTotalMul DWORD dwWtTotalConst 设置超时 COMMTIMEOUTS timeout timeout ReadIntervalTimeout dwRdInterval timeout ReadTotalTimeoutMultiplier dwRdTotalMul timeout ReadTotalTimeoutConstant dwRdTotalConst timeout WriteTotalTimeoutMultiplier dwWtTotalMul timeout WriteTotalTimeoutConstant dwWtTotalConst if SetCommTimeouts m hComm return TRUE DWORD CUart ReceiveChar void 接收字符串 DWORD dwReadBytes 256 BOOL bReadStatus DWORD dwErrorFlag ClearCommError m hComm if m sComStat cbInQue return 0 dwReadBytes min dwReadBytes DWORD m sComStat cbInQue bReadStatus ReadFile m hComm stBuffer CycleBuffer 4 if bReadStatus if GetLastError ERROR IO PENDING GetOverlappedResult m hComm return dwReadBytes void CUart WriteChar BYTE chTXBuffer DWORD dwSendCount 写缓冲区 BOOL bWrite TRUE BOOL bResult TRUE DWORD dwError 0 DWORD dwByteWrite 0 if bWrite m sOverLapped Offset 0 m sOverLapped OffsetHigh 0 bResult WriteFile m hComm chTXBuffer dwSendCount if bResult switch dwError GetLastError case ERROR IO PENDING dwByteWrite 0 bWrite FALSE break default break if bWrite bWrite TRUE bResult GetOverlappedResult m hComm if dwByteWrite dwSendCount AfxMessageBox T 串口未打开 BOOL CCommandWord SetDataOutPut DWORD PortNum 定指令 置数字输出 BYTE Temp 4 0 0 0 0 Temp 0 0 x01 switch PortNum case 0 Temp 1 0 x00 break case 1 Temp 1 0 x01 break case 2 Temp 1 0 x02 break case 3 Temp 1 0 x03 break case 4 Temp 1 0 x04 break case 5 Temp 1 0 x05 break case 6 Temp 1 0 x06 break case 7 Temp 1 0 x07 break default break CommandUart WriteChar Temp 4 return TRUE BOOL CCommandWord ClrDataOutPut DWORD PortNum 清数字输出 BYTE Temp 4 0 0 0 0 Temp 0 0 x02 switch PortNum case 0 Temp 1 0 x00 break case 1 Temp 1 0 x01 break case 2 Temp 1 0 x02 break case 3 Temp 1 0 x03 break case 4 Temp 1 0 x04 break case 5 Temp 1 0 x05 break case 6 Temp 1 0 x06 break case 7 Temp 1 0 x07 break default break CommandUart WriteChar Temp 4 return TRUE DWORD CCommandWord GetDataOutPut void 获取数字数出 sprintf char Temp X PortNum for int i 0 i 1 i for int j 7 j 0 j Temp j Temp j 1 Temp 0 0 Temp 1 1 return Temp DWORD CCommandWord GetDataInPut void BYTE Temp 4 0 0 0 0 Temp 0 0 x82 CommandUart WriteChar Temp 4 return 1 BOOL CCommandWord SetPWM DWORD PortNum return TRUE DWORD CCommandWord GetPWM DWORD PortNum return 1 BOOL CInterFaceDlg OnInitDialog CDialog OnInitDialog CSliderCtrl pSliderCtrl CSliderCtrl GetDlgItem IDC SLIDER PWM1 pSliderCtrl SetRange 0 10000 pSliderCtrl SetPos 0 m dwPWM1 0 pSliderCtrl CSliderCtrl GetDlgItem IDC SLIDER PWM2 pSliderCtrl SetRange 0 10000 pSliderCtrl SetPos 0 m dwPWM2 0 pSliderCtrl CSliderCtrl GetDlgItem IDC SLIDER PWM3 pSliderCtrl SetRange 0 10000 pSliderCtrl SetPos 0 m dwPWM3 0 pSliderCtrl CSliderCtrl GetDlgItem IDC SLIDER PWM4 pSliderCtrl SetRange 0 10000 pSliderCtrl SetPos 0 m dwPWM4 0 InitCommand return TRUE void CInterFaceDlg OnSysCommand UINT nID LPARAM lParam if nID dlgAbout DoModal else CDialog OnSysCommand nID lParam void CInterFaceDlg ShowInfo CString str m ListInfo InsertString m ListInfo GetCount str m ListInfo SetCurSel m ListInfo GetCount 1 void CInterFaceDlg OnBnClickedOpenComm static BOOL flag TRUE if flag flag FALSE if m cCommand CommandUart OpenComPort COM5 ShowInfo 串口打开失败 return m cCommand CommandUart SetupBitRate 115200 m cCommand CommandUart SetupTimeout 0 0 0 0 0 SetDlgItemText IDC BUTTON1 COM打开 ShowInfo 串口已经打开 for int i 0 i ClrDataOutP

温馨提示

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

评论

0/150

提交评论