基于MODBUS数据采集系统的设计_第1页
基于MODBUS数据采集系统的设计_第2页
基于MODBUS数据采集系统的设计_第3页
基于MODBUS数据采集系统的设计_第4页
基于MODBUS数据采集系统的设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、吉林化工学院信控学院专业综合设计说明书基基于于 M Mo od db bu us s 协协议议的的数数据据采采集集系系统统学生学号: # 学生姓名: # 专业班级: # 指导教师: # 职 称: 教授 起止日期:2014.3.32014.3.23 吉林化工学院Jilin Institute of Chemical Technology吉林化工学院信息与控制工程学院专业综合设计说明书- I -专业综合设计任务书一设计题目:基于一设计题目:基于 MODBUSMODBUS 协议的数据采集系统协议的数据采集系统二二设设计计目目的的1培养学生实践动手能力及独立分析和解决工程实际问题的能力;2培养学生的团

2、队协作精神、创新意识、严肃认真的治学态度和严谨求实的工作作风;3学习SST89E516RD 单片机体系结构及程序开发;4学习电路的焊装和硬件调试;5. 编写完整的实验程序,进行整机调试;6. 学习撰写设计说明书 。三三设设计计任任务务及及要要求求设计并实现基于Modbus 协议的数据采集系统 。系统具有以下基本功能:1利用PCF8591 转换模块实现对外部数据的采集;2使用Modbus 通讯协议实现单片机与上位机的通讯;3. 通过组态王软件实现数据的实时显示。四四设设计计时时间间及及进进度度安安排排设计时间共三周(2014.3.32014.3.23),具体安排如下表:周安排设 计 内 容设计时

3、间第一周1. 掌握SST89E516RD 单片机体系结构;2. 设计采样电路和调试,并应用 Protel 画出其电路原理图。2014.3.32014.3.9第二周1. 学习Modbus 通信协议和组态王;2. 编写实验程序。2014.3102014.3.16第三周1. 整机调试;2. 撰写综合设计报告;3. 答辩。2014.3.172014.3.23五五指指导导教教师师评评语语及及学学生生成成绩绩指导教师评语:年 月 日成绩指导教师(签字):基于Modbus 协议的数据采集系统- II -目 录专业综合设计任务书 I摘要III第 1 章 概述1第 2 章 方案选取22.1 通信方式选择22.2

4、 PCF8591 的选择2第 3 章 硬件电路设计33.1 设计流程图33.2 RS485 通信电路图33.3 单片机最小系统4第 4 章 主要元器件的介绍54.1 SST89E516RD 单片机54.1.1 储存器54.1.2 定时器64.1.3 端口输入/输出6第 5 章 系统电源 7第 6 章 软件设计96.1 编程软件96.2 编程语言的介绍106.3 组态王软件11结论15参考文献16附录 1 电路原理图17附录 2 程序19吉林化工学院信息与控制工程学院专业综合设计说明书- III -摘要此次专业综合设计采用89E516RD 单片机、ADM2582 隔离型RS-485 收发器,利用

5、SIPEX SP3223EEY 芯片 RS232 转换器构成的系统, 89E516RD 单片机作为下位机,应用组态王6.55 软件编制的上位机监控程序 ,应用单片机内部集成A/D 转换器完成对实时电位器电阻模拟量的采集和处理,而组态王用于对下位机参数读写、显示、报警等,从而实现了一套完整可靠的 电阻采集监控系统。上位机和下位机通过Modbus 通讯协议来进行数据的采集。该系统具有使用方便、测量精确、稳定性高、可性强等优点,可以在很多领域应用,如温度、液位、压力等物理量的采集和监控。关关键键字字:89E516RD,MAX232,PCF8591,组态王6.52,Modbus 协议吉林化工学院信息与

6、控制工程学院专业综合设计说明书- 1 -第 1 章 概述计算机网络、通信与控制技术的发展,导致自动化系统的深刻变革。随着微处理器与计算机功能的不断增强,价格急剧降低,计算机与计算机网络系统得到迅速发展。而处于企业生产过程底层的测控自动化系统,由于设备之间采用传统的一对一连线,用电压、电流的模拟信号进行测量控制,或采用自成体系的封闭式的集散系统,难以实现设备之间以及系统与外界之间信息变换,使自动化系统成为 “信息孤岛”。 随着现代工业的发展,对工业设备的控制逐步从单一独立系统向集散控制监控系统发展,因此,我们设计了基于Modbus 协议实现下位机对电压信号的采集和组态王通信 的智能工业控制器监控

