modbus协议毕业论文
1.毕业论文 基于modbus的plc与上位机的通信
1 引言 随着微电子技术和计算机技术的进步,可编程控制器以其可靠性高、抗干扰强、开发周期短,已经成为一种较为普及的、适应多种应用环境的工业控制器。
现已从最初的简单顺序控制、逻辑控制发展到可进行模拟量控制、位置控制,特别是PLC与PLC、PLC与计算机通信功能的实现,可组成多级控制系统,形成工厂自动化网络。PLC可以多种方式如直接采用现有的组态监控软件与上位监控机通信,但针对小规模的控制系统,找到一种高性价比的通信方法,具有积极的实际意义。
本文就是讨论如何利用Modbus通信协议来实现施耐德电器公司的NanoPLC与上位监控PC机的通信。2 硬件描述及串口设置2.1 接口电路设计 PLC与PC间实现通信,可使二者互补功能上的不足,PLC用于控制方面既方便又可靠,而PC机在图形显示、数据处理、打印报表以及中文显示等方面有很强的功能。
因此,各PLC制造厂家纷纷开发了适用于本公司的各种型号PLC机通信的接口模块,不同的通信方式,有着不同的成本价格和不同的适用范围。NanoPLC的CPU单元本身带有1个RS-485扩展口,可不配备专用通讯模块,而通过此接口与上位机进行串行通信。
在此介绍一种通过PLC的RS485扩展口与PC机的RS-232串行口进行通信的方法。由于NanoPLC的扩展口采用RS-485标准,RS485是RS422的变型。
RS422为全双工,可同时发送与接收;RS485则为半双工,在某一时刻,1个发送另1个接收。RS485是一种多发送器的电路标准,允许双导线上1个发送器驱动32个负载设备,负载设备可以是被动发送器、接收器或收发器。
而计算机的串行口采用RS-232标准。因此,作为实现PLC与计算机通信的接口电路,必须将RS-485标准转换成RS-232标准。
我们利用SC-485转换器实现RS485与RS232之间的转换。转换电路如图1所示。
图1 RS485与RS232转换电路图2.2 PLC串行口设置 施耐德的NanoPLC对通信参数的设置通过设置扩展口来实现,系统采用PC 机作为Modbus通信网络主站,NanoPLC作为从站。通信格式设置如下:波特率4800bps,图2 PLC串行口设置8位数据位,1位停止位,无奇偶校验。
如图2所示。2.3 PC机的串口初始化 在微机数据通信中,经常使用大规模集成串行接口电路芯片,它们的种类和型号很多,如UART、USRT、USART等。
能完成异步通信的硬件电路称为UART。作为可编程的异步串行通信芯片UART,应根据协议的要求对其初始化。
可编程串行异步通信控制器8250是IBM PC串行通信控制器I/O接口电路的核心,通过对8250的编程,可以控制串行数据传送格式和速度。PC机有2个串行通信接口COM1和COM2。
若选COM1,则8250各寄存器地址为3F8H~3FEH;选COM2,则8250各寄存器地址为2F8H~2FEH。这里介绍用Tubro C直接对PC机中的UART 8250中各寄存器进行初始化。
本例采用COM2口,初始化如下:outportb(0x2fb,0x80); /*btp=4800*/ outportb(0x2f8,0x18); outportb(0x2f9,0x0); outportb(0x2fb,0x1b); /*initialize (8、1、n)*/ outportb(0x2f9,0x0); outportb(0x2fc,0x3);3 软件描述3.1系统通信协议 NanoPLC采用Modbus通信协议。任何根据此通信协议进行通信的主、从机之间进行数据信息交换时,信息格式都必须遵守通信协议所规定的格式。
Modbus的数据交换模式有2种,1种为ASCII编码制,1种为RTU编码制。本例采用RTU码传输模式,它包括一些特殊标志码、PLC站号、呼叫字和校验码等,其数据帧格式如附表。
(1) 帧开始:数据帧以至少3.5个字符间隔时间(T1-T2-T3-T4)标志开始和结束。整个信息帧必须以连续的信号进行传输,从而保证CRC的校验正确。
(2) 从站地址:1个字节。各从站识别码,站号取值范围01H-F7H,共有247种不同站。
但Nano系列PLC通讯网络最多允许32个从站。(3) 功能号:1个字节。
表示主站对从站的各种操作工作,主机发功能号给从机,如果从机响应正常,则回送相同的功能码;如有错误发生,则将原功能码符号位置“1”后回送,并将错误代码写入数据区回送。各功能号具体功能如下:01或02:读n个内部位%Mi03或04:读n个内部字%Mwi05:写1个内部位%Mi06:写1个内部字%Mwi15:写n个内部位% Mi16:写n个内部字%Mwi(4) 数据区:数据区由一串2位16进制数据组成,从00-FFH。
如果通信正确,数据区存放PLC回应上位机的信息;如发送数据有误,则返回异常代码。NanoPLC处理的2种异常代码:*01:功能未知(PLC不支持的请求) 如发送: 01H 16H 00H 00H FFH 00H 09H F9H 返回: 01H 96H 01H 8EH 60H*03:无效数据(位或字的数据错误,如写位时数据既非16#FF00,又非16#0000) 如发送:01H 05H 00H 00H 03H 06H 4DH 38H 返回:01H 85H 03H 02H 91H(5) 校验码:2个字节。
采用CRC循环冗余码。它的基本原理是将一段信息看成一个很长的二进制数,然后用一个特定的数(如11021H)去除它,最后将余数作为校验码附在信息代码之后一起传送(或存储),在进行接收(或读出)时进行同样的处理,如有差错就可发现。
需特别注意的是,如果发送信息中的CRC校验码计算错误,则通信不能成功。3 按。
2.我的毕业论文 基于modbus的plc与上位机的通信
先熟悉MODBUS协议规范 网上一搜一堆 对于上位机通讯 只需要定义4个区 OX0 OX1 OX3 OX4
OX0 离散量只读 相当于DI OX1离散量读写 相当于DO
OX3 读取过程量 OX4 读写数据 相当于位内存M区
不同的PLC对应的MODBUS地址也不同 如果是施耐得的TWIDO或者M340 只支持M区读取 对于上位机变量
只是OX1 OX4
上位机那边简单 把通讯配置好 波特率 奇偶校验 停止位等 在该连接下按照上述我说的建立变量连接就可以
3.基于TCP/IP协议之上的moudus协议不考虑TCP/IP协议的实现基础
不是的
modbus的TCPip接口是基于tcp协议的一种modbus协议(属于7层协议,即应用层)
具体你可以查看modbus协议的帧格式,
就是modbusRTU帧加校验和目的地址(IPV4)
如果单纯的MODBUSRTU帧是不能发送给网络上某个地址的,
因为他的地址域写的是COMX(即某个串口)
而加了modbustcp的目的地址后 就可以指向某个ipv4地址了
和TCP的关系是这样
MODBUSTCP帧
TCP包头modubstcp帧
4.Modbus协议和串口通讯协议
所谓协议是双方通信的约定,是一串有格式的字节数组。Modbus协议是标准,严格定义了通信双方的通信规范,有串口部分和TCP部分,格式不一样。串口通信协议是一个泛指。至于RS232和RS485,是无软件干预的硬件规范,软件人员可以不管,通信上都是串行通信,串口软件不必区分。
可以用流行的协议类软件,如格西烽火等,进行学习和测试。
5.为什么选择modbus协议的这个课题
ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。
ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三种通信方式:
1. 以太网,对应的通信模式是MODBUS TCP。
2. 2. 异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUS RTU或MODBUS ASCII。
3. 3. 高速令牌传递网络,对应的通信模式是Modbus PLUS。
6.modbus协议
什么是Modbus? 作者:ICPDAS 何谓Modbus协议? Modbus是MODICON公司于1979年开发的一种通讯协议。
它是一种在工业领域被广为应用的真正开放、标准的网络通讯协议。 SCADA和HMI通过Modbus协议可以很容易将带串行通讯口的设备集成在一起。
什么是Modbus/TCP协议? Modbus/TCP协议是不同于Modbus的另一种协议,产生于1999年。 它允许因特网接入以太网设备。
什么软件支持Modbus和Modbus/TCP协议 ? 大部分SCADA ( Supervisor Control And Data Acuisition )和HMI软件支持Modbus协议。 例如: 组态王、MCGS、Citect、ICONICS、iFIX、InduSoft、Intouch、Entivity Studio、Entivity Live、Entivity VLC、Trace Mode、Wizcon、Wonderware。
等 为何使用Modbus 和Modbus/TCP协议 ? 1。 公开的协议,免收许可费用 2。
被SCADA和HMI软件广为支持 3。 简单易用 4。
易于集成不同的设备 5。 开发成本低 6。
广泛的知识资源支持 。
转载请注明出处众文网 » modbus协议是什么