基于Modbus的上位机通讯.docx

上传人:b****1 文档编号:10651249 上传时间:2023-05-26 格式:DOCX 页数:40 大小:890.49KB
下载 相关 举报
基于Modbus的上位机通讯.docx_第1页
第1页 / 共40页
基于Modbus的上位机通讯.docx_第2页
第2页 / 共40页
基于Modbus的上位机通讯.docx_第3页
第3页 / 共40页
基于Modbus的上位机通讯.docx_第4页
第4页 / 共40页
基于Modbus的上位机通讯.docx_第5页
第5页 / 共40页
基于Modbus的上位机通讯.docx_第6页
第6页 / 共40页
基于Modbus的上位机通讯.docx_第7页
第7页 / 共40页
基于Modbus的上位机通讯.docx_第8页
第8页 / 共40页
基于Modbus的上位机通讯.docx_第9页
第9页 / 共40页
基于Modbus的上位机通讯.docx_第10页
第10页 / 共40页
基于Modbus的上位机通讯.docx_第11页
第11页 / 共40页
基于Modbus的上位机通讯.docx_第12页
第12页 / 共40页
基于Modbus的上位机通讯.docx_第13页
第13页 / 共40页
基于Modbus的上位机通讯.docx_第14页
第14页 / 共40页
基于Modbus的上位机通讯.docx_第15页
第15页 / 共40页
基于Modbus的上位机通讯.docx_第16页
第16页 / 共40页
基于Modbus的上位机通讯.docx_第17页
第17页 / 共40页
基于Modbus的上位机通讯.docx_第18页
第18页 / 共40页
基于Modbus的上位机通讯.docx_第19页
第19页 / 共40页
基于Modbus的上位机通讯.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Modbus的上位机通讯.docx

《基于Modbus的上位机通讯.docx》由会员分享,可在线阅读,更多相关《基于Modbus的上位机通讯.docx(40页珍藏版)》请在冰点文库上搜索。

基于Modbus的上位机通讯.docx

基于Modbus的上位机通讯

第一章绪论

PLC足专为工业控制而设计的专用计算机,其体积小,具有高可靠性和很强的抗干扰能力,配置灵活和完善的功能,因此在工业控制系统中得到了广泛的使用。

随着工业自动化程度的提高,对PLC的应用提出了更高的要求:

更快的处理速度,更高的可靠性,控制与管理功能一体化,控制与管理一体化也就足将计算机信息处理技术,网络通信技术应用于PLC,使用用下位分散控制,用计算机提供图形显示界面,同时对下拉机进行监控。

所以通常采用计算机PC与PLC组成一个完整的监控系统。

随着工业自动化技术的不断发展,在工业控制中,交流电机的拖动越来越多地采用变频器完成,而变频器也不仅仅作为一个单独的执行机构,而是随着其不断的智能化,可以同主机之间通过一定的通信方式结合成一个有机的整体。

虽然变频器广泛用于各行各业,但因其显示面板简单,且在对数据的处理、计算、保存等方面存在弱点,在一定程度上影响了变频器在复杂控制系统中的应用,不过通信技术与变频器相结合可以弥补这些缺点,可以利用PLC与变频器之间的通讯功能实现远程控制,采用RS485通信接口,使用MODBUS协议实现,对交流电机的拖动进行控制,这是一种低成本的联接方案,可以极大地减少线路联接的复杂性,避免现场可能的各种电磁干扰对控制设备的影响。

同时增强了变频器对数据处理,故障报警等方面的功能。

 

第二章基于Modbus总线控

制的上位机通信的总体框架

计算机通过三菱Fx系列PLC的程序下载线连接至PLC,PLC上的485通信板连接到变频器的PU接头,这样,计算机与PLC,PLC与变频器就得以通信。

PLC和变频器通过输出给外部设备进而控制外部设备的运行。

如图2-1

 

图2-1

第三章基于Modbus总线控制

的上位机通信的硬件设计

硬件结构包括了气动回路、主控制电路、PLC控制电路、上位机与PLC的接线图。

3.1气动回路图

气动回路:

为送料缸,推料缸,龙门机械手提供动力能源。

如图3-1所示。

图3-1

3.2主控制电路图

主电路:

为整流变压模块,变频器,异步电动机,PLC等提供工作电源。

如图3.2所示。

图3-2

3.3PLC控制电路图