7、系统,它的数据通信系统由数据的发送设备、接收设备、作为传输介质的总线、通信协议组成。本设计虽然是简单的用单片机内部集成A/D 转换器进行电压采样,但是利用此原理,并将设计稍加改动,就会演变成很多工业自动化监控系统,例如对温度、压力、液位等工业现场参数的精确控制,并且可以利用上位组态软件实现现场参数的读写、显示、越限报警等 实现了一个完整的工业监控系统。 现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现,将对该领域的技术发展产生重要影响,而本设计所运用的 Modbus 协议更是现场总线中应用较为广泛的一种总线技术。基于Modbus 协议的数据采集系统- 2 -

8、第 2 章 方案选取 2.1 通信方式选择用通信方式来看,有两种总线方式即: RS232 总线和RS485 总线。方案一:采用采用RS232 串行总线方式,它是外部串行总线,通常我们用 9 针线接口进行通信,实际上只用到TXD、RXD、GND 三根线,单端传输方式,最大传输距离是15 米,最大传输速度20Kbit/s,具有串行传输只需要一根传输线即可,在成本上可以有一定的节约。但是典型的RS-232 信号在正负电平之间摆动,在发送数据时,发送端的驱动器输出正电平在+5+15V,负电平在-5-15V 之间。当没有数据传输时,线上未TTL,从开始传输数据到结束,线上电平从TTL 电平到RS-232

9、 电平再返回TTL 电平。接收器典型的正工作电平再 +3+12V,负电平在-3-12V。由于发送电平和接收电平的差仅为2V 到3V,所以共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为15M,最高速率为20Kbit/s。由于RS-232 用于一对收发设备通讯,所以它只适合本地设备之间的通讯。方案二:采用RS485 串行总线方式,它也是外部串行总线, RS-485 可以采用二线与四线方式,二线制可以真正实现多点双向通讯。而在采用四线连接时,只能实现点对多的通信,也就是只有一个主设备,其他全为从设备。它的特点是输入为差分输入方式,最大传输距离为 1200 米,最大传输速率为10Mbit/

10、s,其优点是在RS232 基础上其抗干扰能力极强,同一根电缆线的数据传输可以不受其他线路的干扰,还具有总线收发器灵敏度很高,能检测很低的电压( 200mV),在远距离传输时也能使信号得以恢复。 RS-485 的接口信号电平较RS-232 低,不易是接口电路的芯片受到损坏。由于RS-485 的种种优点,使它成为众多工程师的首选串行接口。所以基于RS-485 的优点,本设计也采用方案二作为通信方式 。2.2 PCF8591 的选择PCF8591 是一个单片集成、单独供电、低功耗、 8-bit CMOS 数据获取器件。PCF8591 具有4个模拟输入、1 个模拟输出和1 个串行IC 总线接口。PCF

11、8591 的3 个地址引脚A0, A1 和A2 可用于硬件地址编程,允许在同个IC 总线上接入8 个PCF8591 器件,而无需额外的硬件。在PCF8591 器件上输入输出的地址、控制和数据信号都是通过双线双向 IC 总线以串行的方式进行传输。PCF8591 的功能包括多路模拟输入、内置跟踪保持、 8-bit 模数转换和8-bit 数模转换。PCF8591 的最大转化速率由IC 总线的最大速率决定。吉林化工学院信息与控制工程学院专业综合设计说明书- 3 -第 3 章 硬件电路设计3.1 设计流程图在设计方案选定好之后,需要对整个系统的实现过程有个具体的思考分析,并拿出一个具体的系统实现方案框图

12、,将整个实现过程模块化,便于硬件电路的设计和分工焊 接,便于硬件的检错和硬件的调试。图3-1,便是选定的方案一的系统实现框图。图3-1 工作流程图3.2 RS485 通信电路图RS-485 数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。RS-485 可以采用二线与四线方式,二线制可实现真正的多点双向通信。RS-485 总线,在要求通信距离为几 十米到上千米时,广泛采用RS-485 串行总线标准。RS-485 采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV 的电压,故传输信号能在千米以外得到恢

13、复。 RS-485 采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。 RS-485 用于多点互连时非常方便,可以省掉许多信号线。应用RS-485 可以联网构成分布式系统,其允许最多并联32 台驱动器和32 台接收器。 RS-485 驱动器可以用在RS-422 网络中应用。RS-485 的最大传输距离约为1219 米,最大传输速率为10Mbps。平衡双绞线的长度与传输速率成反比,在100Kbps 速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般 100 米长双绞线最大传输速率仅为1Mbps。在短距离的信息传输过程中,可以

