首页
关于
南通监控安装
Search
1
cloudflared service
41 阅读
2
海纳思常用命令
40 阅读
3
绕过WPS Office登录:轻松解锁所有功能的操作指南
19 阅读
4
一文讲透Modbus通信协议,以及RS485、SCI三者的区别
11 阅读
5
linux ubuntu 修改系统时间,时间同步
9 阅读
业务
见闻
随思
技术
登录
Search
剑星
累计撰写
34
篇文章
累计收到
1
条评论
首页
栏目
业务
见闻
随思
技术
页面
关于
南通监控安装
搜索到
28
篇与
技术
的结果
2025-08-23
OpenVPN客户端配置
1、下载Windows客户端:https://openvpn.net/community/2、将安装包拷贝到客户端中:3、配置客户端机器能上公网:4、双击安装OpenVPN客户端:5、安装过程:6、安装完毕:7、点击Close按钮后,显示没有找到可读取的连接配置文件。8、在OpenVPN服务器上,我们将客户端的模板配置文件拷贝到/root/目录下:[root@localhost openvpn]# cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/client.conf /root/9、将client.crt、client.key、ca.crt、ta.key文件拷贝到/root目录下:[root@localhost 3.0.8]# cp pki/issued/client.crt /root/[root@localhost 3.0.8]# cp pki/private/client.key /root/[root@localhost 3.0.8]# cp pki/ca.crt /root/[root@localhost 3.0.8]# cp ta.key /root/10、创建client目录,将五个文件都放到client目录下:[root@localhost ~]# cd client[root@localhost client]# lltotal 24-rw-------. 1 root root 1172 Jul 8 00:00 ca.crt-rw-r--r--. 1 root root 3609 Jul 7 23:56 client.conf-rw-------. 1 root root 4432 Jul 7 23:58 client.crt-rw-------. 1 root root 1704 Jul 7 23:58 client.key-rw-------. 1 root root 636 Jul 8 00:01 ta.key11、将client.conf目录改成client.ovpn文件:[root@localhost client]# mv client.conf client.ovpn[root@localhost client]# lltotal 24-rw-------. 1 root root 1172 Jul 8 00:00 ca.crt-rw-------. 1 root root 4432 Jul 7 23:58 client.crt-rw-------. 1 root root 1704 Jul 7 23:58 client.key-rw-r--r--. 1 root root 3609 Jul 7 23:56 client.ovpn-rw-------. 1 root root 636 Jul 8 00:01 ta.key12、使用zip命令将client目录打包成client.zip:[root@localhost ~]# zip -r client.zip client/ adding: client/ (stored 0%) adding: client/client.crt (deflated 45%) adding: client/client.key (deflated 23%) adding: client/ca.crt (deflated 27%) adding: client/ta.key (deflated 40%) adding: client/client.ovpn (deflated 54%)[root@localhost ~]#[root@localhost ~]# lltotal 12-rw-------. 1 root root 1581 Jul 7 16:01 anaconda-ks.cfgdrwxr-xr-x. 2 root root 89 Jul 8 00:44 client-rw-r--r--. 1 root root 7608 Jul 8 01:27 client.zip13、将client.zip文件拷贝到客户端中:14、将文件解压,统一放到桌面:15、然后拷贝放到config目录中:16、右键菜单中“选项”,在高级标签页中修改两个路径:17、确认虚拟网卡没有出现感叹号,不可用的情况。如果出现感叹号的情况,通过禁用驱动程序签名强制选项,可解决问题。18、直接点击“连接”选项:可以看到分配了10.1.0.6的IP地址。连接正常。上次我的部署是不成功的。这次我们还看到了图标变成了绿色,可见已成功。19、测试验证:使用ipconfig命令,看到10.1.0.6,说明已经成功了。通过route print命令查看路由表:192.168.0.0是目标网络255.255.255.0是子网掩码10.1.0.5是网关10.1.0.6是接口20、测试下连通性:我是把OpenVPN的IP地址改成了192.168.0.2。另外,我们也看到了10.1.0.1的这个IP地址,是tun0接口的IP地址。这个是server配置文件中的push段的配置,是VPN拨号的内网。21、ping通局域网内的服务器主机,它的IP地址是192.168.0.100:这时,我们可以看到并不能ping通内网服务器。我们可以ping到192.168.0.100,但是这台服务器是没有网关的:所以,它是没有办法把数据包返还给你的。那这个问题该如何解决呢?解决方法:方法1、给企业服务器添加网关;192.168.0.2但是常规情况下,企业服务器是不允许上网的,不能上网的。方法2、配置iptables的NAT功能;22、配置iptables:1)检查nat表的规则:[root@localhost ~]# iptables -t nat -LChain PREROUTING (policy ACCEPT)target prot opt source destinationChain INPUT (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destinationChain POSTROUTING (policy ACCEPT)target prot opt source destination2)网络地址转换:[root@localhost ~]# iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j MASQUERADE[root@localhost ~]#[root@localhost ~]# iptables -t nat -LChain PREROUTING (policy ACCEPT)target prot opt source destinationChain INPUT (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destinationChain POSTROUTING (policy ACCEPT)target prot opt source destinationMASQUERADE all -- 10.1.0.0/24 anywhere[root@localhost ~]#23、测试可以ping通内网服务器:然后,我们再测试下共享文件夹的功能:客户端可以正常访问到内网服务器。
2025年08月23日
4 阅读
0 评论
0 点赞
2025-08-21
Checkmate
现代运维人每天都在和各种系统、硬件打交道,最难受的莫过于宕机处理不及时和繁琐的信息监控。又不想用重型的Zabbix , 有没有更轻量的方案呢 ?Checkmate 作为一款开源、自托管的监控神器,精准解决了这些痛点!它不仅能实时追踪服务器的运行状态,还能通过可视化界面让运维变得清晰高效。不夸张地说,装上它后,晚上都能睡得更安心! Checkmate是什么Checkmate 是一款强大专业、却非常易用的开源工具,用于监控服务器的硬件状态、运行时间、响应速度以及各种异常情况。其特点是开源免费、功能全面且不占用资源。无论是大厂运维还是小团队管理,都能轻松应付!特别适合对多台服务器有监控需求的用户 核心功能亮点实时硬件监控: 通过精确采集服务器的 CPU 占用率、内存使用率、硬盘负载以及磁盘温度等关键数据,随时掌握硬件状态,提前预知异常,避免硬件突发故障造成损失。网站可用性检查: 定时检测网站或服务是否正常访问,一旦发现问题如宕机或连接超时,能够快速触发告警,帮助你第一时间恢复服务,减少业务损失。性能评估: 实时监控服务或接口的响应时间和吞吐量,帮助开发者和运维人员定位性能瓶颈,让网站或应用始终以最佳速度运行,提升用户体验。智能告警通知: 集成多渠道通知方式(如邮件、Slack、Telegram),确保在紧急故障发生时,系统能够迅速推送消息至相关负责人手中,避免错过重要问题。 直观可视化界面: 性能数据通过动态图表的形式清晰呈现,从复杂的数据信息中快速发现问题趋势,方便分析对策,大大提高运维效率和管理体验感。安装指南1.安装主框架拉取代码git clone https://github.com/bluewave-labs/Checkmate.git启动 Docker 环境cd Checkmatedocker-compose up -d2.登录界面打开浏览器,访问 http://localhost:8080。 默认账号:uptimedemo@demo.com 默认密码:Demouser1! 总的来说,Checkmate 不仅帮忙覆盖了现代运维中「监控不到」「响应不够快」「界面不友好」等多个痛点,还通过开源免费和插件化支持,让每个团队都能做到用得省心、扩展灵活。如果你需要一款让监控变轻松的优秀工具,那么 Checkmate 是超值得一试的选择!
2025年08月21日
5 阅读
0 评论
0 点赞
2025-08-15
绕过WPS Office登录:轻松解锁所有功能的操作指南
对于广大WPS Office用户来说,最近的版本更新带来了一项不太受欢迎的变化:必须登录账户才能完全使用软件。这项更改意味着,如果用户在首次启动软件时拒绝登录,几乎所有的顶部工具栏按钮都会变为不可用状态,显示为灰色。尽管简单的登录过程可以轻松解决这个问题,但许多用户对此感到不满,主要是因为隐私担忧和对强制登录措施的反感。幸运的是,有一些方法可以绕过这个限制,让用户无需登录即可使用WPS OffiCE的所有功能。以下是两种主流的解决方法,旨在帮助那些希望避免登录操作的用户。方法一:通过注册表编辑解除登录限制这种方法涉及到对Windows注册表的编辑,允许用户在不登录的情况下使用WPS Office:使用右键点击开始菜单,选择“运行”,输入regedit并确认,打开注册表编辑器。 按照路径\HKEY_CURRENT_USER\Software\kingsoft\Office\6.0\plugins\officespace\flogin定位到相应的注册表项。 在此路径下的空白区域,右键新建一个字符串值,命名为enableforceloginforfirstinstalldevice。 ———————————————— 双击新建的字符串值,在数值数据中输入false,然后确定。 完成以上步骤后,重新启动WPS Office,你会发现所有工具栏按钮都恢复了正常状态,无需登录即可正常使用。方法二:断网启动WPS Office如果你觉得第一种方法有些复杂,这里有一个更为简单的办法:完全关闭WPS Office,并断开电脑的网络连接。在断网的状态下重新打开WPS Office,并尝试点击“立即登录”按钮。当软件提示“加载失败,请重试”时,关闭提示框并选择稍后登录。这样做之后,之前因为登录限制而变灰的工具栏按钮会立即恢复正常。之后,即可重新连接网络,继续你的工作或学习活动。这种方法虽然简单,但有时重启电脑或重新联网后可能会失效。无论选择哪种方法,都能有效地解决WPS Office登录限制的问题,让用户享受到更为自由的文档编辑体验。对于那些依赖WPS Office进行日常办公和学习的用户来说,这些技巧无疑是极为有用的。
2025年08月15日
19 阅读
0 评论
0 点赞
2025-08-10
cloudflared service
安装 CF命令Add cloudflare gpg keysudo mkdir -p --mode=0755 /usr/share/keyringscurl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/nullAdd this repo to your apt repositoriesecho 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.listinstall cloudflaredsudo apt-get update && sudo apt-get install cloudflared更新CF命令1.Update the cloudflared package:sudo apt-get update && sudo apt-get upgrade cloudflared2.Restart the service:sudo systemctl restart cloudflared.service
2025年08月10日
41 阅读
0 评论
0 点赞
2025-07-29
linux ubuntu 修改系统时间,时间同步
Linux的时间分为系统时间和硬件时间。一般系统时间与硬件时间是不同步的。系统时间:指当前Linux Kernel(内核)中的时间.硬件时间:主板上有电池供电的时间。(命令hwclock,hardware clock)查看系统时间的命令: $ date一、修改系统时间的命令:$ sudo date -s两种方式:1、一次性修改时间与日期$ sudo date -s “月/日/年 10:15”2、分开修改日期: $ sudo date -s 月/日/年时间: $ sudo date -s 10:15最后,更新计算机硬件时间(将系统时间写入硬件时间)$ sudo hwclock -w普及:以系统时间为基础修改硬件时间:hwclock --systohc,hwclock -w;以硬件时间为基础修改系统时间:hwclock --hctosys、hwclock -s(引用,链接:https://www.cnblogs.com/wangrx/p/6188387.html)二、使时间与网络时间同步1、安装ntpdate使用apt-get下载:$ sudo apt-get install ntpdate使用aptitude下载:输入$ sudo aptitude,在界面内敲击/进行搜索下载即可2、修改时区1)运行tzselect2)选择Asia(亚洲)3)选择China4)然后选定北京时间,确认5)复制文件到本地时间内$ sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime(引用,详情可看链接:校正Ubuntu时间为北京时间_云焱浮华的博客-CSDN博客_ubuntu 校时3、设置系统时间与网络时间同步$ sudo ntpdate cn.pool.ntp.orghttp://cn.pool.ntp.org是位于中国的公共NTP服务器4、将系统时间写入硬件时间$ sudo hwclock --systohc 或$ sudo hwclock -w(转载:https://blog.csdn.net/qq_33733970/article/details/78823620)三、关闭时间网络同步$ timedatectl set-ntp false在弹出的对话框中输入密码即可(引用,链接:https://www.cnblogs.com/operationhome/p/9060998.html)修改完成后重启就可以了。切记!!修改时间后一定不要忘了hwclock命令!!!
2025年07月29日
9 阅读
0 评论
0 点赞
2025-07-25
一文讲透Modbus通信协议,以及RS485、SCI三者的区别
本文将简单梳理工业上嵌入式的常见的通信方式,并详细讲解Modbus RTU、RS485与SCI通信。1 通信是什么通信其实很简单,说白了就是设备与设备之间的交流,这个交流需要:1.传输媒介,可分为有线传输与无线传输,例如蓝牙、5G、WIFI等都是无线传输,有线传输例如USB等。这个概念比较简单,它是物理上的有无通信线。2.通信方式,其实就是设备与设备之间交流的规则,只有规则对应上了,才能实现正常的交流。【注】通信方式是如何确定的呢?我们可以举个例子,比如中国人和中国人说话,该说什么话呢?这个什么话就是规则。我们都知道可以选择中文,当然如果两个人英文都好,也可以选择外文。所以说,通信方式的确定,是要看具体的设备而言的,设备会说什么话?设备说的话安不安全?需不需要加密?设备和设备之间的距离有多远,说的话能不能顺利抵达?这都是通信方式要考虑的问题。2 通信方式2.1 通信方式的分类1.按照通信数据传输的行为分:串行通信和并行通信要知道,在二进制的世界里,所有数据传输的底层一定是0和1的传输。因此,在最底层,0和1究竟是如何传输的,这便是“bit”传输的行为。【串行通信】数据一位一位的按顺序传输,一次只发送一个0或者1。【并行通信】数据各个位同时传输,一次可发送多个0或者1。串行通信的优点是占用的引脚资源少,但速度相对较慢,而并行通信的速快,但相对于串行通信占用的引脚资源多。2.按照通信数据的同步方式分:同步通信和异步通信【同步通信】通信时会引入一条时钟线,对于参与通信的设备而言,时钟线都是一致的,我只要提前约定好,在什么情况下的数据是有效的,就可以了。举个例子:在I2C通信中,我们规定在时钟线(SCL)为高电平时,数据线的一个下降沿表示一个I2C的START条件(开始信号),这部分在以EEPROM为例,详解I2C通信协议中有详细介绍。【异步通信】异步通信不存在时钟线,这样就需要约定好更多的条件去传输数据,方法是对数据线上的数据信号进行处理,例如参与通信的设备同时约定好数据的传输速率、数据具备起始位、数据为、奇偶校验位、停止位等等。我们一般用波特率(bps),也就是每秒能传输多少个bit,作为衡量数据传送速率的指标。3.按照数据传输的方向分:单工、半双工、双工通信【单工通信】设备只能固定一个方向传输,参与通信的设备要么只能发数据,要么只能接收数据。【半双工通信】设备可以双向传输,但在同一段时间内,要么发送数据,要么接受数据。【全双工通信】设备可以双向传输,在同一段时间内,可以同时发送数据或传输数据。实现全双工通信的方式有很多,典型的是增加数据线路,比如从单个数据线拓展到两条数据线,一条用于发送,一条用于接收。如果不增加数据线路,可以采用在同一条数据线上发送不同频率的信号,再进行滤波,从而实现信号的同时传输。2.2 分清通信接口与通信协议通信方式是一个宏观的概念,通过上面的分类我们可以看到,有很多数据传输的细节还需要去确定。由于通信的广泛应用,以及其实现方式的繁杂,在实际中我们会听到好多的通信协议,诸如SCI协议,485协议,232协议,I2C协议,SPI协议,Modbus协议,Modbus RTU协议,Modbus TCP协议等。但是这些协议真的是协议吗?当然,由于中华文字的博大精深,协议本身二字可以是一个广泛的概念。通信协议可以指代很多东西,但是这会误导我们,在众多的信息流中,我们自己要分清本质,什么是通信接口,什么是通信协议?【通信接口】通信接口是通信设备之间的接口,它指的其实是物理层面上的,通信接口一般会规定逻辑电平,即什么样的信号算是1,什么样的信号算是0;还会规定通信线的根数,比如0根是无线传输,大于0根是有线传输;还会规定通信线的最大通信距离、通信线的要求等,都是针对于物理上。【通信协议】通信协议其实指的是数据传输的规则,专注于数据的结构,数据传输的速度等,都是针对于bit位的传输上。2.3 通信接口通信接口种类有很多,例如DP接口、HDMI接口,工业上常用的RS232接口、RS485接口、以太网接口、USB接口等。本文我们主要对RS485接口进行详解。RS485接口也会被成为RS485标准,其中RS指的是Recommended Standard。·所属分类:串行通信、异步通信、半双工通信。·线路数量:2条,一条用于发送,一条用于接收,使用双绞线,一根定义为A,一根定义为B。·逻辑定义:两根信号之间的电平差(差分信号):逻辑1:+2V to +6V;逻辑0:-6V to -2V【拓展】差分信号的优势:差分信号是两个电位差,假设两条线上同时受到了干扰,那么做差时将会将干扰信号也减去。因此差分信号的抗干扰能力强。·支持设备:支持一主机,多从机。2.4 通信协议通信协议是五花八门的,通信协议本质上是参与通信设备的约定和规则,这个规则是五花八门的,由于设备是多种多样的,想实现的功能也是多种多样的,同样为了不混乱,我将通信协议分为基于bit位的通信协议和基于数据的通信协议。先进行如下定义。【bit位】bit位只有1位,要么是1要么是0.【数据】要传输的一组bit位,例如我要传输十进制的2,那么我用bit传输的时候就是10,是一组由1和0组成的两个bit的数据。2.4.1 基于Bit位的通信协议——SCI通信协议在SCI通信中,数据线空闲时为“逻辑1”,即高电平。SCI通信的基本格式:【空闲线模式】1位起始位+1-8位数据位+1个奇偶校验位+1位或者2位停止位+附加位或【地址位模式】1位起始位+1-8位数据位+1个奇偶校验位+1位地址位+1位或者2位停止位+附加位如图1所示。图1 SCI典型数据格式图1中,Start为起始信号,可以看SCI对起始位的定义:当信号处于空闲状态时的一个低电平,即为起始信号。但在实际中,一定连续时间内的低电平表示有效的起始位,因此,在此我们不过多叙述实际硬件是如何判定为1或0的,而我们在进行编程的时候,硬件已经做好了这些处理,我们只需要懂得基本的通信结构。MSB和LSB码是数字电子领域中常用的两种比特表示方法,分别代表“Most Significant Bit”和“Least Significant Bit”,MSB定义着在多位数中的最高有效位,LSB:定义:多位数中的最低有效位。Addr/data表示的是地址位,仅在SCI通信配置为地址位模式时才有,在这种模式下,发送节点发送信息的第一个字节是一个地址字节,所有接收节都读取该地址字节。只有接收数据的地址字节与接收节点的地址字节相符合时,才能产生接收节点数据。如果接收节点的地址和接收数据的地址不符,接收节点将等待接收下一个地址。Parity指的就是奇偶校验,该奇偶指的包括数据位和校验位在内的这一串bit中“逻辑1”个数的奇偶。例如,若采用奇校验,则要保证这一串bit中“1”的总数为奇数;如果是偶校验,则要保证这一串bit中“1”的总数为偶数。例如,对于数据位“10011010”,若采用偶校验,校验位应为“0”,使得数据位和校验位中“1”的个数为偶数(4个);若采用奇校验,校验位则应为“1”,使得“1”的总数为奇数(5个)。Stop指的就是恢复到空闲线状态,若设置为1位停止位,则结构末尾仅包含1个“逻辑1”,若设置为2位停止位,则结构末尾包含2个“逻辑1”。我们把Start到Stop这段数据称作为“帧”。【例如】在空闲线模式下,我想给设备发送“6”这个数字,设置为1位停止位,那么它的数据格式该是怎么样的呢?首先将6转为二进制为110,一般我们设置数据长度为8位,因此实际上数据为0000 0110若采用偶校验,其奇偶校验位就应为0,若采用奇校验,其奇偶检验位就应为1。LSB是最低有效位为0,MSB是最高有效位为0。因此采用偶校验:【起始位】0+【数据位】01100000+【奇偶校验位】0+【停止位】1若是采用奇校验:【起始位】0+【数据位】01100000+【奇偶校验位】1+【停止位】1在地址位模式下,第一个字节发送的是地址,在这里我们假设要给设备地址为“217”的设备发送“6”这个数字,设置为2位停止位,那么它的数据格式该是怎么样的呢?我们将要发送两帧数据,第一帧为地址,第二帧为数据:我们先将地址217转为二进制:1000 1111,若采用偶校验,则这一帧数据的奇偶校验位为1,若采用奇校验,则这一帧数据的奇偶校验位为0。LSB为最低有效位为1,MSB为最高有效位为1。因此采用偶校验:第1帧:【起始位】0+【数据位】11110001+【奇偶校验位】1+【地址位】1+【停止位】11第2帧:【起始位】0+【数据位】01100000+【奇偶校验位】0+【地址位】0+【停止位】11若是采用奇校验:第1帧:【起始位】0+【数据位】11110001+【奇偶校验位】0+【地址位】1+【停止位】11第2帧:【起始位】0+【数据位】01100000+【奇偶校验位】1+【地址位】0+【停止位】11一定要好好体会这两个示例!2.4.2 基于数据的通信协议——Modbus协议在Modbus Poll的使用界面,我们点击Connection时,会出现图2所示界面。图2 Modbus Poll设置界面这是一个典型的设置界面,我们一般会采用Serial Port 串口通信,然后设置波特率、数据位长度、有无校验位、以及停止位,还有Advanced高级设置中的一些DSR、CTS、DTR等,我们在此不拓展,只讲解最基本功能。在右方我们可以看到在串口模式下有RTU和ASCII两种模式,RTU模式应用最广泛,掌握了RTU,自然而然就能看懂ASCII。1.Modbus-RTU通信结构RTU,全称Remote Terminal Unit,意为远程终端设备。它的通信结构:地址+功能码+数据+校验其中地址占用1个字节,这与设备的地址相对应,每个设备都具有一个唯一的地址,相当于“门牌号”。功能码占用1个字节,功能码就代表着我当前发送的数据的功能是干什么,比如说修改从机的数据,查询从机的数据等。常见的功能码定义有:0x01:读线圈状态;0x02:读离散输入状态;0x03:读保持寄存器;0x04:读输入寄存器;0x05:写单线圈;0x06:写单寄存器;0x07:读取异常状态······我们常用的功能码就是0x03与0x07,一个是读当前从设备的信息,一个是修改当前从设备的信息。数据占用的字节不定,主要依据功能码的定义来确定。校验占用2个字节,为循环冗余校验方式,主要是为了保证数据不出错。2.Modbus-RTU通信实例——读数据现在我们以具体的实例来进行讲解。【主机发送数据】比如现在我们想在从设备上读数据,那我们是肯定已知设备地址的,要注意,设备地址占用一个字节,一个字节是8bit,二进制表示范围为0~255,其中有效的地址范围是1-247,其余的有特殊用途,比如249-254是预留为未来拓展,255是广播地址,也就是说所有设备只要接收到了广播地址都会认为有效。假设我们现在的设备地址是247,我们想要读取设备信息,那么功能码我们选择0x03;在0x03的功能下,对于数据字节,我们首先要发送读取信息对应寄存器的首地址,一个寄存器的地址是2字节数据,然后再紧接着包括2字节的寄存器数量。例如,我们要对设备地址为247的设备,从寄存器地址为4的寄存器开始,读取26个寄存器的值。那么它要发送的Modbus-RTU数据为:F70301 0000 1A8E 6F注意:Modbus-RTU的数据结构都用16进制来表示。【地址】因此247转为16进制为F7,表示从机地址【功能码】03为功能码,读取寄存器信息【数据】4转为16进制为0100,因此寄存器首地址为0100,26转为16进制为1A,因此读取的寄存器数量为001A【CRC校验】CRC校验是循环冗余校验,其校验方法为:第一步:处理第一个字节0xF7当前字节与CRC低8位异或:CRC = 0xFFFF ^ 0xF7 = 0xFF08(二进制:11111111 00001000)8 次移位操作(每次右移1位,检查最低位):第 1 次:最低位为 0 →直接右移→ 0x7F84(01111111 10000100)第 2 次:最低位为 0 →直接右移→ 0x3FC2(00111111 11000010)第 3 次:最低位为 0 →直接右移→ 0x1FE1(00011111 11100001)第 4 次:最低位为 1 →右移后与 0xA001 异或→右移:0x0FF0(00001111 11110000)异或:0x0FF0 ^ 0xA001 = 0xAFF1(10101111 11110001)第 5 次:最低位为 1 →右移后与 0xA001 异或→右移:0x57F8(01010111 11111000)异或:0x57F8 ^ 0xA001 = 0xF7F9(11110111 11111001)第 6 次:最低位为 1 →右移后与 0xA001 异或→右移:0x7BFC(01111011 11111100)异或:0x7BFC ^ 0xA001 = 0xDBFD(11011011 11111101)第 7 次:最低位为 1 →右移后与 0xA001 异或→右移:0x6DFE(01101101 11111110)异或:0x6DFE ^ 0xA001 = 0xCDFF(11001101 11111111)第 8 次:最低位为 1 →右移后与 0xA001 异或→右移:0x66FF(01100110 11111111)异或:0x66FF ^ 0xA001 = 0xC6FE(11000110 11111110)处理后 CRC 值:0xC6FE第二步:处理第二个字节 0x03异或操作:CRC = 0xC6FE ^ 0x03 = 0xC6FD(11000110 11111101)8 次移位操作:第 1 次:最低位为 1 →右移后异或→ 0x637E ^ 0xA001 = 0xC37F第 2 次:最低位为 1 →右移后异或→ 0x61BF ^ 0xA001 = 0xC1BE第 3 次:最低位为 0 →直接右移→ 0x60DE第 4 次:最低位为 0 →直接右移→ 0x306F第 5 次:最低位为 1 →右移后异或→ 0x1837 ^ 0xA001 = 0xB836第 6 次:最低位为 0 →直接右移→ 0x5C1B第 7 次:最低位为 1 →右移后异或→ 0x2E0D ^ 0xA001 = 0x8E0C第 8 次:最低位为 0 →直接右移→ 0x4706处理后 CRC 值:0x4706第三步:处理第三个字节 0x01异或操作:CRC = 0x4706 ^ 0x01 = 0x4707(01000111 00000111)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x8E0E第四步:处理第四个字节 0x00异或操作:CRC = 0x8E0E ^ 0x00 = 0x8E0E(10001110 00001110)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x4707第五步:处理第五个字节 0x00异或操作:CRC = 0x4707 ^ 0x00 = 0x4707(01000111 00000111)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x8E0E第六步:处理第六个字节 0x1A异或操作:CRC = 0x8E0E ^ 0x1A = 0x8E14(10001110 00010100)8 次移位操作:(过程略,最终结果)处理后 CRC 值:0x6F8E最终结果计算得到的 CRC 值为 0x6F8E按照 Modbus 协议要求(低字节在前),校验码在帧中表示为 8E 6F【从机回复数据】从机回复也类似,其数据结构为:从机地址+主机发送的功能码+要发送给主机数据的字节数+数据+CRC校验码例如,回复F70301 0000 1A8E 6F,假设从机每个寄存器有两字节数据,被读了26个寄存器,需要恢复52字节的数据,52转为16进制为34,则从机需回复:F703 34 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX [CRC_L] [CRC_H]其中XX XX代表数据,按照高字节在前的格式进行传输。从机地址+主机发送的功能码0x03+要读取的寄存器的首地址+要读取的寄存器数量+CRC校验码从机地址+主机发送的功能码0x03+要发送给主机数据的字节数+数据+CRC校验码这便是Modbus-RTU 0x03的通信协议。3.Modbus-RTU通信实例——改数据该数据所用的功能码为0x06,其结构与读数据类似,不过0x06功能码一次只能改一个寄存器的数据,因此其通信结构为:从机地址+功能码+要改的寄存器地址+要更改为的数据+CRC校验例如F7 06 01 00 00 1A 01 9C相关不再多做解释。如何判断是否修改成功呢?——答案是返回相同的数据即可。因此,从机要回复的数据结构为:F7 06 01 00 00 1A 01 9C从机地址+功能码+要改的寄存器地址+要更改为的数据+CRC校验从机地址+功能码+要改的寄存器地址+已改为的数据+CRC校验这便是Modbus-RTU 0x06的通信协议。2.5 所以SCI协议和Modbus协议到底有啥关系?这也是本文要讲的重点。SCI是基于数据位的,Modbus是基于数据的,二者的关系就是,Modbus是在SCI通信上,进行了一次封装。【举个例子你就明白】我们要发送的数据为:F70301 0000 1A8E 6F那么怎么发送呢?我们是要用到SCI的。想一下如何用SCI发送“F7”?假设在空闲线模式下,我们设置为1位停止位,偶校验,那么我们实际发送的bit位是什么情况呢?将16进制的F7转为二进制:1111 0111此时SCI发送的bit情况:【起始位】0+【数据位】1110 1111+【奇偶校验位】1+【停止位】1拓展到所有的数据:F7:【起始位】0+【数据位】1110 1111+【奇偶校验位】1+【停止位】103:【起始位】0+【数据位】1100 0000+【奇偶校验位】0+【停止位】101:【起始位】0+【数据位】1000 0000+【奇偶校验位】1+【停止位】100:【起始位】0+【数据位】0000 0000+【奇偶校验位】0+【停止位】100:【起始位】0+【数据位】0000 0000+【奇偶校验位】0+【停止位】11A:【起始位】0+【数据位】0101 1000+【奇偶校验位】1+【停止位】18E:【起始位】0+【数据位】0111 0001+【奇偶校验位】0+【停止位】16F:【起始位】0+【数据位】1111 0110+【奇偶校验位】0+【停止位】1然后SCI在使用RS485通信线,去进行具体“逻辑1”与“逻辑0”的传输。数据传输的巧妙,是不是有一种恍然大悟的感觉?[本文完]
2025年07月25日
11 阅读
0 评论
0 点赞
1
2
3
...
5