即PLC的IO接线,接收外部信号,并将信息经过CPU处理运算后经由输出口控制电磁换向阀,指示灯,变频器。

如图3-3所示。

图3-3

3.4上位机与PLC的连接图

计算机与PLC连接时是用计算机的9针串口,而PLC编程是8针圆头的接口,这里就需要做一个转换。

其接线图如3-4图:

图3-4

3.5PLC与变频器的网络接线

PLC与变频器的网络通信,PLC端是用485通信板,而变频器端则是PU接口,接线图3.5:

图3-5

第四章基于Modbus总线控制

的上位机通信的软件设计

4.1Modbus通信

Modbus应用层协议由美国Modicon公司(现为施耐德电气旗下品牌)于1979年开发的,用于实现其PLC产品与上位机的通信。

由于其简单易用,得到了广大工业自动化仪器仪表企业的采纳与支持,实际上已成为了业界标准,我国标准化委员会已将Modbus协议作为我国工业自动化的行业标准,分别制定了GB/Z19582.1-2004(Modbus应用层协议),GB/Z19582.2-2004(串行链路上的Modbus)和GB/Z19582.3-2004(Modbus-TCP)三个标准。

Modbus应用层协议位于OSI模型中的第七层,将它嵌入到不同的低层协议中形成了三种具体的通信方式:

Modbus串行链路、Modbus-Plus和Modbus-TCP,三种通信网络上的设备可以通过网关来达到数据交换的目的。

这些年来以太网的繁荣壮大使得将Modbus协议嵌入到TCP/IP协议中实现Modbus设备间的通信非常必要,鉴于此,1999年施奈德电气发布了Modbus-TCP协议,使得以太网上的Modbus设备可以通过502端口进行通信。

4.1.1Modbus通信协议介绍

Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。

Modbus协议是应用于电子控制器上的一种通用语言。

通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通讯。

它己经成为一通用工业标准。

Modbus协议是一种在工业领域被广为应用的真正开放、标准的网络通讯协议,被大部分SCADA(SupervisorControlAndDataAcquisition数据采集与监视控制系统)HMI(HumanMachineInterface人机界面)软件支持,所以它实际上己经成为一种通用的工业标准。

有了它不同厂商生产的控制设备可以连成工业网络,进行集中监控。

此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通讯的。

它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。

它制定了消息域格局和内容的公共格式。

当在一Modbus网络上通讯时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。

如果需要回应,控制器将生成反馈信息并用Modbus协议发出。

在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包的结构。

这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

Modbus有两种传输模式,一种是ASCII模式,另一种是RTU模式。

当控制器设为在Modbus网络上以ASCI工(美国标准信息交换代码)模式通讯,在消息中的每个s字节都作为两个ASCI工字符发送。

这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。

本文以RUT模式为例说明。

4.1.2变频器的ModbusRUT通信

这里所使用的变频器是三菱公司的FR--D700系列,

4.1.2.1Modbus通信协议描述

1、Modbus通信协议

Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。

特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。

图4-1

启动Modbus事务处理的客户机创建Modbus应用单元。

功能码向服务指示将执行哪各操作。

Modbus协议建立了客户机启动的请求格式。

用一个字节编码Modbus数据单元功能码域。

有效的码字范围是十进制1-255(128—255为异常响应保留)。

当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。

向一些功能码加入子功能码来定义多项操作。

从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。

这个域还包括离散项目和寄存器地址、处理项目数量以及域中的实际数据字节数。

在某种请求中,数据域可是不存在的(0长度),在此情况下服务器不需要任何附加信息。

功能码仅说明操作。

如果在一个正确接收的ModbusADU中,不出现与请求Modbus功能有关的差错,那么服务器至客户机的响应数据域包括请求数据。

如果出现与请求Modbus功能有关的差错,那么域包括一个异常码。

服务器应用能够使用这个域确定下一个执行的操作。

例如。

客户机能够读一组离散量输出或输入的开/关状态,或者客户机能够读/写一组寄存器的数据内容。

当服务器对客户响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。

对于一个正常响应来说,服务器仅原始功能码响应。

 

图4-2Modbus事务处理(无差错)

对于异常响应,服务器返回一个与原始功能码等同的码,设置该原始功能码的最高有效位为逻辑1.

 

图4-3Modbus事务处理(异常响应)

2、Modbus主站/从站协议原理