14、忽略大部分的干扰,即可以不使用双绞线。在没有强干扰的影响时,信号传输的终端也可以不加抗共模干扰的电阻。有的情况, 485 总线芯片的供电电基于Modbus 协议的数据采集系统- 4 -源也会引起干扰,在这种情况下,需要对供电电源进行隔离,图 3-3 所示的电路就是消除电源干扰的一种电路设计方案。图3-2 RS485 通信原理图3.3 单片机最小系统单片机最小系统包括电源电路,复位电路和定时电路。如图示为 3-3 单片机最小系统。图3.3 单片机最小系统吉林化工学院信息与控制工程学院专业综合设计说明书- 5 -第 4 章 主要元器件的介绍4.1 SST89E516RD 单片机 STT89E516

15、RD 是8 位集成储存器的51 系列兼容单片机,和51 系列单片机软件兼容、管脚也兼容。SST89E516RD 片内有两块SuperFlashEEPROM,分为64k 主块(BLOCK0)和8k 次块(BLOCK1).BLOCK0 的地址范围是0000hffffIBLOCK1 的地址范围是10000h11fffh。做仿真器时BLOCK1 储存区烧写SOFtIC 仿真监控程序。SST89E516RD 具有在应用可编程( IAP)和在系统可编程(ISP)的功能,其中IAP 是通过串口实现的。仿真器就是利用了SST89E516RD 的IAP 功能。由于SST89E516RD 具有两块独立的Super

16、Flash 程序储存区,当监控程序在Block1 储存区运行时可以改写Block0 程序储存区中的程序,这就是仿真器的基本特性。图4-1 单片机原理图4.1.1 储存器1.程序FLASH存储器:单片机内部有两块FLASH存储器,第一块(BLOCK0)是64Kbyte,第二块(BLOCK1)是8Kbyte。因为全部程序地址空间限制为64Kbyte,SFCF1:0用来控制程序区的选择。请参考图3-1和图3-2的程序空间的配置。64K/32K x8的第一块由512/256个扇区组成,每个扇区有128Byte。8K x8的第二块由64个扇区组成,每个扇区有128Byte。2.程序存储器块的切换:基于M

17、odbus 协议的数据采集系统- 6 -单片机的程序存储器块切换功能使BLOCK1或BLOCK0的低8Kbyte占用程序地址空间的最低8Kbyte地址。SFCF1:0控制程序存储器的块切换。3.程序存储器块切换的复位初始值:程序存储器块切换的复位初始值是由起动配置位SC0及SC1的状态确定。SC0和SC1位可通过外部主机模式命令或IAP模式的命令来编程。请看表4-2和表4-7。RESET完成后,SFCF0可以由程序动态地修改,改变SFCF0值不会改变SC0位。在改变SFCF0的值时需要小心,因为会使不同的物理空间印射到逻辑程序地址空间,使用者必须防止在地址范围0000H到1FFFH执行块切换指

18、令。4.数据RAM储存器:数据RAM有1024字节的内部存储器,RAM能寻址到64Kbyte的外部数据存储器。5.扩展数据RAM的寻址:SST89E/V554RC和SST89E/V564RD都有1K的RAM,对内部数据存储器有四个部分: (1)RAM的低128Byte(00H到7FH)可以直接或间接寻址。 (2)RAM的高128Byte(80H到FFH)可以间接寻址。 (3)特殊功能寄存器(80H到FFH)只能直接寻址。 (4)768Byte的扩展RAM(00H到2FFH)由转移外部指令MOVX间接寻址和清除EXTRAM位。由于高位128Byte字节和SFR占用相同的地址,RAM必须间接访问,

19、RAM和SFR空间尽管有相同的地址,但是它们在物理上是分开的。当指令访问高位128Byte(高于7FH),单片机访问SFR还是RAM由指令的类型,如果是间接,将访问RAM;如果是直接,将访问SFR。 4.1.2 定时器器件有3 个16 位寄存器做定时器或事件计数器。 3 个定时器或计数器分别是T0、T1 和T2。每个都有一对8 位特殊功能寄存器指定。各自的寄存器是TL0,TH0,TL1,TH1,TL2,TH2。下面的表提供设置T0、T1、T2的TMOD值。除了在波特率发生器模式, T2CON不包括TR2位的设置,TR2位需要单独设置来启动定时器。4.1.3 端口输入/输出SST89E516 有

