基于MODBUS协议的单片机与PLC通讯的设计.doc_第1页
基于MODBUS协议的单片机与PLC通讯的设计.doc_第2页
基于MODBUS协议的单片机与PLC通讯的设计.doc_第3页
基于MODBUS协议的单片机与PLC通讯的设计.doc_第4页
基于MODBUS协议的单片机与PLC通讯的设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

青岛科技大学本科毕业设计(论文)第1章 绪论 随着计算机、数字通信的快速发展,计算机控制已经拓展到全部的工业领域。其中,单片机和PLC得到了长足的发展,在小规模的控制系统中得到了非常广的应用。 对工业系统来说,PLC与单片机的应用都比较普及,可是,两者都有各自的优缺点。单片机的驱动能力比较弱,且无法驱动大功率、大电流设备的直接运行,因而在使用方面受到限定。相比而言PLC则运行可靠、使用也相对简单、抗干扰效果好,而且负载驱动能力也比较强,所以适合在一些环境较差的地方工作。 可是PLC控制能力固然强,但是其结构锁闭,缺乏智能化,无法链接键盘等外部设备,所以在使用PLC时就必须要通过外部智能设备编程来实现控制。想要进行弱电控制强电,必须要有智能程度较高的核心。而单片机的智能化程度很高,在系统的设置和外部设备的管理中起着非常高的作用。PLC和单片机联系可以提升PLC的数据处理功能,友好与简洁的人机交互也给用户提。供了很大便利。 本次要实现基于modbus协议的单片机与plc通讯的设计,通过MX232接口。转RS485接口转换电路,将单片机与PLC进行连接,单片机作为上位机向PLC发送数据,实现以51 单片机为核心,将输出信号通过RS485总线来与西门子S7-200PLC进行串口通信。1.1主要任务以及目标通过查阅相关资料,了解51单片机及S7-200PLC通讯的发展概况;根据相关文献,深入学习51单片机及S7-200 PLC通讯系统各部分的组成以及控。制的基本原理和方法;综合运用所学的模拟电子技术、数字电子技术、电力电子技术、无线通信技术、嵌入式等知识 ,进而查阅相关文献,研究51单片机及S7-200 PLC通讯的设计方法;根据要求,编写软件设计基于51单片机及S7-200的PLC各个功能模块;通过该设计,达到以下几个目标:提高分析和解决问题的能力;提高对所学知识的综合运用的能力;提高查阅有关文献的能力;获得工程设计的基本训练;提高动手操作能力。 1.2设计的主要内容对整个MODBUS通讯协议的构成、要求、应用等进行大概的了解,明确课题的定位和所要解决的问题;选择单片机及PLC型号,经过对常用编译软件的相关了解,对单片机控制方法做简单测试;对51单片机控制的理论以及涉及到S7-200 PLC的相关知识进行系统的学习;根据选定的单片机型号以及S7-200 PLC 的机型画出对应的最小系统以及各个功能模块电路图,搭建硬件调试环境;综合调试,主机控制板与从机控制板进行MODBUS通讯,分别控制各个功能块。对设计的结果进行分析和总结; 1.3设计的基本要求通过这次毕业设计,要求学生提高查阅文献的能力,提高综合运用所学知识系统分析问题和解决问题的能力。要求学生掌握51单片机与S7-200 PLC通讯设计的基本方法,获得工程设计的基本训练,学会科技论文的写作规范。通过本课题,深入研究S7-200单片机与S7-200 PLC通讯的设计,通过实践发现问题、解决问题。第2章 单片机和plc的现状与展望2.1 目的和意义现代的控制领域中当使用老式的控制系统的用户采用MODBUS作为一个能够解决复杂问题的简单解决方案,在他们发现自己需要扩充的是现场仪表或者增加远程控制器的时候,MODBUS的简单性以及它的便利在于在许多通讯媒介上实施应用的特点,所以它受到广泛的支持,用户可以让一个外来设备连接到控制系统里面使用这个设备的MODBUS接口被证明是最为容易的办法。虽然MODBUS已经是最为古老的通讯方法之一,由于非常多的原因它也是最及的通讯方法。MODBUS便于使用、也非常可靠、价格很低廉并且可以连接到控制工业领域几乎所有的传感器和控制设备。传统工业控制系统的带来的不便,形成了大量的“信息孤岛”,对于工业控制来说,想要确保产品质量和进行连续生产,各个站点之间必须互相配合,共同协调,因此这就要求各个站点能互相沟通讯息,互相之间传信。而要想实现对全局的监视控制和优化,上级管理网也要经常与子站交换数据。然而,子站是采用不同的开发调试平台、不同的通讯协议来组成的结构系统,要为每种协议开拓一个转换接口或驱动是比较繁琐的,尤其是在站点和协议较多的时候。所以,采用modbus协议可以很好的解决这个问题,具有很高的性价比。2.2 单片机和plc的发展 单片机(Microcontrollers)是一种集成电路芯片,是用大规模集成电路技。术来构造的一个小且完善的微型计算机系统,在工业控制领域广泛应用。其系统结构简单,使用方便,实现模块化; 单片机的可靠性非常高,可连续工作到106 107小时而无故障;处理功能强,速度快低电压,低功耗,便于生产便携式产品。控制功能强 ,环境适应能力强。从上世纪80年代就开始发展,由4位、8位单片机发。展到300M的高速单片机。plc是可编程控制器,它使用方便,编。程简单,有很强的功能,可以实现非常庞大的控制功能。PLC有较强的带负载能力,可以方便快速地适应工艺条件的变化。PLC仅剩下与输入输出有关的少量硬件元件,用软件取代非常多的中间继电器以及时间继电器,所以因为触点接触不良造成的错误大为减少。20世纪80年代至90年代中期,PLC在处理模拟量、数字运算、人机接口和网络获得了巨大的提升,在过程控制领域中plc已经十分常见了。2.3 应用 PLC与单片机两者之间并不具有可比性,plc是建立在单片机之上的产物, 而单片机则是一种集成聚合电路。PLC它在没有控制程序的时候是不具备任何的控制功能的。PLC事实上是专门为工业环境而采用使用的控制平台,是一种控制器,想要完成最终控制的目的,必须进行二次开发。 单片机应用系统就是多种多样, 质量也无法全究, 学习、使用和维护都比较困难。从PLC与单片机系统的选择上来讲, 对于少量工程和重复性小的项目来说, 采用PLC方案很明智、很快捷, 成功率高, 可靠性好, 但成本非常高。对于量大的项目, 采用单片机系统则可以让成本低、收益好。最好的方法是单片机系统嵌入PLC的功能, 这样也可以使性能得到提升,大大缩短单片机系统的研。制时间。单片机工作的三个条件分别是电源、时钟晶振、复位。当单片机不能正常工作时,我们首先就要用电压表或者万用表检测电源和接地脚,检测两个引脚之间的电压是否在5V左右;对于时钟晶体振荡有没有正常工作的状况,我们最好用示波器进行检测,看能否检测到相应频率的正弦波。脉冲复位检测比较简单,单片机的复位电平一般是高电平复位,单片机在接通电源的时候一般复位引脚上会出现5V左右的高电平,另外在按下复位按键时,复位引脚上也会出现高电平,用一般的电压表或者万用表都可以进行检测。第3章 硬件设计3.1设计方案的选择利用单片机做主机,使用modbus协议,主机单片机发送MODBUS命令给从机,从机返回数据给主机单片机,由单片机将数据写入PLC相应的寄存器中,实现modbus通讯的功能利用单片机做主站,并且同时开发主机与从机,编写主机和从机modbus通讯协议,适应性更强。3.2 MCS51单片机的简介对所有兼容Intel 8031指令系统的单片机统称。这个系列单片机的鼻祖是Intel的8031单片机,科技的进步,8031单片机也取得了非常大的改进,成为使用巨大的8位单片机之一,AT89系列为代表系列。硬件部分主要由51 单片机、 S7-200PLC、 RS485接口芯片组成。51单片机拥有8位CPU4kbytes程序存储器(ROM) (52为8K),32条I/O口线111条指令,大部分为单字节指令,2个可编程定时/计数器5个中断源、2个优先级(52有6个),在这里单片机与MAX232 芯片被聚合在单片机开发板上, RS232 电平已经是开发板上发出来的电平,所以单片机可以直接与RS485 总线相连,并且链接plc, 使PLC 上的输出信号来实现控制。51系列单片机程序存储器的管理:每个ROM单。元(byte)对应一个唯一的16bit地址编码(Address)CPU要到某个ROM单元去取指令,是通过把地址写入一个16bit的特殊功能。寄存器程序计数器PC(Program Counter)来实现,因此,51系列单片机的地址的编码范围(通常称为寻址范。围):0000 0000 0000 0000B 1111 1111 1111 1111B(二进制)0 0 0 0 H F F F F H (十六进制)0 65535 (十进制)通常习惯说51系列单片机的ROM寻址范围是64KPC的值是CPU根据用户程序的运行流程自动装载的,它的值代表单片机下一条要执行的指令在ROM中的存放位置,用户不能直接对PC进行操作。3.3 S7-200PLC西门子公司的s7-200系列plc指令丰富,操作简便,串行通信方式最为丰富。支持多种通信协议模式,如modbus协议,广泛应用于各种生产当中。S7 -200系列 PLC 通信端口的通信方式使异步串行通信, 通信端口的标准采用R S 485接口标准, 可以组成串行通信网络, 来形成分布式的系统, 系统中有 32 个站为最多。从CPU模块的功能。看,SIMATIC S7-200系列小型PLC发展至今,大致经历了两代:第一代产品,其CPU模块为CPU 21X。机都可进行扩展,它具有四种不同配置的CPU单元:CPU 212,CPU 214,CPU 215和CPU 216,第二代产品,其CPU模块为CPU 22X,主机都可进行扩展,它具有五种不同配置的CPU单元:CPU 221,CPU 222,CPU 224和CPU 226和CPU226。XM,除CPU 221之外,其它都可加扩展模块,是目前小型PLC的主流产品。 CPU 221:用户程序和数据存储容量较小,有一定的高速计数处理能力,适合用于点数少的控制系统。 CPU222:和CPU221相比,它可以进行一定模拟量的控制,可以连接2个扩展模块,应用更为广泛。 CPU224:和前两者相比,存储容量扩大了一倍,有内置时钟,它有更强的模拟量和高速计数的处理能力,使用很普遍。 CPU 226:和CPU224相比,增加了通信口的数量,通信能力大大增强,可用于点数较多、要求较高的小型或中型控制系统。 CPU226XM:它是西门子公司推出的一款增强型主机,主要在用户程序和数据存储。容量上进行了扩展,其他指标和CPU 226相同。3.4 RS485串行通信的实现 3.4.1 单片机RS-485串行通信系统采用51单片机为核心,想要让单片机与plc进行链接,可以通过51单片机的串行口与MAX485芯片相连,再与S7-200的RS-485口进行链接,单片机串行口输出TTL电平,PLC接口输出的则是RS-485信号。这样单片机的串行通信可以通过电路转换为RS-485信号来和PLC通信。西门子S7-200系列PLC有着RS-485串行口,因此要使用51单片机与PLC进行通信,可以使MAX485与MCS-51单片机的串行口相联,然后再与S7-200PLC的RS-485口进行链接。RS-485的通信程序编写和RS-232没有太大区别,如果使用一个IO口控制MAX3082的RE/和DE端口,RS-485只比RS-232多了一个接收和发送的转换控制位初始化串口时,使该位处于低电平,即接收状态发送数据时,使该位先为高,发送完数据后拉低。程序如下:sbitRS485_EP35/发送,接收控制位void UART1_Init(void)SCON = 0x50;/方式1,8位数据,可变波特率RS485_E= 0;/置低,接收TMOD|= 0x20;/定时器1,方式2,8位自重载PCON = 0x00;/波特率倍频禁止 TH1= 0xfd;/晶振22.1184MHz,波特率19200;TL1= 0xfd; IE|= 0x90;/开中断IP= 0x10;TR1= 1;/启动定时器void UART1_Send_Char(const INT8U dt)SBUF= dt;while(!TI);TI = 0;void UART1_Send_String(INT8U *str, INT8U len)INT8U i;RS485_E= 1;/置高,发送ES= 0;for(i=0; ilen; i+)UART1_Send_Char(*(str+i);RS485_E= 0;/置低,接收ES= 1;void UART1_Interrupt(void) interrupt 4RS485_E = 0;/接收ES = 0;if(RI)/中断接收数据ES = 1;3.4.2 232/485电平转换电路PLC 上的PPI 电缆是一根RS232 转RS485 的匹配电缆,因为PLC 使用RS485串行口, 而单片通信口采用RS232串行口, 两者的规范不能相容,需要用中间电路进行匹配。MAX485E 芯片则是 RS 485接口标准专用通信芯片, 其。RO 脚为数据的输出脚, 它能接收 RS 485 的差模信号 VAB, 并转换为 TTL电平并由 RO 输出, RE 脚则为 RO 的使能端, 低电平时要选通 RO, 则输出有效。D I 脚为数据输入端, 它可以将 TTL电平的数据信号转换为差模信号 VAB, 并且由 A、B两脚送出去。信号DE 则是 D I使能端,高电平选通 D I, 且输入有效。故 A、B两脚既是 RS 485 信号输出端, 同时也是这种信号的输入端, 关键是端口由使能端 RE、DE的电平来决定。RS232 可以同时进行收发通讯且时RS232 设计成两个设备之间可以进行的单独通讯, 不支持多于两个设备的联接, 所以它的。收发随时可以, 并不会发生通讯的碰撞。 而RS485则 采用差分的两根A/B 线进行通讯设计, A 和 B 两根线的相对电平来表达0 和 1 ,然而同一时刻只能让一个设备驱动总线。在modbus端口模式下,PLC的串行通信接口通过梯形图编制程序以及单片机的汇编语言程序来进行配合,来使用完成中断字符,接受中断发送完成中断等等。这时单片机处于主机状态,plc处于从机状态,由单片机主动发送握手信号,PLC则接收到信号后被动地反馈回单片机信息。第4章 软件方案设计实现单片机与PLC 的通信,单片机作为主站,通过COM口发送控制指令到PLC 的PORT0 口, PLC 通过RCV 指令接收数据,然后对指令进行译码, 译码后控制程序,以实现指令要求的操作,同时返回指令的状态信息4.1 串口通讯模块与数据帧处理RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的。RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。其传送距离最大约为15米,最高速率为20kb/s,并且RS-232是为点对点(即只用一对收、发设备)通讯而设计的。所以,RS232只适合于本地通讯使用。本系统是基于串口RS232接口加入MODBUS通讯协议。在串行通信的实现中,采用了串口通信工作方式一,波特率115200 的方案。在串行通信过程中涉及寄存器以及定时器的配置。RS232-485转换器只使用其中一条线也能够正常工作,它主要包括了电源、以及232电平的的转换、485电路这三部分。本电路的232电平转换电路使用MAX232集成电路方式,485电路采用了MAX485集成电路方式。为了使用方便,电源部分设计成无源方式,整个电路的供电可以直接从RS232接口中的DTR(4脚)和RTS(7脚)提供。串口中每根线可以提供9mA的电流,因此两根线提供的电流足够供给。TMOD(定时器寄存器)GATE C/T* M1 M0 GATE C/T* M1 M0T1 方式字段T0 方式字段TMOD |= 0X20 即定时器T1 工作在方式2(自动重装的8 位定时器)。SCON(串行口控制寄存器)SM0 SM1 SM2 REN TB8 RB8 TI RISCON = 0X50 即串行口工作方式一(8 位UART,波特率可变)。由于单片机对数据帧进行处理时,要采用中断方式接受数据帧处理。因为处理数据帧需要的时间很长,进行中断方式可以极大地提升速率。一般来说中断函数应比较简单。所以接收数据帧放在主函数里,中断函数只负责接受。Modbus协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独。立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。modbus功能码定义如下:功能码名称 作用01读取线圈状态取得一组逻辑线圈的当前状态( ON/OFF)02读取输入状态取得一组开关输入的当前状态( ON/OFF)03读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值05强置单线圈强置一个逻辑线圈的通断状态06预置单寄存器把具体二进值装入一个保持寄存器07读取异常状态取得 8 个内部线圈的通断状态08回送诊断校验把诊断校验报文送从机,以对通信处理进行评鉴09编程(只用于 484 )使主机模拟编程器作用,修改 PC 从机逻辑10控询(只用于 484 )可使主机与一台正在执行长程序任务从机通信11读取事件计数可使主机发出单询问,并随即判定操作是否成功12读取通信事件记录主机检索每台从机的 ModBus 事务处理通信事件记录13编程(184/384 484)可使主机模拟编程器功能修改 PC 从机逻辑14探询可使主机与正在执行任务的从机通信15强置多线圈强置一串连续逻辑线圈的通断16预置多寄存器把具体的二进制值装入一串连续的保持寄存器17报告从机标识主机判断编址从机的类型及该从机运行指示灯的状态18 884 和 MICRO 84 可使主机模拟编程功能,修改 PC 状态逻辑19重置通信链路从机复位于已知状态,可重置顺序字节20读取通用参数显示扩展存储器文件中的数据信息21写入通用参数把通用参数写入扩展存储文件,或修改之必须了解Modbus的各个功能对应的帧格式,理解其含义和本质,数据帧处理是整个系统的核心部分,在现场总线技术中有着至关重要的作用。然后才能正确进行处理。ModBus 的RTU模式数据帧格式如下:12345678从机地址MODBUS命令起始寄存器高字节起始寄存器低字节寄存器数高字节寄存器数低字节CRC低字节CRC 高字节在数据帧处理的过程中,开始之后要先判断数据帧是否接受完,然后判断是否发给本从机即地址是否匹配。对完整的数据帧要CRC校验,CRC校验正确的帧执行下一处理步骤,否则丢弃,并提醒主机重发数据。CRC校验正确和地址位正确是帧处理的前提。在前提条件满足后才能提取功能位和数据位。并根据功能位确定要执行的功能。上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。4.2 plc程序设计和单片机程序设计 4.2.1 plc程序设计 连接。通。讯电。缆S7-200的通。讯端。口是一个9孔(fam。el)D。型插。头,针。脚分。布如下。所示: 针脚信号1地线 (RS-485 逻辑地)224 V 地线 (RS-485 逻辑地)3信号B (RxD/TxD+)4RTS (TTL level)5地线 (RS-485 逻辑地)6(空)724 V 电源8信号A (RxD/TxD-)9通讯选择S7-200通讯端口(端口0)与RS-485板卡或RS-485/RS-232转。换。器之间接线,如下图所示:S7-200编程及设置要想实现Modbus通讯就要在PLC的主程。序模块中调用Modbus通讯子程序,在安装了“STEP 7-Micro/WIN附件:指令库”后,在导航树“指令/库”下面找到“Mod。bus Pro。tocol”。其下面有MBUS_INIT和MBUS_SLAVE两个子程序,MBUS_INIT可以对Modbus通讯进行初始化,MBUS_SLAVE可以在指定端口上提供Modbus从站通讯服务。调用Modbus通讯初始化命令 首先为MBUS_INIT命令来建立一个触发条件(只触发一次),如:SM0.1;从导航树“指令/库/ Modbus Protocol”下面,将MBUS_INIT指令拉到主程序块中。再就是如何正确地设置MBUS_INIT各项调用参数和执行结果输出地址,我们来建如下图所示初始化调用:Mode:协议类型,1-Modbus协议;0-PPI协议。Addr:PLC地址,1247,。Baud: 通讯波特率,1200、2400、4800、9600、19200、38400、57600或11520。Parity: 校验方式,0-无校验;1-奇数校验;2-偶数校验。Delay:信息结束超时时间,032767,有线连接设置为0即可。MaxIQ:0128,映射在离散输入寄存器或离散输出寄存器中的I或Q数。建议为:128。MaxAI:032;映射在模拟输入寄存器中AIW数;CPU 221为0,CPU 222为16,CPU 224、226和226XM为32。MaxHold:V内存映射在保持寄存器中的寄存器数。HoldStart:V内存的映射时的起始地址。Done:初始化指完成时,输出为开状态;开关量(Bit)。Error:初始化错误代码,请参阅Modbus从机协议执行错误代码;输出为字节。调用Modbus从机通讯命令初始化完成后,就可以来调用Modbus从机通讯命令(MBUS_SLAVE)了。一般情况下来说Modbus从机通讯命令在每个执行周期都要初执行(始终保持通讯状态),因此可以用一个常开量作为命令的触发条件,如:SM0.0从导航树“指令/库/ Modbus Protocol”下面,将MBUS_SLAVE指令拉到主程序块中。调用过程如下图所示:Done: 当MBUS_SLAVE指令响。应对Mod。bus请求时,Do。ne为开状态。没通。讯请求时Done为关。状。态。Error:指。令执。行。结果。只有Don。e为开状。态时,此状。态有效。请参。阅Modbus从。机协。议执。行错。误代码;输。出为字节。4.2.2 单片机程序设计(1) 单片机初始化部分子程序void init_serial comm(void)SCON=0x50; /* 串口工作方式1, 允许接收*/TMOD=0x20;PCON=0x00; /*SMOD=0*/TH1=0xFD; /* 波特率为9.6K*/TL1=0xFD;IE=0x95; /* 开总中断, 开串口中断, 开外部中断0, 开外部中断1*/?(2) 单片机

温馨提示

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

评论

0/150

提交评论