Modbus串行链路协议是一个主—从协议。

在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。

Modbus通信总是由主节点发起。

子节点在没有收到来主节点的请求时,从不会发送数据,子节点之间从不会互相通信。

主节点在同一时刻只会发起一个Modbus事务处理。

主节点以两但种模式对子节点发出Modbus请求:

在单播模式,主节点以特定地址访问某子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个‘应答’)。

在这个模式,一个Modbus事务处理包含2个报文:

一个来自主节点的请求,一个来自子节点的应答。

每个子节点必须有唯一的地址(1到247),这样才能区别于其它节点被猪瘟独立的寻址。

在广播模式,主节点向所有子节点以送请求。

对于主节点广播的请求没有应答返回,广播请求一般用于写命令。

所有设备必须接受广播模式的写功能。

地址0是专门用于表示广播数据的。

本文以单播模式为例。

 

图4-4单播模式

 

图4-5广播模式

3、CRC16校验

在RTU模式包含一个对全部报文内容执行的,基于循环冗余校验(CRC-CyclicalRedundancyChecking)算法的错误检验域。

CRC域检验整个报文的内容。

不管报文有无奇偶校验,均执行此检验。

CRC包含由两个8位字节组成的一个16位值。

CRC域作为报文的最后的域附加在报文之后。

计算后,首先附加低字节,然后是高字节。

CRC高字节为报文发送的最后一个子节。

附加在报文后面的CRC的值由发送设备计算。

接收设备在接收报文时重新计算CRC的值,并将计算结果于实际接收到的CRC值相比较。

如果两个值不相等,则为错误。

CRC的计算,开始对一个16位寄存器预装全1。

然后将报文中的连续的8位子节对其进行后续的计算。

只有字符中的8个数据位参与生成CRC的运算,起始位,停止位和校验位不参与CRC计算。

CRC的生成过程中,每个8–位字符与寄存器中的值异或。

然后结果向最低有效位(LSB)方向

移动(Shift)1位,而最高有效位(MSB)位置充零。

然后提取并检查LSB:

如果LSB为1,则寄存器中的值与一个固定的预置值异或;如果LSB为0,则不进行异或操作。

这个过程将重复直到执行完8次移位。

完成最后一次(第8次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8次。

当所有报文中子节都运算之后得到的寄存器忠的最终值,就是CRC。

当CRC附加在报文之后时,首先附加低字节,然后是高字节。

4.1.2.2变频器的ModbusRTU通信的实现

1关于协议

●通信方法

基本的通讯方法是主设备发送Querymessage(查询),然后从设备回复Responsemessage(应答)。

正常通讯时会原样复制DeviceAddress和FunctionCode,异常通讯(功能代码、数据代码错误)时将Function Code的第7位(=80h)设置为ON,DataBytes设置为错误代码。

图4-6

信息帧由上表所示的4个信息区域构成。

通过在信息数据的前后附加3.5个字符的无数据时间(T1:

起始·完成),从设备会识别为1个信息。

2信息格式类型

●保持寄存器的数据读取(H03或03)

查询信息(Querymessage)

从设备地址

功能代码

起始地址

读取个数

CRC检验

(8bit)

H03

(8bit)

H

(8bit)

L

(8bit)

H

(8bit)

L

(8bit)

L

(8bit)

H

(8bit)

正常应答(Responsemessage)

从设备地址

功能代码

读取个数*2

读取数据

CRC校验

(8bit)

H03

(8bit)

(8bit)

(8bit)

(8bit)

(n×16bit)

(8bit)

(8bit)

●保持寄存器的数据写入(H06或06)

查询信息(Querymessage)

从设备地址

功能代码

寄存器地址

写入数据

CRC检验

(8bit)

H03

(8bit)

H

(8bit)

L

(8bit)

H

(8bit)

L

(8bit)

L

(8bit)

H

(8bit)

正常应答(Responsemessage)

从设备地址

功能代码

寄存器地址

写入数据

CRC检验

(8bit)

H03

(8bit)

H

(8bit)

L

(8bit)

H

(8bit)

L

(8bit)

L

(8bit)

H

(8bit)

注:

由于广播通讯时即使执行了查询也不会有应答,所以在进行下一个查询时,必须在执行完前一个查询后,等待变频器进行处理所需的时间后再进行。

●地址

H03功能代码

寄存器

内容

单位

读取/写入

40201

输出频率/转速

0.01Hz/1

读取

40202

输出电流

0.01A

读取

40203

输出电压

0.1V

读取

H06功能代码

寄存器

内容

单位

读取/写入

40205

频率设定值/转速设定值

0.01Hz/

0.001

写入

40015

运行频率(EEPROM值)

H00停止

H02正转

H04反转

写入

注:

请求PDU说明了起始寄存器地址和寄存器数量。

从零开始寻址寄存器。

因此,寻址寄存器1-16为0-15。

变频器参数设置

参数编号

名称

设定值

设定范围

内容

79

运行模式选择

6

0

外部/PU切换模式

1

固定为PU运行模式

2

可以在外部、网络模式间切换运行

3

外部/PU组合运行模式1

4

外部/PU组合运行模式2

6

网络模式

7

外部运行模式(PU运行互锁)

117

PU通讯站号

1

0

广播通讯

1—247

变频器站号指定1台控制器连接多台变频器时要设定变频器的站号。

118

PU通讯速率

192

48、96、192、348

通讯速率

设定值×100为通讯速率。

例)设定为96时通讯速率为9600bps