20、4 个8 位I/O 口(32 个I/O 引脚)和1 个4 位口,共36 个I/O 口。SST89E516端口的工作情况与标准8051 相似,但有一些改进。1.P0 是八位双向I/O 端口,当作输出口时每个引脚可以接收LS TTL 电平输入,可以写为1使其状态为悬浮用做高阻输入。 P0 也可以在访问外部程序存储器时作地址的低字节,在访问外部数据存储器时作数据总线,此时通过内部强上拉输出 1。P0 在外部主机模式编程时接收代码,外部主机模式校验是输出代码。在编程校验或是当作通用 I/O 口时需要外接上拉。2.P1 口是8 位带内部上拉的双向I/O 口,P1 输出可以驱动LS TTL 输入。向P1

21、口写入1 时P1 口被内部上拉为高电平,可用作输入口。当作为输入脚时被外部拉低的 P1 口会因为内部上拉而输出电流(见DC 电气特性) 。P15,6,7可以驱动16mA 的大电流。P1 口在外部主机模式编程和校验时接收低位地址数据。3.P2 口是8 位带内部上拉的双向I/O 口。向P2 口写入1 时P2 口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P2 口会因为内部上拉而输出电流 (见DC 电气特性)。吉林化工学院信息与控制工程学院专业综合设计说明书- 7 -在访问外部程序存储器和外部数据时分别作为地址高位字节和 16 位地址(MOVX DPTR),此时通过内部强上拉传送1

22、。P2 口在外部主机模式编程和校验时接收一些控制信号和部分的高位地址数 据。 4.P3 口是8 位带内部上拉的双向I/O 口。P3 口输出缓冲器可以驱动LS TTL 输入。向P3 口写入1 时P3 口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的 P3 口会因为内部上拉而输出电流 (见DC 电气特性)。P3 口在外部主机模式编程和校验时接收一些控制信号和部分的高位地址数据 .4.2 数/模转换元件PCF8591PCF8591 是一款单电源、低功耗8 位COMS 型A/D、D/A 转换芯片,它具有4 路模拟量输入通道、一路模拟量输出通道和1 个IC 总线接口。该器件I2C 从地址

23、的低三位由芯片的A0、A1 和A2 三个地址引脚决定,所以在不增加任何硬件的情况下同一条 IC 总线最多可以连接8 个同类型的器件。 图4-2 PCF8591 与单片机转换原理图基于Modbus 协议的数据采集系统- 8 -第 5 章 系统电源本次综合设计中介绍的直流稳压电源一般是线性稳压电源 , 它是将起电压调整的作用器件始终工作在线性放大区,由50Hz 工频变压器、整流器、滤波器和串联调整稳压器组成。它的基本工作原理为:工频交流电源经过变压器降压、 整流、滤波、再次滤波后成为一稳定的直流电源。图中其余部分是起电压调节,实现稳压作用的控制部分。电源接上负载后,通过采样电路获得输出电压,将此输

24、出电压与基准电压进行比较 。如果输出电压小于基准电压,则将误差值经过放大电路放大后送入调节器的输入端,通过调节器调节使输出电压增加,直到与基准值相等;如果输出电压大于基准电压,则通过调节器使输出减小 ,最后直至与基准电压相等 。这种稳压电源具有优良的纹波及动态响应特性 。此次设计所用到的电源是5V 直流电源,采用变压器实现220V 到5V 的转换,变压器如下图;图5-1 AY-MPU89C51A 核心板电源连接方式吉林化工学院信息与控制工程学院专业综合设计说明书- 9 -第 6 章 软件设计6.1 编程软件Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机

25、C 语言软件开发系统。Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍 Keil C51 开发系统各部分功能和使用。我们用开发软件Keil uVision3 来编写、修改所需程序和下载程序到单片机运行。其下介绍Keil uVision3 的使用步骤:1.双击Keil uVision3,得到主画面,如图6-1 所示:2新建界面 Project-new proj

26、ect,如图6-2 所示: 图6-1 Keil uVision3 基本画面图6-2 KeiluVision3 的新建界面基于Modbus 协议的数据采集系统- 10 -3.单片机的选择,如图6-3 所示:图6-3 单片机选择4.C 文件的创建和添加,如 图6-4 所示:图6-4 C 文件创建6.2 编程语言的介绍C 语言1是一种面向过程的计算机 程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。它由美国 贝尔研究所D.M.Ritchie 于1972 年推出。1978 后,C 语言已先后被移植到大、中、小及微型机上。 C 语言发展如此迅速,而且成为最受欢迎的语言之一,主

