热控专业设计需要掌握的基础知识五通讯的相关知识.docx
- 文档编号:26427985
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:43
- 大小:529.63KB
热控专业设计需要掌握的基础知识五通讯的相关知识.docx
《热控专业设计需要掌握的基础知识五通讯的相关知识.docx》由会员分享,可在线阅读,更多相关《热控专业设计需要掌握的基础知识五通讯的相关知识.docx(43页珍藏版)》请在冰豆网上搜索。
热控专业设计需要掌握的基础知识五通讯的相关知识
现场总线技术
1、什么是现场总线?
现场总线:
是连接智能现场设备和自动化系统的全数字、双向、多站的通信系统。
主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递问题。
主流现场总线简介:
A、基金会现场总线(FoundationFieldbus简称FF)
这是以美国Fisher-Rousemount公司为首的联合了横河、ABB、西门子、英维斯等80家公司制定的ISP协议和以Honeywell公司为首的联合欧洲等地150余家公司制定的WorldFIP协议于1994年9月合并的。
该总线在过程自动化领域得到了广泛的应用,具有良好的发展前景。
B、CAN(ControllerAreaNetwork控制器局域网)
最早由德国BOSCH公司推出,它广泛用于离散控制领域,其总线规范已被ISO国际标准组织制定为国际标准,得到了Intel、Motorola、NEC等公司的支持。
C、Lonworks
它由美国Echelon公司推出,并由Motorola、Toshiba公司共同倡导。
D、DeviceNet
DeviceNet是一种低成本的通信连接也是一种简单的网络解决方案,有着开放的网络标准。
E、PROFIBUS
PROFIBUS是德国标准(DIN19245)和欧洲标准(EN50170)的现场总线标准。
由PROFIBUS--DP、PROFIBUS-FMS、PROFIBUS-PA系列组成。
F、HART
HART是HighwayAddressableRemoteTransducer的缩写,最早由Rosemount公司开发。
G、CC-Link
CC-Link是Control&CommunicationLink(控制与通信链路系统)的缩写,在1996年11月,由三菱电机为主导的多家公司推出,其增长势头迅猛,在亚洲占有较大份额。
H、WorldFIP
WorkdFIP的北美部分与ISP合并为FF以后,WorldFIP的欧洲部分仍保持独立,总部设在法国。
其在欧洲市场占有重要地位,特别是在法国占有率大约为60%。
I、INTERBUS
INTERBUS是德国Phoenix公司推出的较早的现场总线,2000年2月成为国际标准IEC61158。
此外较有影响的现场总线还有丹麦公司Process-DataA/S 提出的P-Net,该总线主要应用于农业、林 业、水利、食品等行业;SwiftNet现场总线主要使用在航空航天等领域。
Fieldbus:
Profibus:
Hart:
2、现场总线特点
实现数字化、双向通信(取消数字/模拟转换)
控制设备信息扩展(控制范围更广)
降低安装成本
实现分布式控制功能
互操作性(Interoperability)
第三方接口调试必备软件ModScan32
Modscan基本上是第三方通讯必备的调试软件,在这里跟大家分享。
1.首先要保证外部连接线正确连接好,确认数据的连接正常,搞定了硬件,下面进入到软件界面操作.
第一步:
单击菜单栏的Connenction---à”connect”出现
第二步:
单击RotocolSelection进入下一步
第三步:
通讯参数设定:
进行下面的设置操作.单击后出现的界面填写如下图所示的数据
2.Modbus的类型选择:
在ModbusPointType就是要读取的寄存器区:
“01:
COILSTATUS”指1号命令DO寄存器
“02:
INPUTSTATUS”指2号命令DI寄存器
“03:
HOLDINGREGUSTER”指3号命令保存寄存器
“04:
INPUTREGISTER”指4号命令输入寄存器
按照硬件产品说明书指导选择哪一种类型。
3.PC显示数据设置:
从左到右对应看:
二进制、八进制、十六进制
4.其它功能菜单项:
从左到右对应看:
新建、打开、保存、连接、断开、数据定义等。
所有参数设置完成后单击OK,如果对应串口有数据输入,就能获取数据。
备注:
采用Modbus/485信号接入要求如下:
1.Server通讯的参数为9600,8,1,无效验(可调整,但是目前企业通讯模式参数一致)
2.Server的485地址是1
3.采集点对应ModbusRTU地址为4001开始,数据类型为RINT。
4.提供的MOdbusRTUServer必须是国际标准版协议,使用Modscan调试软件能够测试通过。
选择不同的通讯方式,传输距离的区别
连接机柜和电脑的通讯线常用有以下几种模式:
a.RS232.b.RS485.c.光纤通讯.d.网线通讯。
下面就这几种线的距离分别说一下:
1.RS232
波特率为1200、2400/4800/9600/19K2时,最大通讯距离为15米;波特率为38K4时,最大通讯距离为10m。
波特率越大,通讯速度越快,相对来说通讯距离就越短。
2.RS485
波特率为19k2,38k4,50k,57k6时最大的通讯距离为1.2km,通讯方式为Multidrop(md)
波特率为115k2时最大的通讯距离为1km,通讯方式为Multidrop和pointtopoint(ptp)
波特率为115k2时最大通讯距离为1km,通讯方式为md和ptp
波特率为1M时最大通讯距离为120m,通讯方式为md和ptp
波特率为2M时最大通讯距离为60m,通讯方式为md和ptp
所以RS485的通讯距离最大是可以达到1200米的,如果再加上放大器的话理论可以达到9600米,但是距离越远传输速度越低。
3.光纤通讯
光纤分为单模和多模光纤。
单模光纤传送的距离20公里都没有问题。
多模在2公里之内都没有问题。
单模的机器贵但是光纤便宜。
多模的机器便宜但是光纤贵。
距离短的选多模比较便宜。
4.网线
国际网线的标准网线链路的距离最好不要超过90M,当然可以加交换机和路由器等中继。
所以结论就是如果费用允许,最好选光纤。
如果选择便宜的方案可以加中继。
Modbus通讯协议解析
了解Modbus通讯协议是怎么回事,在现场就可以用各种第三方的小软件做通讯测试了。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。
此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。
标准的Modicon控制器使用RS232C实现串行的Modbus。
Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。
另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。
因此,Modbus协议的可靠性较好。
对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。
(一)、通讯传送方式:
通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与ModBusRTU通讯规约相兼容:
初始结构=≥4字节的时间
地址码=1字节
功能码=1字节
数据区=N字节
错误校检=16位CRC码
结束结构=≥4字节的时间
地址码:
地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:
通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:
数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:
二字节的错误检测码。
(二)、通讯规约:
当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1.信息帧结构
地址码功能码数据区错误校验码
8位8位N×8位16位
地址码:
地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。
当从机回送信息时,相当的地址码表明该信息来自于何处。
功能码:
主机发送的功能码告诉从机执行什么任务。
表1-1列出的功能码都有具体的含义及操作。
数据区:
数据区包含需要从机执行什么动作或由从机采集的返送信息。
这些信息可以是数值、参考地址等等。
例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器的起始地址及读取长度。
对于不同的从机,地址和数据信息都不相同。
错误校验码:
主机或从机可用校验码进行判别接收信息是否出错。
有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程中出错的信息不起作用。
这样增加了系统的安全和效率。
错误校验采用CRC-16校验方法。
注:
信息帧的格式都基本相同:
地址码、功能码、数据区和错误校验码。
2.错误校验
冗余循环码(CRC)包含2个字节,即16位二进制。
CRC码由发送设备计算,放置于发送信息的尾部。
接收信息的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。
(三)、Modbus支持的功能码:
功能码
名称
作用
1
读取线圈状态
取得一组逻辑线圈的当前状态(ON/OFF)
2
读取输入状态
取得一组开关输入的当前状态(ON/OFF)
3
读取保持寄存器
在一个或多个保持寄存器中取得当前的二进制值
4
读取输入寄存器
在一个或多个输入寄存器中取得当前的二进制值
5
强置单线圈
强置一个逻辑线圈的通断状态
6
预置单寄存器
把具体二进值装入一个保持寄存器
7
读取异常状态
取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定
8
回送诊断校验
把诊断校验报文送从机,以对通信处理进行评鉴
9
编程(只用于484)
使主机模拟编程器作用,修改PC从机逻辑
10
控询(只用于484)
可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送
11
读取事件计数
可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时
12
读取通信事件记录
可是主机检索每台从机的ModBus事务处理通信事件记录。
如果某项事务处理完成,记录会给出有关错误
13
编程(184/384484584)
可使主机模拟编程器功能修改PC从机逻辑
14
探询(184/384484584)
可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送
15
强置多线圈
强置一串连续逻辑线圈的通断
16
预置多寄存器
把具体的二进制值装入一串连续的保持寄存器
17
报告从机标识
可使主机判断编址从机的类型及该从机运行指示灯的状态
18
(884和MICRO84)
可使主机模拟编程功能,修改PC状态逻辑
19
重置通信链路
发生非可修改错误后,是从机复位于已知状态,可重置顺序字节
20
读取通用参数(584L)
显示扩展存储器文件中的数据信息
21
写入通用参数(584L)
把通用参数写入扩展存储文件,或修改之
22~64
保留作扩展功能备用
65~72
保留以备用户功能所用
留作用户功能的扩展编码
73~119
非法功能
120~127
保留
留作内部作用
128~255
保留
用于异常应答
(三)、功能码命令详解:
在这些功能码中较长使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。
1、01号命令,读可读写数字量寄存器(线圈状态):
计算机发送命令:
[设备地址][命令号01][起始寄存器地址高8位][低8位][读取的寄存器数高8位][低8位][CRC校验的低8位][CRC校验的高8位]
例:
[11][01][00][13][00][25][CRC低][CRC高]
意义如下:
<1>设备地址:
在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。
例子中为想和17号(十进制的17是十六进制的11)通讯。
<2>命令号01:
读取数字量的命令号固定为01。
<3>起始地址高8位、低8位:
表示想读取的开关量的起始地址(起始地址为0)。
比如例子中的起始地址为19。
<4>寄存器数高8位、低8位:
表示从起始地址开始读多少个开关量。
例子中为37个开关量。
<5>CRC校验:
是从开头一直校验到此之前。
设备响应:
[设备地址][命令号01][返回的字节个数][数据1][数据2]...[数据n][CRC校验的高8位][CRC校验的低8位]
例:
[11][01][05][CD][6B][B2][0E][1B][CRC高][CRC低]
意义如下:
<1>设备地址和命令号和上面的相同。
<2>返回的字节个数:
表示数据的字节个数,也就是数据1,2...n中的n的值。
<3>数据1...n:
由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。
比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。
<4>CRC校验同上。
2、05号命令,写数字量(线圈状态):
计算机发送命令:
[设备地址][命令号05][需下置的寄存器地址高8位][低8位][下置的数据高8位][低8位][CRC校验的低8位][CRC校验的高8位]
例:
[11][05][00][AC][FF][00][CRC高][CRC低]
意义如下:
<1>设备地址和上面的相同。
<2>命令号:
写数字量的命令号固定为05。
<3>需下置的寄存器地址高8位,低8位:
表明了需要下置的开关的地址。
<4>下置的数据高8位,低8位:
表明需要下置的开关量的状态。
例子中为把该开关闭合。
注意,此处只可以是[FF][00]表示闭合[00][00]表示断开,其他数值非法。
<5>注意此命令一条只能下置一个开关量的状态。
设备响应:
如果成功把计算机发送的命令原样返回,否则不响应。
3、03号命令,读可读写模拟量寄存器(保持寄存器):
计算机发送命令:
[设备地址][命令号03][起始寄存器地址高8位][低8位][读取的寄存器数高8位][低8位][CRC校验的高8位][CRC校验的低8位]
例:
[11][03][00][6B][00][03][CRC高][CRC低]
意义如下:
<1>设备地址和上面的相同。
<2>命令号:
读模拟量的命令号固定为03。
<3>起始地址高8位、低8位:
表示想读取的模拟量的起始地址(起始地址为0)。
比如例子中的起始地址为107。
<4>寄存器数高8位、低8位:
表示从起始地址开始读多少个模拟量。
例子中为3个模拟量。
注意,在返回的信息中一个模拟量需要返回两个字节。
设备响应:
[设备地址][命令号03][返回的字节个数][数据1][数据2]...[数据n][CRC校验的高8位][CRC校验的低8位]
例:
[11][03][06][02][2B][00][00][00][64][CRC高][CRC低]
意义如下:
<1>设备地址和命令号和上面的相同。
<2>返回的字节个数:
表示数据的字节个数,也就是数据1,2...n中的n的值。
例子中返回了3个模拟量的数据,因为一个模拟量需要2个字节所以共6个字节。
<3>数据1...n:
其中[数据1][数据2]分别是第1个模拟量的高8位和低8位,[数据3][数据4]是第2个模拟量的高8位和低8位,以此类推。
例子中返回的值分别是555,0,100。
<4>CRC校验同上。
4、06号命令,写单个模拟量寄存器(保持寄存器):
计算机发送命令:
[设备地址][命令号06][需下置的寄存器地址高8位][低8位][下置的数据高8位][低8位][CRC校验的高8位][CRC校验的低8位]
例:
[11][06][00][01][00][03][CRC高][CRC低]
意义如下:
<1>设备地址和上面的相同。
<2>命令号:
写模拟量的命令号固定为06。
<3>需下置的寄存器地址高8位,低8位:
表明了需要下置的模拟量寄存器的地址。
<4>下置的数据高8位,低8位:
表明需要下置的模拟量数据。
比如例子中就把1号寄存器的值设为3。
<5>注意此命令一条只能下置一个模拟量的状态。
设备响应:
如果成功把计算机发送的命令原样返回,否则不响应。
5、16号命令,写多个模拟量寄存器(保持寄存器):
计算机发送命令:
[设备地址][命令号16][需下置的寄存器地址高8位][低8位][数据数量高8位][数据数量低8位][下置的数据高8位][低8位][……][……][CRC校验的高8位][CRC校验的低8位]
例:
[11][16][00][01][00][01][00][05][CRC高][CRC低]
意义如下:
<1>设备地址和上面的相同。
<2>命令号:
写模拟量的命令号固定为16。
<3>需下置的寄存器地址高8位,低8位:
表明了需要下置的模拟量寄存器的地址。
<4>需下置的数据数量高8位,低8位:
表明了需要下置的数据数量,这里为1。
<5>下置的数据高8位,低8位:
表明需要下置的模拟量数据。
比如例子中就把1号寄存器的值设为5。
设备响应:
如果成功把计算机返回的如下命令,否则不响应。
设备响应:
[设备地址][命令号16][需下置的寄存器地址高8位][低8位][数据数量高8位][数据数量低8位][CRC校验的高8位][CRC校验的低8位],如上例返回:
[11][16][00][01][00][01][CRC高][CRC低]
modbusRTU问题汇总
一、ModBusRTU通讯协议与ModBus通讯协议有什么区别?
ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。
ModBus协议能够应用在不同类型的总线或网络。
对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。
目前,Modbus有下列三种通信方式:
1.以太网,对应的通信模式是MODBUSTCP。
2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUSRTU或MODBUSASCII。
3.高速令牌传递网络,对应的通信模式是ModbusPLUS。
二、关于MODBUSRTU通讯协议的提问?
modbus 主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。
其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验,
三、modbus、rtu、modbusrtu分别是什么?
modbus协议是工控行业的标准协议,前身为莫迪康所写,现已被施奈德收购。
而modbus分为两种协议:
即串口协议(modbusrtu)和网口协议(modbustcp)协议,一般的工控机只支持rs232或者RS485的串口模式,这个时候工控机的协议栈里就只有modbusRTU协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用modbusTCP协议进行传输,则需要使用带有网口的PLC。
具体的帧格式如下:
modbusRTU 地址域功能码数据差错校验
modbusTCP 目的地址协议id 长度单元号功能码数据
简单的说 tcp是由RTU加工而来的,而RTU则是另外一种概念,不包含在modus协议内,是工控行业对监控设备的简称。
四、关于modbus_RTU协议主机发送的命令的一些问题
01 读保持线圈状态(Readcoilstatus)
02 读输入线圈状态(Readinputstatus)
03 读保持寄存器(Readholdingregister)
04 读输入寄存器(Readinputregister)
05 写单个线圈(Forcesinglecoil)
06 写单个寄存器(Presetsingleregister)
15 写多个线圈(Forcemultiplecoils)
16 写多个寄存器(Presetmultipleregisters)
这些都是什么意思
答:
01 读取逻辑线圈组状态
02 读取离散量线圈组状态
03 读取一个或多个保持寄存器的二进制值
04 读取一个或多个输入寄存器的二进制值
05 改变逻辑线圈状态
06 改变单个寄存器的二进制值
15 改变多个寄存器的二进制值
16 指定多个操持寄存器的二进制值
五、OPC转modbusRTU 方式我现在有一个OPC服务器,里面很多tag,tag是AB里出来的,怎么将tag连到modbus?
Profibus、Fielbus、Modbus、CC-link等等是各中PLC硬件支持的通讯协议,这个是各厂商的硬件属性一样.只是现在计算机组态软件都支持很多种协议的PLC.你理解反了。
Profibus、Fielbus、Modbus、CC-link这些协议,是一种通讯协议,一般不需要你去编程,就好象你使用计算机,你不需要编写IP协议一样,只是要遵循它。
遵循的意思就是,你必须按照该厂家所支持的协议在PLC或者DCS硬件组态的时候按照该通讯协议设置硬件.其实这个很简单.这里简单指的是,你学编程,重点是编写执行控制的动作的程序,硬件通讯协议不需要你自己动手写。
六、什么是modbusrtumaster?
就是选RTU模式,因为MOD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业 设计 需要 掌握 基础知识 通讯 相关 知识
![提示](https://static.bdocx.com/images/bang_tan.gif)