119

PU通讯停止位长

1

0

停止位

数据长度

1Bit

8Bit

1

2Bit

10

1Bit

7Bit

11

2Bit

120

PU通讯奇偶校验

2

0

无奇偶校验

1

奇校验

2

偶校验

121

PU通讯再试次数

9999

0~10

发生数据接收错误时的再试次数容许值。

连续发生错误

次数超过容许值时,变频器将跳闸

9999

即使发生通讯错误变频器也不会跳闸

122

U通讯校验时间间隔

9999

0

可进行RS-485通讯。

但,有操作权的运行模式启动的瞬

间将发生通讯错误(E.PUE)

0.1~999.8

通讯校验(断线检测)时间的间隔

无通讯状态超过容许时间以上时,变频器将跳闸。

(根据Pr.502的设定)。

9999

不进行通讯校验(断线检测)

123

PU通讯等待时间设定

9999

0~150ms

设定向变频器发出数据后信息返回的等待时间

9999

用通讯数据进行设定

124

PU通讯有无CR/LF选择

0

0

无CR、LF

1

有CR

2

有CR、LF

340

通讯启动模式选择

0

0

取决于Pr.79的设定

1

网络运行模式

10

网络运行模式

可通过操作面板切换PU运行模式与网络运行模式

343

通讯错误计数

0

-

显示ModbusRTU通讯时的通讯错误次数(只读)

502

通讯异常时停止模式选择

0

0

发生异常时

显示

异常输出

异常解除时

自由运行停止

E.PUE

输出

停止

(E.PUE)

1

减速停止

停止后

E.PUE

停止后输出

停止

(E.PUE)

2

减速停止

停止后

E.PUE

无输出

再启动

549

协议选择

1

0

三菱变频器(计算机链接)协议

1

Modbus-RTU协议

此时PLC的通信格式D8120=H0C97

【9】:

(1001)通信速率=19200pbs,

【7】:

(0111)停止位1位;偶校验,数据位8位)

3、PLC程序编写

在PLC程序里,顺序控制程序并不难编写,这里最难的是CRC16校验码的计算,CRC16校验码的计算方法比较麻烦,需要对每个位进行异或然后判断,而且每个字都要如此计算,而不像和校验那样有专门的计算指令。

对此,我的编写思路是采用子程序的调用,在需要用到CRC16校验代码的时候就调用CRC16计算的子程序,对于CRC16的PLC编程如下:

4.2三菱FX系列PLC编程口通信协议

4.2.1编程口RS-422接口的介绍

RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。

实际上还有一根信号地线,共5根线。

由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。

即一个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422支持点对多的双向通信。

接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。

RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)。

RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。

其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。

只有在很短的距离下才能获得最高速率传输。

一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。

 

 RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。

在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。

终接电阻接在传输电缆的最远端。

4.2.2基于三菱FxPLC编程口的通信

基于RS-422的FX系列的计算机通信用于一台计算机与一台PLC的通信,由计算机以出读写PLC中的数据命令报文,PLC收到后返回响应报文。

1、计算机与PLC之间的链接数据流

计算机与PLC之间的数据流有2种形式:

计算机从PLC中读数据;计算机向PLC写入数据。

1)计算机读PLC的数据

