通讯协议.docx
《通讯协议.docx》由会员分享,可在线阅读,更多相关《通讯协议.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、通讯协议通信协议又称通信规程,是指通信双方对数据传送掌握的一种商定。商定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及掌握字符定义等问题做出统一规定,通信双方必需共同遵守,它也叫做链路掌握规程。电脑与电脑之间的沟通必需表达一样的语言,才能相互传输信息,自然资料在国际互联网上传递,每一份都要符合肯定的规格即是一样的语言,否则中国送出的资料,在美国那边要怎么收下呢?这些规格语言的规定都是事先在会议桌上讲好的, 一般我们称之为 “协议”英文称为 protocol ,而这种在网络上负责定义资料传输规格的协议,我们就统称为通讯协议。其实每一种网络所使用的通讯协议都不太一样,但就以我们最常
2、用的 Internet 为例,当资料要送到 Internet 上时,就必需要使用 Internet 用的通讯协议。TCP/IPTCP 是英文 Transmission Control Protocol 的缩写,中文翻译与 “传输掌握通讯协议”。TCP/IP 是网络中使用的根本的通信协议。虽然从名字上看TCP/IP 包括两个协议,传输掌握协议 (TCP) 和网际协议 (IP) ,但 TCP/IP 实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP 协议和 IP 协议是保证数据完整传输的两个根本的重要协议。通常说TCP/IP 是 Internet 协议族,而
3、不单单是 TCP 和 IP。TCP/IP 是用于计算机通信的一组协议,我们通常称它为TCP/IP 协议族。它是 7 0 年月中期美国国防部为其 ARPANET 广域网开发的网络体系构造和协议标准, 以它为根底组建的 INTERNET 是目前国际上规模最大的 计算机网络 ,正由于 INTERNET 的广泛使用,使得 TCP/IP 成了事实上的标准。之所以说 TCP/IP 是一个协议族,是由于 TCP/IP 协议包括 TCP、IP、UDP、IC MP、RIP、TELNETFTP 、SMTP 、ARP、TFTP 等很多协议,这些协议一起称为 TC P/IP 协议。IP,则是 Internet Pro
4、tocol 的缩写,中文翻译成 “国际互联网通讯协议 ”。它们组合成互联网的语言, 由于 Internet 是由全世界很多大大小小的网络连接而成,所以大家必需遵守它的语言也就是: TCP/IP 的通讯协议才能顺当跟别人沟通。不过假设你来到别的网络,就等于是来到一个生疏的国家,使用的通讯协议,也就换作另一套了!由此可知 TCP/IP 只是网络上众多通讯协议的其中一种而已。在 Internet 上每一台机器都要有一个 IP每一台连接到 Internet 上的电脑,为了要让资料能够正确且顺当地传输,它会为每一台机器定义一个 IPIP 地址,也就等于是给你的电脑装上门牌号码;由于资料在电脑之间传输,就
5、和车子在都市中跑来跑去有点像,假设有了IP门牌号码, 网络的设备马上便能得知,这一份资料是要送到哪一台电脑去。Modbus 通讯协议具体介绍分类:电工技术 更时间:2023-01-09 17:18:05Modbus 协议最初由 Modicon 公司开发出来,在 1979 年末该公司成为施耐德自动 化(Schneider Automation)部门的一局部,现在 Modbus 已经是工业领域全球最流行的协议。此协议支持传统的 RS-232、RS-422、RS-485 和以太网设备。很多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus 协议作为他们之间的通讯标准。有了它,不同厂商生产的
6、掌握设备可以连成工业网络,进展集中监控。当在网络上通信时,Modbus 协议打算了每个掌握器必要知道它们的设备地址, 识别按地址发来的消息,打算要产生何种行动。假设需要回应,掌握器将生成应答并使用 Modbus 协议发送给询问方。 Modbus 协议包括 ASCII、RTU、TCP 等, 并没有规定物理层。此协议定义了掌握器能够生疏和使用的消息构造,而不管它们是经过何种网络进展通信的。标准的 Modicon 掌握器使用 RS232C 实现串行的Modbus。Modbus 的 ASCII、RTU 协议规定了消息、数据的构造、命令和就答的方式,数据通讯承受 Maser/Slave 方式,Maste
7、r 端发出数据恳求消息,Slave 端接收到正确消息后就可以发送数据到 Master 端以响应恳求;Master 端也可以直接发消息修改 Slave 端的数据,实现双向读写。 Modbus 协议需要对数据进展校验, 串行协议中除有奇偶校验外,ASCII 模式承受 LRC 校验,RTU 模式承受 16 位 CRC 校验,但 TCP 模式没有额外规定校验,由于 TCP 协议是一个面对连接的牢靠协议。另外,Modbus 承受主从方式定时收发数据,在实际使用中假设某 Slave 站点断开后如故障或关机,Master 端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus 协议的牢靠性较好
8、。 下面我来简洁的给大家介绍一下, 对于 Modbus 的 ASCII、RTU 和 TCP 协议来说,其中 TCP 和 RTU 协议格外类似,我们只要把 RTU 协议的两个字节的校验码去掉,然后在 RTU 协议的开头加上 5 个 0 和一个 6 并通过 TCP/IP 网络协议发送出去即可。所以在这里我仅介绍一下Modbus 的 ASCII 和 RTU 协议。 下表是 ASCII 协议和 RTU 协议进展的比较:开记:始标完毕标记校验冒CR,LFLRC传率低输效程序处理协议ASCII号无无CRC高RTU直观, 简洁, 易调试不 直 观 , 稍 简单通过比较可以看到,ASCII 协议和 RTU 协
9、议相比拥有开头和完毕标记,因此在进展程序处理时能更加便利,而且由于传输的都是可见的 ASCII 字符,所以进展调试时就更加的直观,另外它的 LRC 校验也比较简洁。但是由于它传输的都是可见的 ASCII 字符,RTU 传输的数据每一个字节 ASCII 都要用两个字节来传输, 比方 RTU 传输一个十六进制数 0xF9,ASCII 就需要传输F9的 ASCII 码0x39 和 0x46 两个字节,这样它的传输的效率就比较低。所以一般来说,假设所需要传输的数据量较小可以考虑使用 ASCII 协议,假设所需传输的数据量比较大,最好能使用 RTU 协议。下面对两种协议的校验进展一下介绍。1、LRC 校
10、验LRC 域是一个包含一个 8 位二进制值的字节。LRC 值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算 LRC,并将它和接收到消息中 LRC域中的值比较,假设两值不等,说明有错误。LRC 校验比较简洁,它在ASCII 协议中使用,检测了消息域中除开头的冒号及完毕的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加 1 即可。下面是它的 VC 代码:BYTE GetCheckCode(const char * pSendBuf, int nEnd)/获得校验码BYTE byLrc = 0; char pBuf4; int nData = 0;for(i=1;
11、 i/每两个需要发送的 ASCII 码转化为一个十六进制数pBuf0=pSendBuf i;pBuf1=pSendBuf i+1;pBuf2=”0”;sscanf(pBuf,“%x“,& nData); byLrc += nData;byLrc = byLrc; byLrc +;return byLrc;2、CRC 校验CRC 域是两个字节,包含一 16 位的二进制值。它由传输设备计算后参加到消息中。接收设备重计算收到消息的 CRC,并与接收到的 CRC 域中的值比较, 假设两值不同,则有误。CRC 是先调入一值是全“1”的 16 位存放器,然后调用一过程将消息中连续的 8 位字节各当前存放器
12、中的值进展处理。仅每个字符中的 8Bit 数据对 CRC 有效,起始位和停顿位以及奇偶校验位均无效。CRC 产生过程中,每个 8 位字符都单独和存放器内容相或OR,结果向最低有效位方向移动,最高有效位以 0 填充。LSB 被提取出来检测,假设 LSB 为 1, 存放器单独和预置的值或一下,假设 LSB 为 0,则不进展。整个过程要重复 8 次。在最终一位第 8 位完成后,下一个 8 位字节又单独和存放器的当前值相或。最终存放器中的值,是消息中全部的字节都执行之后的 CRC 值。CRC 添加到消息中时,低字节先参加,然后高字节。下面是它的 VC 代码: WORD GetCheckCode(con
13、st char * pSendBuf, int nEnd)/获得校验码WORD wCrc = WORD(0xFFFF);for(int i=0; iwCrc = WORD(BYTE(pSendBufi); for(int j=0; j= 1; wCrc = 0xA001;elsewCrc = 1;return wCrc;对于一条RTU 协议的命令可以简洁的通过以下的步骤转化为ASCII 协议的命令:1、 把命令的 CRC 校验去掉,并且计算出 LRC 校验取代。2、 把生成的命令串的每一个字节转化成对应的两个字节的 ASCII 码,比方0x03 转化成 0x30,0x330 的 ASCII 码
14、和 3 的 ASCII 码。3、 在命令的开头加上起始标记“:”,它的 ASCII 码为 0x3A。4、 在命令的尾部加上完毕标记 CR,LF0xD,0xA,此处的 CR,LF 表示回车和换行的 ASCII 码。所以以下我们仅介绍 RTU 协议即可,对应的 ASCII 协议可以使用以上的步骤来生成。下表是 Modbus 支持的功能码:功能码名称作用01读取线圈状态02读取输入状态读器读器取保 持 寄03取输入寄04强置单线圈取 得 一 组 逻 辑 线 圈 的 当 前 状 态ON/OFF)取 得 一 组 开 关 输 入 的 当 前 状 态ON/OFF)存在一个或多个保持存放器中取得当前的二进制值
15、存在一个或多个输入存放器中取得当前的二进制值强置一个规律线圈的通断状态0506 预置单存放器把具体二进值装入一个保持存放器取得 8 个内部线圈的通断状态,这 8 个线圈的地读取特别状态07 址由掌握器打算把诊断校验报文送从机,以对通信处理进展评回送诊断校验08 鉴编 程 只 用 于使主机模拟编程器作用, 修改 PC从机逻09484辑可使主机与一台正在执行长程序任务从机通信,控 询 只 用 于10484探询该从机是否已完成其操作任务,仅在含有功能码 9 的报文发送后,本功能码才发送可使主机发出单询问,并随即判定操作是否成功,11 读取大事计数尤 其 是该 命令 或其 他应 答 产 生通 信 错
16、误时可是主机检索每台从机的 Modbus 事务处理通信读 取 通 信 事 件 记12 录大事记录。假设某项事务处理完成,记录会给出有关错误编程 184/384484 可使主机模拟编程器功能修改 PC从机逻13584辑探询 184/384484 可使主机与正在执行任务的从机通信,定期控询14584该从机是否已完成其程序操作,仅在含有功能13 的报文发送后,本功能码才得发送15 强置多线圈强置一串连续规律线圈的通断把具体的二进制值装入一串连续的保持存放预置多存放器16 器可使主机推断编址从机的类型及该从机运行指示报告从机标识17 灯的状态 884和 MICRO可使主机模拟编程功能, 修改 PC状态
17、逻1884辑发生非可修改错误后,是从机复位于状态,重置通信链路19可重置挨次字节读 取 通 用 参 数20584L显示扩展存储器文件中的数据信息写 入 通 用 参 数把 通 用参 数写 入扩 展存 储 文 件, 或 修 改21584L之保存作扩展功能备2264用保存以备用户功能所6572用留作用户功能的扩展编码73119120127128255非法功能保存保存留作内部作用用于特别应答在这些功能码中较长使用的是 1、2、3、4、5、6 号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。1、读可读写数字量存放器线圈状态:计算机发送命令:设备地址 命令号 01 起始存放器地址高 8 位
18、低 8 位 读取的存放器数高 8 位 低 8 位 CRC 校验的低 8 位 CRC 校验的高 8 位例:110100130025CRC 低CRC 高意义如下:设备地址:在一个 485 总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和 17 号(十进制的 17 是十六进制的 11)通讯。命令号 01:读取数字量的命令号固定为 01。起始地址高 8 位、低 8 位:表示想读取的开关量的起始地址(起始地址为0)。比方例子中的起始地址为 19。存放器数高 8 位、低 8 位:表示从起始地址开头读多少个开关量。例子中为 37 个开关量。CRC 校验:是从开头始终校验到此之前。在
19、此协议的最终再作介绍。此处需要留意,CRC 校验在命令中的凹凸字节的挨次和其他的相反。设备响应:设备地址 命令号 01 返回的字节个数数据 1数据2.数据 nCRC 校验的低 8 位 CRC 校验的高 8 位例:110105CD6BB20E1BCRC 低CRC 高意义如下:设备地址和命令号和上面的一样。返回的字节个数:表示数据的字节个数,也就是数据 1,2.n 中的 n的值。数据 1.n:由于每一个数据是一个 8 位的数,所以每一个数据表示 8 个开关量的值,每一位为 0 表示对应的开关断开,为 1 表示闭合。比方例子中, 表示 20 号(索引号为 19)开关闭合,21 号断开,22 闭合,2
20、3 闭合,24 断开,25 断开,26 闭合,27 闭合.假设询问的开关量不是 8 的整倍数,那么最终一个字节的高位局部无意义,置为 0。CRC 校验同上。2、读只可读数字量存放器输入状态:和读取线圈状态类似,只是其次个字节的命令号不再是 1 而是 2。3、写数字量线圈状态:计算机发送命令:设备地址 命令号 05 需下置的存放器地址高 8 位 低 8 位 下置的数据高 8 位 低 8 位 CRC 校验的低 8 位 CRC 校验的高 8 位例:110500ACFF00CRC 低CRC 高意义如下:设备地址和上面的一样。命令号:写数字量的命令号固定为 05。需下置的存放器地址高 8 位,低 8 位
21、:说明白需要下置的开关的地址。下置的数据高 8 位,低 8 位:说明需要下置的开关量的状态。例子中为把该开关闭合。留意,此处只可以是FF00表示闭合0000表示断开,其他数值非法。留意此命令一条只能下置一个开关量的状态。设备响应:假设成功把计算机发送的命令原样返回,否则不响应。4、读可读写模拟量存放器保持存放器:计算机发送命令:设备地址 命令号 03 起始存放器地址高 8 位 低 8 位 读取的存放器数高 8 位 低 8 位 CRC 校验的低 8 位 CRC 校验的高 8 位例:1103006B0003CRC 低CRC 高意义如下:设备地址和上面的一样。命令号:读模拟量的命令号固定为 03。起
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯 协议
限制150内