PLC常用通信协议应用

news2024/12/26 21:52:18

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,所有参数掉电保存

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring IOC 容器的加载过程(bean 的创建过程)

Spring IOC 容器的加载过程(bean 的创建过程) 配置Bean 通过xml或者是Component Bean 等进行配置 解析Bean,得到BeanDefinition定义对象 通过 BeanDefintionReader 将 bean 进行解析,准备要创建的bean对象的定义对象BeanDefinition,存放到Be…

Elasticsearch 索引模板、生命周期策略、节点角色

简介 索引模板可以帮助简化创建和二次配置索引的过程,让我们更高效地管理索引的配置和映射。 索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热(hot)、温(warm)和冷(cold)数…

尽可能使用清晰、统一的方式初始化所有对象:列表初始化。【C++】

不管是为了统一性,还是避免发生窄化转换,尽可能使用初始化列表。 说明哪些对象可以使用列表初始化?代码演示 说明 C11 引入了列表初始化(也称为统一初始化或初始化列表),它是一种使用花括号 {} 来初始化对…

对象实例化在bean注入之前导致@Autowired失效

开发时遇到一个问题,Springboot的Autowired失效,无法注入bean,获取的到的mqttProperties一直为空。 MqttProperties定义: 业务代码: 按理来说,我的MqttProperties和当前类 NettyMqttClient都注册为了bea…

铁道障碍物检测6种YOLOV8

铁道障碍物检测6种,采用YOLOV8训练,得到PT模型,然后转换成ONNX模型,OPENCV调用 铁道障碍物检测6种YOLOV8

YOLOv8 | 注意力机制 | 添加ECA注意力机制

目录 原理简介 代码实现 yaml文件实现 检查是否添加执行成功

教大家几种解决msvcr120.dll文件丢失的问题以及解决办法

当这个msvcr120.dll文件丢失或损坏时,依赖它的程序可能无法启动或正常运行,这可能影响电脑的使用效率。如果用户遇到因缺少msvcr120.dll而导致的程序错误,安装或修复这个msvcr120.dll文件是一种维护措施,可以帮助恢复软件的正常功…

【python从入门到精通】--第一战:安装python

🌈 个人主页:白子寰 🔥 分类专栏:python从入门到精通,魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文…

餐饮连锁食品安全标准落实难?悠络客AI巡检,用SOP AI化守护“舌尖上的安全”

食品安全与卫生问题一直是全民关注的焦点,从民生角度,民以食为天,食品安全关系到消费者的身体健康和生命安全;从企业角度,品牌建设不易,一旦出现食品卫生安全问题,不仅会带来直接经济损失&#…

Web实战:采用JSP+ Servlet + DB实现用户登录功能

文章目录 一、项目运行效果二、项目实现步骤三、项目实战总结 一、项目运行效果 二、项目实现步骤 三、项目实战总结 本实战项目采用了JSP Servlet DB的组合,搭建了一个简单的用户登录功能。通过创建数据库、用户表、Jakarta EE项目,以及编写用户实体类…

慧天【HTWATER】软件是什么?在城市内涝水文水动力耦合模拟中如何应用小李15833332534

慧天[HTWATER]软件简介 针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行地表水文、管网水力、水质过程的模拟计算。可以对城市低影响开发…

Linux命令学习入门

文章目录 登录注销关机重启Vim编辑器快捷键文件目录类打包、解包、压缩和解压指令输出重定向>和追加>>指令时间日期类搜索查找类用户管理文件所有者所在组权限管理变更权限crond任务时间调度crond相关指令:特殊符号说明: at定时任务磁盘分区磁盘…

力扣HOT100 - 1. 两数之和

解题思路&#xff1a; 解法一&#xff1a;暴力 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i)for (int j i 1; j < n; j) {if (target nums[i] nums[j])return new int[] { i, j };}return new int[…

复盘一下我用过的设计模式

建造者模式 保卫萝卜中使用了建造者模式。UML图如下&#xff1a; 接口&#xff1a; public interface IBuilder<T> {//获取到游戏物体身上的脚本对象&#xff0c;从而去赋值T GetProductorClass(GameObject gameObject);//使用工厂去获取具体的游戏对象GameObject GetP…

探索生成式AI Agent,让公众自动化触手可及

在科技浪潮的推动下&#xff0c;AI Agent市场正经历深刻变革。Kognitos智能RPA厂商凭借675万美元融资和生成式AI自动化的定位&#xff0c;吸引业界关注。然而&#xff0c;微软早已将ChatGPT融入Power Platform&#xff0c;提供低代码应用开发体验&#xff0c;引领市场。初创公司…

聚类算法之高斯混合模型聚类 (Gaussian Mixture Model, GMM)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 高斯混合模型&#xff08;GMM&#xff09;是统计模型中的一颗璀璨之星&#xff0c;它为数据提供了一种复杂而又强大的表示方法。在机器学习的许多…

2024年云服务器ECS价格表出炉——腾讯云

腾讯云服务器多少钱一年&#xff1f;61元一年起。2024年最新腾讯云服务器优惠价格表&#xff0c;腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…

C语言之strchr用法实例(八十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

产品经理面试自我介绍,这3大错误千万别犯!

金三银四求职季&#xff0c;你是不是也有面试的冲动&#xff01;但面试并不是头脑一热就能取得好结果&#xff0c;在此之前&#xff0c;必须得有周全的准备&#xff0c;才能应对好面试官的“连环问”&#xff01; 所以&#xff0c;今天这篇产品经理面试干货分享给大家~ 今天文…

选择靠谱的su模型库免费下载,让你事半功倍!

在建筑设计、室内设计等领域&#xff0c;SU模型库的使用已经成为了一种趋势。选择一个靠谱的SU模型库进行免费下载&#xff0c;确实可以大大提高设计工作的效率。那么&#xff0c;如何选择一个靠谱的su模型库免费下载呢? 一、了解su模型库的基本功能 在选择su模型库时&#xf…