PLC常用通信协议应用

PLC通信协议

  • Modbus
    • Modbus协议介绍
      • Modbus协议的应用
      • Modbus通信模式
    • Modbus RTU通讯
      • Modbus RTU报文
      • 映射寄存器
      • 常见功能码
      • 数据类型
      • Modbus CRC校验计算
      • Modbus RTU举例(读位)
      • Modbus RTU举例(读字)
    • Modbus TCP协议应用
      • TCP数据帧
      • Modbus TCP报文
  • ADS
    • ADS简介
    • ADS支持多种协议
    • ADS通讯原理
      • AdsNetId组成
      • AdsNetId构成
  • USS
    • USS协议

Modbus

Modbus协议介绍

Modbus是一种标准通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。
Modbus协议是一个Master/Slave架构的协议:

  • 1.即仅一设备(主设备)能初始化传输(查询),其它设备(从设备)根据主设备查询提供的数据作出相应反应;理论上最多支持247(10进制)台从设备。
  • 2.主设备可单独和从设备通信,也能以 广播方式(站号0) 和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。

Modbus协议的应用

  1. 最早也应用最广泛的协议,几乎所有设备都支持
  2. 虽有标准,但都遵循的不是那么规范

Modbus通信模式

序号类型与描述典型应用特点
1RTU模式(串口)传输大量数据,适合工业
2ASCII模式(串口)传输少量数据,适合计算机
3TCP模式(网口)传输严谨,效率低
4UDP模式(网口)传输效率高

Modbus RTU通讯

Modbus RTU报文

