一个最简单的工业通讯数据分析例子

1.背景

        对工业设备的通讯协议进行分析可以帮助我们更好地理解其工作原理和相关技术,并且有助于以下几个方面:

1. 优化工业设备的通讯效率:了解通讯协议的细节可以帮助我们找到通讯效率低下的原因并进行优化,提高设备的通讯效率和运行效率。

2. 诊断通讯问题:通讯协议分析可以帮助我们定位和解决通讯问题,比如通讯故障、通讯协议不兼容等。

3. 实现设备之间的通讯:在工业自动化中,不同设备之间需要通讯来实现数据传输和控制,了解通讯协议是实现设备之间通讯的基础。

4. 提高设备的安全性:通讯协议的安全性是保障工业设备安全的重要因素之一。通过对通讯协议进行分析,可以识别通讯中的安全漏洞,防止设备遭到攻击或数据泄漏等安全问题。

2.通讯控制协议分析

本文介绍通讯协议的定义,获取和解析过程。

1. 原始数据捕获-抓包工具

1.串口

CEIWEI CommMonitor 串口监控精灵v12.7-CEIWEI Software|CommMonitor串口监控|Serial port Filter|Serial port monitor|USB Monitor|USB Filter

2.网口

Wireshark · Download

2. 实时数据读取指令识别

通过串口或网络抓包,确定软件通过什么指令触发下位机回复实时的状态数据,通常是轮询+定时查询的方式出现这类的数据包。

实时数据解析范例:

数据解析格式:小端(低字节在前。01 02代表 0x0201)

响应内容数据部份:数据包的第三字节开始前两个字节为固定的01 02

地址(从0开始)

长度

类型

描述

说明

0~1

2

整数

温度2(实际值)

2~3

2

整数

温度1(设定值)

4~5

2

整数

风机1(实际值)

min

6~7

2

整数

风机1(设定值)

min

3. 过程控制指令识别

打开抓包软件,操作软件的启动、停止、跳步、下载工艺等操作,记录并分析数据流,得出控制指令的协议。

运行、暂停、停止,跳步命令范例:

原始数据:

36 00 00 00 00 0B 00 00 05 F6 B4  

36 00 00 00 00 0B 00 00 06 37 74

35 00 00 00 00 0C 00 00 07 01 B2 79  跳步01

36 00 00 00 00 0B 00 00 11 B7 79

命令格式:

5Byte

2Byte

1Byte

1Byte

1Byte

2Byte

机台地址

数据总长

固定00

命令码

仅跳步有,其他无此字节

CRC-16/MODBUS校验码

命令码:

命令码

命令定义

0x01

查询实时状态

0x02

运行

0x03

停止

0x05

跳步

0x07

上锁

0x08

解锁

0x09

查询运行信息

0x11

暂停

0x0B

下发文件

命令回复:

与00命令回复一致,使用相同的解析方式

4.编码测试验证协议

通过快速编码的语言,例如python,将相应的指令发送关联到按钮上,实现相关功能的测试

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

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

相关文章

Axioss笔记

一、Get请求 // 请求头携带参数,案例:?uid1001 axios.get(http://localhost:8080/user/api/v1/user/query, {params: {uid: 1001}}).then(res > {console.log(res.data) }).catch(err > {console.log("请求错误" err) }).finally(() …

MySQL 8 配置文件详解与最佳实践

MySQL 8 是一款强大的关系型数据库管理系统,通过适当的配置文件设置,可以充分发挥其性能潜力。在这篇博客中,我们将深入探究 MySQL 8 常用的配置文件,并提供一些建议,帮助您优化数据库性能。 配置文件概览 在 MySQL …

【华为OD题库-030】阿里巴巴找黄金宝箱(V)-java

题目 一贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0-N的箱子&#xff0c;每个箱子上面贴有一个数字.阿里巴巴念出一个咒语数字k(k<N),找出连续k个宝箱数字和的最大值&#xff0c;并输出该最大值。 输入描述 第…

拦截器的使用

拦截器&#xff08;Interceptor&#xff09;是一种在应用程序中用于干预、修改或拦截请求和响应的组件&#xff0c;是AOP 编程的一种实践&#xff0c;和过滤器一样都是一种具体的AOP实现。它可以在请求被发送到目标处理程序之前或之后&#xff0c;对请求进行预处理或对响应进行…

【数据结构】二叉树概念 | 满二叉树 | 完全二叉树

二叉树的概念 二叉树在实践中用的很多。 一棵二叉树是结点的一个有限集合&#xff0c;该集合&#xff1a; 或者为空&#xff1b;由一个根结点加上两棵别称为左子树和右子树的二叉树组成。二叉树最多两个孩子。 这里注意&#xff1a;二叉树并不是度为2的树。 二叉树的度最大值是…

Go lumberjack 日志轮换和管理

在开发应用程序时&#xff0c;记录日志是一项关键的任务&#xff0c;以便在应用程序运行时追踪问题、监视性能和保留审计记录。Go 语言提供了灵活且强大的日志记录功能&#xff0c;可以通过多种方式配置和使用。其中一个常用的日志记录库是 github.com/natefinch/lumberjack&am…