计算机从PLC读数据的过程分为两步:

●计算机向PLC发送读数据命令。

●PLC接收到命令后,执行相应的操作,将计算机要读限的数据发送给计算机。

2)计算机向PLC写入数据

计算机向PLC写数据的过程分为两步:

●计算机首先向PLC发送写数据命令。

●PLC接收到写入数据命令后,执行相应的操作,执行完成后向计算机发送确认信号,表示写入数据操作已完成。

2、基于RS-422的三菱Fx通信基本格式

1)数据传输的基本格式

数据传输基本格式如图

读PLC数据:

控制代码

命令

首地址

字节数

终止符

和检验

-

CMD

GROUPADDRESS

BYTES

ETX

SUM

向PLC写入数据:

控制代码

命令

首地址

字节数

数据符

终止符

和检验

-

CMD

GROUPADDRESS

BYTES

DATA

ETX

SUM

2)计算机与PLC数据的数据传输格式

1 当PLC读取PLC的数据且通信数据正确时,通信数据的形式如图4-7

 

图4-7

2 当计算机读取PLC元件数据且通信数据有错误时,其通信数据的形式如图4-8

 

图4-8

3 当计算机向PLC写入的元件数据且通信数据正确时,其通信数据的形式如图4-9:

 

图4-9

4 当计算机向PLC写入的元件数据且通信数据错误时,其通信数据的形式如图4-10:

 

图4-10

3控制协议各组成部分的说明

下面将按照从左到右的顺序,逐一介绍数据传输的基本格式中各部分的详细情况。

此通信的命令帧和响应帧均由ASCII码组成,使用ASCII码的优点是控制代码(包括结束字符)不会和需要的传送的数据的ASCII码混淆。

如果直接传送十六进制数据,可能会将数据误认为是报文结束字符。

一个字节的十六进制数对应两个ASCII码(即两个字节)。

因此ASCII码的传送效率较低。

1)控制代码

即ENQ、STX、NAK等,这些控制码用于通信的控制且在计算机的屏幕中属于不可见的字符,各个控制码的意义如下所示。

STX(StartofText,数据开始传送)

当PLC接收到要求读取元件的通信时,PLC会先判定接收的数据塄是否正确,若正确,即传送计算机所要求的元件数据,并于传送数据的最前端加上STX这个控制码。

STX是以十进制的2号ASCII码来表示的

ETX(EndofText,数据传送结束)

当STX表示数据开始时,PLC也会以ETX来表示数据传送的结束。

ETX是以3号ASCII码的字符来表示的。

ACK(Acknowledge,了解)

当PLC接收到的要求写入元件通信时,PLC会先判定接收的数据协议是否正确,若正确后即变更元件的数据,并以ACK回应计算机来表示收到。

NAK(NotAcknowledge,不了解)

当PLC接收到要求写入元件的通信时,PLC会先判定接收的否正确,若不正确,会以NAK回应计算机来表示不了解此次通信;

2)命令

表通信格式中的命令

命令

命令符号

目标设备

字元件读取

0

X,Y,M,S,T,C,D

字元件写入

1

X,Y,M,S,T,C,D

位元件置ON

7

X,Y,M,S,T,C

位元件置OFF

8

X,Y,M,S,T,C

命令是用来指定操作的类型,例如读、写等,用一个ASCII符号来表示。

3)首地址

422通信协议的通讯地址不像485通信协议的通讯地址那样直观,不用算,就是PLC的元件地址。

其地址为4位十六进制数表示。

位元件强制置位的地址

位元件强制的地址不象字元件D的地址那样,其寻址方式比较麻烦。

其地址如图4-11

 

图4-11

 按照上面排列可计算以下地址:

 

  0600~06FF T0-T255 

  0800~0BFF M0-M1023 

  0E00~0EFF C0-C255 

0F00-0FFFM8000-M8255

位元件状态查询的地址

位元件的状态查询不是每个元件有一个地址,而是一个元件组(8个)为一个地址。

具体地址如下图4-12:

 

图4-12

上表用于读取当前状态,写入时,X,Y,M,S,T,C 作为触点使用的地址:

如读M8~M23的值即K4M8

  地址:

0101 数据长度02

字元件D的地址

字元件D的地址比较容易计算,即是PLC内字元件D地址(4位)乘以2后再加上1000H就是422协议通信时的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2