Modbus协议的报文(或帧)的基本格式是:地址码 + 功能码 + 数据区 + 校验码(注意“十六进制” “字节”

地址码功能码寄存器地址寄存器数量CRC校验
Modbus RTU1 byte1 byte2 byte
eg:010300 0100 0415 C9

数据字节:高位在前,低位在后
CRC校验:低位在前,高位在后
每报文(数据帧)最长为252字节,即最多126 个字

映射寄存器

设备类型读写属性应用定义功能码(16进制)Modbus协议地址内部地址
0x可读可写线圈(输出点)01、05、0F0000 - FFFF000001 065536(0x)
1x只读离散量输入(输入)020000 - FFFF100001 165536(1x)
3x 3x_Bit只读输入寄存器(数据寄存器)040000 - FFFF300001 365536(3x)
4x 4x_Bit可读可写保持寄存器,写的时候功能码多为1003、06、100000 - FFFF400001 465536(4x)
5x可读可写同4x,但在32位数据类型时,数据排放相反03、06、100000 - FFFF500001 565536(5x)
6x可读可写同4x,但在写功能功能码为0603、06、100000 - FFFF500001 565536(5x)

常见功能码

功能码名称功能对应的地址类型
01读线圈状态读位(读N个bit)–读从机线圈寄存器,位操作0x
02读输入离散量读位(读N个bit)–读离散输入寄存器,位操作1x
03读多个寄存器读整型、字符型、状态字、浮点型(读N个words)–读保持寄存器,字节操作4x
04读输入寄存器读整型、状态字、浮点型(读N个words)–读输入寄存器,字节操作3x
05写单个线圈写位(写1个bit)–写线圈寄存器,位操作0x
06写单个保持寄存器写整型、字符型、状态字、浮点型(写一个word)–写保持寄存器,字节操作4x
0F写多个线圈写位(写n个bit)–强置一串连续逻辑线圈的通断0x
10写多个保持寄存器写整型、字符型、状态字、浮点型(写n个word)–把具体的二进制值装入一串连续的保持寄存器4x

01 / 02 / 03 / 04 / 05 / 06等功能码的请求报文一定是8个字节
所有带CRC的完整报文再次进行CRC的结果一定是0000

数据类型

存储值占用寄存器类型名称数据范围解析结果解析原理
AE414010816位无符号整数0 - 655354460916进制转10进制
AE414010816位有符号整数-32768 到 32767-20927最高位是0,则直接等于无符号;最高位是1,取补码
AE4140108ASCII字符串RA扩展ASCII字符表 ISO-8859-1标准
AE41 565240108 4010932无符号整数0 - 4294967295292351752216进制转10进制
AE41 565240108 40109双精度浮点数-4.395978E-11浮点数的存储机制为(-1)^s * M * (2^E)

Modbus CRC校验计算

  1. 预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器;
  2. 把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器;
  3. 把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位;
  4. 如果最低位为0:重复第3步(再次移位);如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
  5. 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
  6. 重复步骤2到步骤5,进行下一个8位数据的处理;
  7. 最后得到的CRC寄存器即为CRC码。

CRC几余码在线计算网址:http://www.ip33.com/crc.html

Modbus RTU举例(读位)

发送:(02) (01) (00 00) (00 03) (7C 38)

主站告诉从站02,我要读取的位地址偏移为0、1、2的状态。其中 “01” 是读位的功能码,“00 00” 是位寄存器的起始地址,“00 03” 说明要连续读三个位寄存器的值。“7C 38” 代表最后的校验位。

接收:(02) (01) (01) (05) (91 CF)

从站回复:“02 01” 是复制了主站发来的地址和功能码,“01” 代表接下来的数据共有1个字节(8个位)。该字节寄存器地址值为05,转二进制 “0101” (即位寄存器0的值为1,位寄存器1的值为0,位寄存器2的值为1)。“91 CF” 代表最后的校验位。

Modbus RTU举例(读字)

发送:(09) (03) (00 04) (00) (03) 45 42

主站告诉从站09,我要读取的地址偏移为4、5、6的Holding Register的数值。其中"03"是读Holding Register的功能码,“00 04” 是字寄存器的起始地址,“00 03” 说明要连续读三个字寄存器的值,"45 42"代表最后的校验位。

接收:(09) (03) (06) (02 2B) (00 01) (00 64) 33 7A

其中"09 03"是复制了主站发来的地址和功能码,"06"代表接下来的数据共有6个字节。其中地址偏移为4的寄存器值为02 2B,地址偏移为5的寄存器值为00 01,地址偏移为6的寄存器值为00 64。33 7A"代表最后的校验位。

1.Modbus 协议报文(两个帧)间隔需要大于3.5个字符计算:

有校验位

1个字符 = 1(起始位)+ 8(数据位)+ 1(奇偶校验位)+ 1(停止位)= 11位
3.5个字符 = 3.5 * 11 = 38.5位
如果波特率 = 9600bps,则3.5个字符间隔时间为38.5 / 9.6 = 4.0104167ms;
字节间间隔时间 = 1.5 * 字符间隔时间 = 2.6042ms

无校验位

1个字符 = 1(起始位)+ 8(数据位)+ 0(无校验位)+ 1(停止位)= 10位
3.5个字符 = 3.5 * 10 = 35位
如果波特率 = 9600bps,则3.5个字符间隔时间为 36 / 9.6 = 3.6458ms

2.通常可以将传输45位的时间四舍五入后作为报文时间间隔

如果波特率 = 9600bps,则45位传输时间为 45 / 9.6 = 4.6875ms

Modbus TCP协议应用

TCP数据帧

ModbusTCP的数据帧可分为两部分:MBAP + PDU(报文头 + 帧结构)
在这里插入图片描述
MBAP为报文头,长度为7字节,由事务处理标识 + 协议标识符 + 长度 + 单元标识符 组成

内容长度解释
00 002字节可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文
00 002字节00 00表示ModbusTCP协议
00 062字节表示接下来的数据长度,单位为字节
011字节可以理解为设备地址。以上七个字节也被称为Modbus报文头

PDU(协议数据单元)由功能码 + 数据组成。功能码为1字节,数据长度不定,由具体功能决定。

Modbus TCP报文

读输出线圈(01功能码)

事务处理标识协议标识长度单元标识功能码起始地址数据长度
发送报文2字节2字节2字节1字节1字节
示例:00 0000 0000 06010100 1300 10
事务处理标识协议标识长度单元标识功能码起始地址数据长度
返回报文2字节2字节2字节1字节1字节
示例:00 0000 0000 050101023C 25

读输入线圈(02功能码)

事务处理标识协议标识长度单元标识功能码起始地址数据长度
发送报文2字节2字节2字节1字节1字节
示例:00 0000 0000 06010200 1300 10
事务处理标识协议标识长度单元标识功能码起始地址数据长度
返回报文2字节2字节2字节1字节1字节
示例:00 0000 0000 050102023C 25

读保持寄存器(03功能码)

事务处理标识协议标识长度单元标识功能码起始地址数据长度
发送报文2字节2字节2字节1字节1字节
示例:00 0000 0000 06010300 1300 02
事务处理标识协议标识长度单元标识功能码起始地址数据长度
返回报文2字节2字节2字节1字节1字节
示例:00 0000 0000 070103042D 12 03 19

读输入寄存器(04功能码)

事务处理标识协议标识长度单元标识功能码起始地址数据长度
发送报文2字节2字节2字节1字节1字节
示例:00 0000 0000 06010400 1300 02
事务处理标识协议标识长度单元标识功能码起始地址数据长度
返回报文2字节2字节2字节1字节1字节
示例:00 0000 0000 070104042D 12 03 19

写单个线圈(05功能码)

事务处理标识协议标识长度单元标识功能码起始地址数据长度
发送报文2字节2字节2字节1字节1字节
示例:00 0000 0000 06010500 0AFF 00

其中:通断标识为 FF00,标识线圈置ON;0000表示线圈置OFF。

返回报文:原文返回

写单个寄存器(06功能码)

事务处理标识协议标识长度单元标识功能码起始地址数据长度
发送报文2字节2字节2字节1字节1字节
示例:00 0000 0000 06010600 0A00 2C

返回报文:原文返回

写多个线圈(0F功能码)

事务处理标识协议标识长度单元标识功能码起始地址线圈数量字节计数写入值
发送报文2字节2字节2字节1字节1字节2字节2字节1字节2字节
示例:00 0000 0000 09010F00 0A00 10021C A0
事务处理标识协议标识长度单元标识功能码起始地址线圈数量
返回报文2字节2字节2字节1字节1字节2字节2字节
示例:00 0000 0000 09010F00 0A00 10

写多个寄存器(10功能码)

事务处理标识协议标识长度单元标识功能码起始地址数量字节计数写入值
发送报文2字节2字节2字节1字节1字节2字节2字节1字节2字节
示例:00 0000 0000 0B011000 1C00 02041C A0 20 41
事务处理标识协议标识长度单元标识功能码起始地址数量
返回报文2字节2字节2字节1字节1字节2字节2字节
示例:00 0000 0000 06011000 1C00 02

ADS

ADS简介

  • ADS即(Automation Device Specification)自动化设备规范。
  • TwinCAT系统各模块均作为独立的设备
  • 每个任务均存在一个服务模块,服务端或客户端
  • 由Message Router统一交换数据

在这里插入图片描述

ADS支持多种协议

  • 应用程序间TCP/IP通讯
  • 基于Web的HTTP通讯
  • 通过其他第三方协议(串口等)

在这里插入图片描述

ADS通讯原理

ADS设备唯一标识

  • AdsAmsNetId(NetId):用于确定设备硬件
  • AdsPortNr(AdsPort):用于确定软件服务

通讯端口 48898

  • 基于TCP/IP协议
  • TwinCAT ADS Router(ADS Server)监听端口 48898用于等待新的客户端

数据包格式
在这里插入图片描述

数据包大小描述
AMS/TCP Header6 bytes包含了ADS Data的长度。
AMS Header32 bytes此处包含了通讯的发送发和接收方地址,以及ADS错误代码、ADS命令代码和其他一些信息。
ADS Datan bytes此处包含了一个ADS命令的参数。参数的数据结构由ADS命令所决定,一些ADS命令也可以没有附加的数据。

AdsNetId组成

格式:xxx.xxx.xxx.xxx.xxx.xxx
例如:192.168.131.67.1.1
AdsNetId作为TCP/IP地址的扩展

注意:AdsNetId不是在IP地址后加 .1.1

AdsNetId构成

  1. 安装完TwinCAT,第一次启动时的IP地址加 .1.1;NetId在任何时候都不会自动改变。
  2. 部分BC9000,BCXXXX控制器在当前的IP地址后加 .1.1

USS

USS协议

SIEMENS自己为PLC与驱动(变频器)定义的协议。

USS协议是一个 Master/Slave 架构的协议,适用于通讯效率不高,数据量不大。

  1. 即仅一设备(主设备)能初始化传输(查询),其他设备(从设备)根据主设备查询提供的数据做出相应反应;理论上最多支持31台从设备。
  2. 主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。
  3. 报文简单,报文数据长度可自由定义。
  4. 在从站端区分:部分数据PZD区支持实时通讯,所有数据PKW后台缓慢处理。
  5. USS协议与自由口协议只能任选一种。

设定从站变频器的通讯相关参数,保存后断电重启

P0010用于对参数进行过滤,从而可以只选择与特定功能相关的部分参数
P0970设置 P0970 = 21,所有参数以及用户默认设置复位至出厂状态
P0003设置 P0003 = 3,用户访问等级为专家等级
P0700设置 P0700 = 5,即控制源来自 RS 485上的 USS 通信
P1000设置 P1000 = 5,即设定源来自 RS 485上的 USS 通信
P2023设置 P2023 = 1,RS 485 协议选择为 USS
P2010[0]设置 RS485 上的 USS 通信速率。与PLC端设置一样
P2011设置 P2011[0] = 1至31,即从站地址
P2012设置 P2012[0] = 2,即 PZD 区长度为2个字长 (适配PLC库指令)
P2013设置 P2013[0] = 127,即 PKW区的长度可变 (适配PLC库指令)
P2014设置 P2014[0] = 0至65535,检查主站断线超时时间
P0971设置 P0970 = 1,所有参数掉电保存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/479885.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0到1:企业官网小程序开发笔记(一)

可行性研究 企业公司官网小程序 ,旨在为企业建立一个在线的官方网站,并提供公司的信息、产品、服务和联系方式等。它扩展了传统企业官网的功能,使用户能够通过微信小程序的便利性和互动性,方便用户随时随地获取企业信息&#xff…

ShardingSphere啦啦啦

N年前写的ShardingSphere部分(上)_sharding 分库不能sum-CSDN博客 https://shardingsphere.apache.org/document/current/en/quick-start/ 高性能架构模式: 读写分离:读写操作分散到不同的节点上 (这句话 我悟了) 据SQL语义分…

Elsevier(爱思唯尔)如何查询特刊special issue

1. 以Knowledge-Based Systems为例 网站:https://www.sciencedirect.com/journal/knowledge-based-systems 2.具体位置

网络工程师练习题6

网络工程师 综合题 计算并填写下表: TP地址191.23.181.13子网掩码255.255.192.0地址类型 (1)网络地址(2)直接广播地址(3)主机号(4)子网内的最后一个可用IP地址&#xf…

OrangeDAO联合创始人Don Ho确认出席Hack.Summit() 2024区块链开发者大会

随着Web3技术的快速发展,区块链领域备受关注的盛会——Hack.Summit() 2024 区块链开发者大会即将于 2024 年 4 月 9 日至 10 日在香港数码港隆重启幕。本次大会不仅是 Hack.Summit() 系列在亚洲的首次亮相,更象征着全球区块链行业对亚洲,尤其…

基于SpringBoot的网上订餐系统(含源文件)

(源码附文章底部) 摘 要 随着我国经济的飞速发展,人们的生活速度明显加快,在餐厅吃饭排队的情况到处可见,近年来由于新兴IT行业的空前发展,它与传统餐饮行业也进行了新旧的结合,很多餐饮商户开始…

2024年了,为何 Selenium 依然这么火?

今天给大家带来的主题是自动化测试框架Selenium,话不多说,直接开始! 1.什么是 Selenium 自动化测试 Jason Huggins 于 2004 年创建了一个 JavaScript 框架,旨在将其从重复的手动测试中解放出来。 最初命名为 JavaScriptTestRunn…

2001-2023年中国各省市级是否属于“开通高铁”城市匹配数据

2001-2023年中国各省市级是否属于“开通高铁”城市匹配数据 1、时间:2001-2023年 2、范围:300个地级市(包括直辖市) 3、来源:历年中国铁道出版社出版的《全国铁路旅客列车时刻表》 4、用途:高铁开通可作…

C++初阶:2_类与对象(中)

类与对象(中) 一.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现&am…

Linux系统------------MySQL事务

目录 一、MySQL事务的概念 二、事务的ACID特点 ●原子性 ●一致性 ●隔离性 ●持久性 事务之间的相互影响有以下几种: ①脏读 ②不可重复读 ③幻读 ④丢失更新 三、Mysql及事务隔离级别 3.1Mysql及事务隔离级别 (1)read…

双点双向路由引入实验

双点双向路由引入实验 1、OSPF和ISIS路由协议的优先级分别是什么:OSPF:10,150,ISIS:15,15 2、加表原则:当不同的路由协议学习到相同的目的网络,比较优先级,优先级数值小…

设计模式—观察者模式与发布订阅

观察者设计模式 观察者设计模式(Observer Design Pattern)是一种常用的软件设计模式,它是一种行为型模式。该模式用于定义对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知…

OceanPen Art AI绘画系统 运营教程(二)AI视频AI创作PPT

在一个崇高的目标支持下,不停地工作,即使慢,也一定会获得成功。 —— 爱因斯坦 演示站点: ai.oceanpen.art 官方论坛: www.jingyuai.com 登陆后台 ppt密匙设置 导航菜单配置 Key池管理 二、前端显示 体验站点…

python食品安全信息管理系统flask-django-nodejs-php

。 食品安全信息管理系统是在安卓操作系统下的应用平台。为防止出现兼容性及稳定性问题,编辑器选择的是Hbuildex,安卓APP与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进食品安全信…

2024年【化工自动化控制仪表】考试试卷及化工自动化控制仪表模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 化工自动化控制仪表考试试卷是安全生产模拟考试一点通总题库中生成的一套化工自动化控制仪表模拟考试题,安全生产模拟考试一点通上化工自动化控制仪表作业手机同步练习。2024年【化工自动化控制仪表】考试…

阿里云2核4G服务器租用价格和性能测评

阿里云2核4G服务器租用优惠价格,轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图: 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

Machine Vision Technology:Lecture8 Segmentation

Machine Vision Technology:Lecture8 Segmentation the goals of segmentationInspiration from psychologySegmentation as clusteringK-Means for segmentationMean shift clustering and segmentation均值偏移聚类和分割Segmentation by graph partitioningSegme…

一下想要邮寄很多快递,该怎么邮寄呢?

我们都知道淘宝网上开店的经常会邮寄很多快递,但是这么多快递不可能一下子拿到快递驿站去邮寄吧,但是快递员又不上门取件可怎么办呀,这可真是让人伤透了脑筋了, 我们都知道我们所在的区域一般都会有快递员来承揽我们所在区域的快递…

Penpad的Season 2 规则解读,其生态资产 $PDD LaunchPad 在即

Penpad 是 Scroll 上的 LauncPad 平台,该平台继承了 Scroll 底层的技术优势,并基于零知识证明技术,推出了系列功能包括账户抽象化、灵活的挖矿功能,并将在未来实现合规为 RWA 等资产登录 Scroll 生态构建基础。该平台被认为是绝大…

SCI一区 | Matlab实现PSO-TCN-BiGRU-Attention粒子群算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现PSO-TCN-BiGRU-Attention粒子群算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现PSO-TCN-BiGRU-Attention粒子群算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述…