27、要因为它具有强大的功能。许多著名的 系统软件,如DBASE 都是由C 语言编写的。用C 语吉林化工学院信息与控制工程学院专业综合设计说明书- 11 -言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR 等就是用这种方法编写的。 C 语言主要有以下特点:1.C 是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。 2.C 是结构式语言。结构式语言的显著特点是 代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清

28、晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 3.C 语言功能齐全。具有各种各样的 数据类型,并引入了指针概念,可使程序效率更高。另外C 语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、 逻辑判断功能也比较强大,可以实现决策目的的游戏。4.C 语言适用范围大。适合于多种 操作系统,如Windows、DOS、UNIX 等等;也适用于多种机型。C 语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型 应用软件也是用C 语言编写的。C 语言具有绘图能力强,可移植性,

29、并具备很强的数据处理能力,因此适于编写系统软件, 三维,二维图形和动画。它是数值计算的高级语言。基于C 语言的这些特点,我们选用C 语言来作为编程语言。6.3 组态王软件组态王开发监控系统软件,是新型的工业自动控系统,它以标准的工业计算机软、硬件平台构成的集成系统取代传统的封闭式系统。它具有适应性强、开放性好、易于扩展、经济、开发周期短等优点。通常可以把这样的系统划分为控制层、监控层、管理层三个层次结构。其中监控层对下连接控制层,对上连接管理层,它不但实现对现场的实时监测与控制,且在自动控制系统中完成上传下达、组态开发的重要作用。尤其考虑三方面问题:画面、数据、动画。通过对监控系统要求及实现功

30、能的分析,采用组态王对监控系统进行设计。 组态也为试验者提供了可视化监控画面,有利于试验者实时现场监控。而且,它能充分利用Windows 的图形编辑功能,方便地构成监控画面,并以动画方式显示控制设备的状态,具有报警窗口、实时趋势曲线等,可便利的生成各种报表。它还具有丰富的 设备驱动程序和灵活的组态方式、数据链接功能。下面介绍组态监控界面的建立,其步骤如下:1.双击组态王6.55,得到主画面,启动“组态王”工程管理器(ProjManager) ,选择菜单“文件新建工程”或单击“新建”按钮,弹出如图6-5所示基于Modbus 协议的数据采集系统- 12 -2.点击下一步,按照步骤进行建立工程和存档

31、,直到出现如下界面则创建成功。如图 6-6 所示图 6-6 建立工程完成3.点击设备串口设置,选择数据传输波特率等相关参数。如图 6-7 所示图6-5新建工程界面吉林化工学院信息与控制工程学院专业综合设计说明书- 13 -图 6-7 设置串口4.双击COM2,新建I/O 设备,按照提醒设置需要的参数。如图6-8 所示图6-8 设备配置向导5.监控画面的建立,单击画面,出现新建画面,根据操作手册进行画面建立。如图 6-9 所示基于Modbus 协议的数据采集系统- 14 -图 6-9 新画面吉林化工学院信息与控制工程学院专业综合设计说明书- 15 -结 论本设计运用组态王和SST89E516RD

32、 单片机,串口通信及PCF8951 设计的一个简单、实用、测量精度高的电压采集和组态监控画面系统 。这是一次将书本知识与实际运用有效结合的一次实习。在这次硬件课程设计过程中,我得到了 童老师和杨老师悉心的指导,是我在短期内学会了MODBUS 通信协议和CRC 校验的计算方法,以及组态王上位机与下位机通信的 波特率等参数设定。我学会了如何去调试硬件电路以及怎样利用万用表等器件去检测电路的通断与线路连接是否有错。这次设计不仅让我在知识上有所增长,动手设计能力有所提高,还让 我学会了团队合作的重要性,团队的高效率才是整个设计 学习过程的高效率。知识的应用和经验的积累还是来源于自己动手操作,让我巩固了

33、课本知识,学会应用到实际。一次简单的课程设计过程包含着多种技巧,老师的经验传授让我更加容易的去面对设计中的各种困难,感谢童老师和杨老师的悉心讲授。我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了 这一年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这三 星期的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。基于Modbus 协议的数据采集系统- 16 -参考文献 1 翟玉文,梁伟, 艾学忠.电子设计与实践. 中国电力出版社,2005.52 童诗白,华成英. 模拟电子技术基础. 高等