python selenium 模拟浏览器自动操作抢购脚本

每逢秒杀&#xff0c;都在遗憾网速和手速慢没能抢购到商品吧。 手写一个脚本&#xff0c;让程序帮你抢&#xff0c;抢到的概率会大大提升。 废话不多说&#xff0c;直接上代码。 本实例以华为官网抢购手机为例 """ 模拟浏览器操作华为官网(1) 【只需要安装一…

【JAVA】我们该如何规避代码中可能出现的错误?(二)

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言异常方法&#xff08;Throwable类&#xff09;Throwable类的方法 捕获异常多重捕获块 前言 异常是程序中的一些错误&#xff0c;但并不是所有的错误都是异常&#xff0c;并…

git-3

1.如何让工作区的文件恢复为和暂存区一样&#xff1f; 工作区所作的变更还不及暂存区的变更好&#xff0c;想从暂存区拷贝到工作区&#xff0c;变更工作区(恢复成和暂存区一样的状态)&#xff0c;想到用git checkout -- 文件名 2.怎样取消暂存区部分文件的更改&#xff1f; 如…

无损压缩技巧:减小PDF文件尺寸的有效方法

我们在制作pdf文档的时候&#xff0c;会加入许多内容&#xff0c;文字、图片等等&#xff0c;素材添加的过多之后就会导致pdf文档特别大&#xff0c;在上传或者储存时&#xff0c;就会特别不方便&#xff0c;所以今天就告诉大家一个pdf压缩的方法&#xff0c;使用pdf在线压缩工…

4-Docker命令之docker info

后续为大家逐个讲解一下docker常用命令及其相关用法。docker常用命令查看如下: [root@centos79 ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec…

洛谷 P1883 函数

P1883 函数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Error Curves - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这两题是一模一样的&#xff0c;过一题水两题。 分析 主要难点在于证明F(x)是一个单峰函数可以被三分&#xff0c;但是我随便画了几个f(x)之后发现好像…

MySQL的Redo Log跟Binlog

文章目录 概要Redo Log日志Redo Log的作用Redo Log的写入机制 Binlog日志Binlog的作用Binlog写入机制 两段提交 概要 Redo Log和Binlog是MySQL日志系统中非常重要的两种机制&#xff0c;也有很多相似之处&#xff0c;本文主要介绍两者细节和区别。 Redo Log日志 Redo Log的作…

Docker+ Jenkins+Maven+git自动化部署

环境&#xff1a;Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 准备工作&#xff1a; 安装Docker Centos7默认的yum安装的docker是1.13&#xff0c;版本太低&#xff0c;很多镜像都要Docker版本要求&#xff0c;升级Docker版本。 卸载已安装Docker: yum …

你知道如何实现游戏中的透视效果吗?

引言 游戏中的透视效果可以合理运用CtrlCV实现。 不知道大家有没有这样一段经历&#xff1a;在做Cocos项目时需要一些特定的Shader去做一些特定的效果&#xff0c;例如透视、高光、滤镜等等&#xff0c;想自己写吧&#xff0c;不怎么会啊&#xff0c;网上又找不到&#xff0c…

27 - 如何使用设计模式优化并发编程?

在我们使用多线程编程时&#xff0c;很多时候需要根据业务场景设计一套业务功能。其实&#xff0c;在多线程编程中&#xff0c;本身就存在很多成熟的功能设计模式&#xff0c;学好它们&#xff0c;用好它们&#xff0c;那就是如虎添翼了。今天我就带你了解几种并发编程中常用的…

redis-cluster集群(目的:高可用)

1、特点 集群由多个node节点组成&#xff0c;redis数据分布在这些节点中&#xff0c;在集群中分为主节点和从节点&#xff0c;一个主对应一个从&#xff0c;所有组的主从形成一个集群&#xff0c;每组的数据是独立的&#xff0c;并且集群自带哨兵模式 2、工作原理 集群模式中…

【ZedBoard学习实例1】 VGA显示彩条

ZedBoard学习实例1 VGA显示彩条 ZedBoard学习实例1 VGA显示彩条参考文章改进 ZedBoard学习实例1 VGA显示彩条 参考文章 彩条控制verilog代码 主体参考了该文章的代码&#xff0c;文中还介绍了相关的电路图&#xff0c;还有ZedBoard的手册内容。19201080分辨率显示器的参数 针…

重生之我是一名程序员 37 ——C语言中的栈溢出问题

哈喽啊大家晚上好&#xff01; 今天呢给大家带来一个烧脑的知识——C语言中的栈溢出问题。那什么是栈溢出呢&#xff1f;栈溢出指的是当程序在执行函数调用时&#xff0c;为了保护函数的局部变量和返回地址&#xff0c;将这些数据存储在栈中。如果函数在函数调用时使用了过多的…

Sentinel核心类解读:Entry

默认情况下&#xff0c;Sentinel会将controller中的方法作为被保护资源&#xff0c;Sentinel中的资源用Entry来表示。 Sentinel中Entry可以理解为每次进入资源的一个凭证&#xff0c;如果调用SphO.entry()或者SphU.entry()能获取Entry对象&#xff0c;代表获取了凭证&#xff…