arm+linux平台的modbus现场总线设计

摘 要在传统的仪器仪表中,大多使用ModBus通信协议完成多点数据传输,随着工业技术的进步,传统的仪器仪表大部分不能提供很好的人机交互和网络通信,但嵌入式Linux可以提供很好的人机交互的界面,同时对网络提供完整的支持。ARM是当前移动终端芯片生产的最大厂商,占据了75%的市场。其芯片在嵌入式领域应用广泛。因此在基于ARM和Linux平台上设计ModBus具有重要的意义。本课题在S3C2440硬件平台上,编写自己简单的Uboot,对Linux进行裁剪,制作根本文件系统。顺利启动嵌入式Linux系统,进而编写简单的字符驱动。然后分析TTY架构和基于Linux的串口驱动。根据ModBus中文手册分析ModBus协议,深刻理解该协议。根据UNIX环境高级编程学习Linux下的应用编程。在以上的基础,最终在板载的Linux系统上编写应用程序,实现ModBus协议。本课题综合运用了自动化、电子、嵌入式、模拟电子、数字电路等技术,以S3C2440为核心微处理器设计了硬件电路,以嵌入式Linux系统为基础,设计串口驱动程序,完成了ARM+Linux平台的ModBus现场总线设计。有利用嵌入式Linux在工业领域的渗透。
目录
第1章 绪论 1
1.1 研究背景与现状分析 1
1.1.1 ModBus现场总线应用现状 1
1.1.2嵌入式Linux应用现状 1
1.2 课题简介 2
1.3 本章小结 2
第2章 系统总体设计 3
2.1 系统硬件平台总体设计 3
2.2 系统软件总体设计 4
2.3 本章小结 5
第3章 基于S3C2440的嵌入式硬件平台设计 5
3.1 课题芯片选型和芯片片内资源介绍 5
3.2 S3C2440存储系统构成 5
3.2.1 系统SDRAM硬件构成 5
3.2.2 系统NANDFLASH硬件构成 6
3.2.3 系统NORFLASH硬件构成 7
3.3 S3C2440的GPIO接口的硬件电路设计 8
3.3.1 系统LED模块硬件电路设计 8
3.3.2 系统按键模块硬件电
 *好棒文|www.hbsrm.com +Q: ^3^5`1^9`1^6^0`7^2# 
路设计 8
3.3.3 蜂鸣器模块硬件电路设计 9
3.4 S3C2440的通信接口硬件电路设计 10
3.4.1 系统串口模块硬件电路设计 10
3.4.2 网卡(DM9000)模块硬件电路设计 10
3.5 本章小结 12
第4章基于S3C2440的嵌入式Linux程序设计 13
4.1 uBoot设计 13
4.1.1 start.S启动汇编代码软件设计 13
4.1.2 MMU功能解析 16
4.1.3 LED驱动和按键驱动程序设计 16
4.1.4 串口驱动和DMA驱动程序设计 17
4.1.5 网卡驱动和ARP协议实现 18
4.1.6 Bootm命令移植 18
4.2 嵌入式Linux内核制作 19
4.2.1 删除原有配置文件和遗留的中间文件 19
4.2.2 嵌入式Linux内核的配置 20
4.2.3 嵌入式Linux内核的编译 20
4.3 根文件系统的制作 21
4.3.1 文件系统类型的介绍 21
4.3.2 利用busybox制作根文件系统 21
4.4 tftp下载Linux内核并启动Linux内核 23
4.4.1 tftp下载Linux内核 23
4.4.2 bootm命令启动Linux内核 23
4.5 本章小结 23
第5章ModBus RTU在嵌入式Linux上的实现 24
5.1 嵌入式Linux字符设备驱动程序 24
5.1.1 驱动开发的概述和硬件访问技术 24
5.1.2 字符设备驱动模型 25
5.2 嵌入式Linux TTY架构分析 26
5.2.1 TTY架构解析 26
5.2.2 串口驱动程序分析 26
5.3 ModBus RTU在嵌入式Linux上的实现 28
5.3.1 ModBus现场总线协议分析 28
5.3.2 开关量的读写 29
5.3.3 寄存器的读写 30
5.3.4 ModBus协议在嵌入式Linux上的代码编写 31
5.4 系统整体测试 32
第6章 总结和展望 35
6.1 总结 35
6.2 展望 35
致 谢 36
参考文献 37
附 录1 核心代码 39
1 DM9000核心初始化代码 39
2 ARP协议核心代码 40
3 CRC校验核心代码 43
4 ModBus RTU应用程序核心代码 45
附 录2 实践创新工作与成绩 49
1.科研项目 49
2.论文 49
3.专利 49
4.获奖与荣誉 49
附 录3 外文文献翻译 51
第1章 绪论
1.1 研究背景与现状分析
1.1.1 ModBus现场总线应用现状
ModBus协议诞生于1979年,是Modicon为自己公司的可编程控制器产品专门设计的一种比较流行的现场总线协议。针对PLC产品总共有24种命令,这个协议是为了实现PCL设备与其他设备的数据传输。ModBus协议诞生后,不同的可编程控制设备利用该协议就可以任意的进行组态,相互之间进行通信。并且由于该协议开源,所以被很多公司在工程项目和产品中所使用,用于实现多节点数字通信,ModBus现在已经是在全球的工业领域中最流行的现场总线协议之一。目前支持该协议厂商超过400家,支持该协议的产品超过600种。ModBus协议在物理层可以支持很丰富的电气接口。常见的如RS232等等。
由于并没有具体规定物理层,ModBus不管物理层通过何种网络进行通信的。ModBus协议有不同的模式,分别为:ASCII、RTU以及TCP。其中RTU和ASCII协议规定了报文格式、功能码等等,可以实现主机和从机之间的相互读写。ModBusRTU和ModBusASCII都需要数据校验,其中RTU模式采用的是CRC16数据校验而ASCII模式采用的是LRC数据校验。在TCP模式下,没有使用数据校验。在ModBus三种模式中,RTU是使用的比较多的一种,因此本课题针对于RTU,实现在嵌入式Linux上的移植。
1.1.2嵌入式Linux应用现状
自从Linus把Linux带到了这个世界上,在短短不大三十年的时间里,Linux已经成长为一个运行效率很高,功能十分强大的操作系统。不仅可以和windows、MAC抗衡,在运行速度方面更加是有过之而无不及。由于免费和开源,Linux的源代码可以在官网上任意下载,任何人都可以免费的获得源代码,因此在开源社区,Linux有很多忠实的支持者和爱好者,他们也成了Linux发张的动力和技术人员。不仅如此Linux现在又被移植到很多主流的嵌入式处理器上典型的如ARM、PowerPC、MIPS等等,因此在嵌入式领域Linux也获得了长足的发展。
1.2 课题简介
由于ModBus协议的流行,广泛应用于工控领域当中。随着Linux在嵌入式工业控制领域的渗透,因此把ModBus移植到嵌入式Linux具有十分重要的意义。可以推动嵌入式Linux渗透到工业控制领域。本课题在介绍了S3C2440芯片的外设硬件和裸机程序设计。在硬件和裸机程序的基础上,制作嵌入式Linux内核和根文件系统,再使用tftp客户端程序下载内核文件到内存中,然后使用自己移植的bootm命令启动操作系统,并最终实现ModBus RTU在嵌入式Linux上的实现。在现代工业控制领域,如果使用嵌入式Linux操作系统,会使很多设备提供更好的人机交互界面,更加人性化。本课题在分析了ModBus协议的报文格式后,在嵌入式Linux上,最终实现ModBus RTU。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/dzkxyjs/1745.html

好棒文