34、教育出版社出版社, 2009.33 阎石. 数字电子技术基础(第五版) M. 高等教育出版社,2006.54 时景荣,李立春. C 语言程序设计. 中国铁道出版社,2008.125 张齐,朱宁西. 单片机系统设计与开发 . 北京:机械工业出版社, 2008.86 张毅刚. 单片机原理及应用. 北京:高等教育出版社, 20087 申琢玉.吉林化工学院毕业设计说明书 .2009.6.12 8 黄松岭,吴静. 虚拟仪器设计基础教程 . 北京:清华大学出版社2008.10吉林化工学院信息与控制工程学院专业综合设计说明书- 17 -附录1 电路原理图 串口转换电路 A/D 转换电路单片机最小系统基于Mo

35、dbus 协议的数据采集系统- 18 -采集器原理图吉林化工学院信息与控制工程学院专业综合设计说明书- 19 -附录 2 程序#include #include sbit LED=P00;sbit SDA=P37;sbit SCL=P36;bit ack;#define AddWr 0 x90 /写数据地址 #define AddRd 0 x91 /读数据地址unsigned char rd_dat20,td_dat20,rd_cont,ad10;/*CRC 发送校验,函数返回校验结果,整形*/unsigned int td_crc(unsigned char td_cont)unsigned

36、 int idata b=65535,c=40961,l;unsigned char idata i,j,k; for(i=0;i8; l=l8; k=b; k=ktd_dati; b=l+k; for(j=0;j8;j+) k=b; k=k7; b=b1; if(k=1) b=bc;基于Modbus 协议的数据采集系统- 20 - return(b);Delay(unsigned long xxxx)while(xxxx-);/*当数据流中断达到2MS 时,T1 中断.这个过程有串口中断控制 .它首先判断数据流的长度 ,标准应该为8 字节*/*(MODBUS 的03,06 功能号)长度.然后

37、判断命令类型,做相应处理.*/*T0 超时中断*/serial_t0() interrupt 1unsigned char idata i,k;unsigned int idata j;TR0=0;ET0=0;if(rd_cont=8)&(rd_dat1=3)&(rd_dat0=1) k=rd_dat5; td_dat0=rd_dat0; td_dat1=rd_dat1; td_dat2=2*rd_dat5; for(i=0;i8; td_dati*2+4=adrd_dat3+i; j=td_crc(3+2*rd_dat5); td_dat3+2*rd_dat5=j; td_d

38、at4+2*rd_dat5=j8; for(i=0;i=9)rd_cont=0; /*最多接受8 个字符*/ TR0=0; /*每接受一个字符,重新置超时计数器*/ TH0=0 xc3;/*数据流中断1.5 字节,外加0.25 毫秒,认为一组数据结束*/ TL0=0 x0f;基于Modbus 协议的数据采集系统- 22 - TR0=1; ET0=1; /启动总线void Start_I2c() SDA=1; /发送起始条件的数据信号 _nop_(); SCL=1; _nop_(); /起始条件建立时间大于4.7us,延时 _nop_(); _nop_(); _nop_(); _nop_();

39、SDA=0; /发送起始信号 _nop_(); /起始条件锁定时间大于4 _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; /钳住I2C 总线,准备发送或接收数据 _nop_(); _nop_();/结束总线void Stop_I2c() SDA=0; /发送结束条件的数据信号 _nop_(); /发送结束条件的时钟信号 SCL=1; /结束条件建立时间大于4 _nop_(); _nop_(); _nop_(); _nop_();吉林化工学院信息与控制工程学院专业综合设计说明书- 23 - _nop_(); SDA=1; /发送I2C 总线结束信号 _nop

40、_(); _nop_(); _nop_(); _nop_();/*- 字节数据传送函数 函数原型: void SendByte(unsigned char c);功能: 将数据c 发送出去,可以是地址,也可以是数据,发完后等待应答,并对 此状态位进行操作.(不应答或非应答都使ack=0 假) 发送数据正常,ack=1; ack=0 表示被控器无应答或损坏。-*/void SendByte(unsigned char c) unsigned char BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) /要传送的数据长度为8 位 if(cBitCnt)&0 x80)SDA=1; /判断发送位 else SDA=0; _nop_(); SCL=1; /置时钟线为高,通知被控器开始接收数据位 _nop_(); _nop_(); /保证时钟高电平周期大于4 _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); _nop_(); SDA=1; /8 位发送完后释放数据线,准备接收应答位基于Modbus 协议的数据采集系统- 24 - _nop_();

温馨提示

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

评论

0/150

提交评论