齐护机器人ModbusRTU RS485转TTL通信模块与ESP32 Arduino通信可Mixly的图形化编程Scratch图形化编程
齐护机器人ModbusRTU RS485-TTL通信模块
一、概念理解
Modbus协议是一种由Modicon公司(现为施耐德电气Schneider Electric)于1979年发表的网络通信协议,旨在实现可编辑逻辑控制器(PLC)之间的通信。
1.1 什么是Modbus RTU?
Modbus RTU是一种串行通信协议,它被广泛用于工业环境中各种电子设备之间的通信。这种协议是Modbus协议家族中的一种,专门设计用于在串行线路上传输数据。
1.2 Modbus RTU的基础概念
串行通信:Modbus RTU使用串行通信方式,即数据在一条线路上一个接一个地传输。这种方式与并行通信相比,虽然速度较慢,但成本更低,且更适合长距离传输。
RS-485接口:Modbus RTU通常使用RS-485接口进行物理连接。RS-485是一种差分信号传输方式,具有抗噪声干扰能力强、传输距离远等优点。
数据包结构:Modbus RTU的数据包由地址域、功能码、数据域和校验码等部分组成。每个部分都有其特定的作用,如地址域用于标识从设备,功能码用于指示要执行的操作等。
1.3 Modbus RTU的工作原理
主从通信模式:Modbus RTU采用主从通信模式,即一个主设备(如PLC)可以与多个从设备(如传感器、执行器等)进行通信。主设备负责发起通信请求,而从设备则根据请求做出响应。
数据请求与响应:当主设备需要读取或写入从设备的数据时,它会发送一个包含地址域、功能码和数据域的数据包给从设备。从设备接收到数据包后,会根据功能码执行相应的操作,并将结果返回给主设备。
校验与错误处理:为了确保数据的准确性,Modbus RTU数据包中包含校验码。当从设备接收到数据包后,会进行校验计算,如果校验结果不正确,则会认为数据包有误,并做出相应的错误处理。
1.4 Modbus RTU的进阶概念
波特率与数据位:波特率是指每秒传输的比特数,它决定了通信的速度。数据位则是指每个数据包中传输的数据比特数。在实际应用中,需要根据设备的性能和通信距离等因素选择合适的波特率和数据位。
奇偶校验与停止位:除了校验码外,Modbus RTU还支持奇偶校验和停止位等错误检测机制。奇偶校验通过在数据位后面添加一位校验位来检测数据是否出错,而停止位则用于标识数据包的结束。
地址分配与设备识别:在Modbus RTU网络中,每个设备都有一个唯一的地址。主设备通过发送包含目标设备地址的数据包来与特定设备进行通信。这种方式使得主设备能够同时与多个从设备进行通信,而不会发生混淆。
1.5 Modbus RTU的实际应用
工业自动化:Modbus RTU被广泛用于工业自动化领域,如PLC与传感器、执行器之间的通信等。通过Modbus RTU协议,PLC可以实时读取传感器的数据,并根据数据做出相应的控制决策。
智能建筑:在智能建筑领域,Modbus RTU也被用于各种智能设备的通信中。例如,智能照明系统、智能安防系统等都可以通过Modbus RTU协议实现数据的传输和控制。
远程监控与维护:通过Modbus RTU协议,还可以实现远程设备的监控和维护。技术人员可以通过网络远程访问设备的数据和状态信息,从而及时发现并解决问题。
1.6 Modbus TCP/IP与Modbus UDP简介
除了Modbus RTU外,Modbus协议家族还包括Modbus TCP/IP和Modbus UDP等版本。它们都是基于以太网的通信协议,具有更高的传输速度和更广泛的适用范围。其中,Modbus TCP/IP利用TCP/IP协议进行数据传输,而Modbus UDP则利用UDP协议的低延迟和低开销特点进行数据传输。这些版本使得Modbus协议能够在更广泛的领域中得到应用。
1.7 工作原理与特点
主从通信:Modbus协议采用主从通信方式,即一个设备作为主设备(Master),负责发起请求,而其他设备作为从设备(Slave),负责响应请求。这种通信模式确保了数据交换的可靠性和有序性。
串行通信:Modbus协议是一种串行通信协议,数据按位依次传输,每位数据占据固定的时间长度,并使用少数几条通信线路完成系统间的信息交换。
帧结构:Modbus协议每发送一次数据就是一个数据帧,每个数据帧都必须符合Modbus的帧结构。帧结构通常包括地址、功能码、数据和校验等部分。
多种传输模式:Modbus协议支持多种传输模式,包括Modbus-RTU、Modbus-ASCII、Modbus-TCP/IP等。其中,Modbus-RTU使用二进制格式进行数据传输,通讯效率更高;Modbus-ASCII使用ASCII码进行数据传输,可读性好但通讯效率更低;Modbus-TCP/IP则是基于以太网的一种通讯方式,具有高速、稳定的特点。
1.8. 物理接口
由于 Modbus 是一种应用层协议,因此任何支持承载数字数据的物理接口都可用于部署 Modbus。然而,由于 Modbus 在工业环境中的普遍性,主要用于 Modbus 的接口类型是最强大的。
RS-232 – RS-232 是一种传统的串行通信接口标准。尽管 USB 等现代串行接口已经取代了它,但许多术语今天仍在使用。由于 RS-232 是一个串行接口,我们可以将其用于 Modbus RTU 和 Modbus ASCII。
RS-485 – 与 RS-232 相比,RS-485 具有更高的速度、更长的电缆,并且信号更强大。基于 RS-485 的 Modbus 可能是部署 Modbus 协议的最流行方式。我们可以使用 Modbus RTU 或 Modbus ASCII。
以太网 – 在大容量数据传输方面,以太网无疑是最好的之一,仅次于光纤。以太网的多功能性使其成为所有行业的最爱。我们几乎可以通过以太网实现任何数据协议。这是封装数据并将其发送到目标的问题。Modbus TCP/IP 专为以太网实施量身定制。
无线 – 只要通信接口允许可靠且可寻址的数据传输和多点方案,它就适用于 Modbus。根据无线链路的能力,可以实现任何模式的 Modbus。然而,由于无线传输和网络的不可预测性和复杂性,各行各业更喜欢有线链路而不是无线链路。
1.9. 协议版本
多年来,随着许多新的物理接口标准的推出,Modbus 协议已被调整以适应这些接口,从而提高通信效率。
Modbus RTU – RTU 代表远程终端单元,主要用于串行通信。串行通信接口包括 UART、RS-485、RS-232 等。在 Modbus RTU 中,数据被分组为单独的帧,并以二进制格式表示。RTU 消息可以是命令或数据(请求/响应)。每个数据帧都以基本 CRC 码结尾,用于检测传输中的错误。
Modbus ASCII – 这类似于 Modbus RTU,不同之处在于所有数据都仅使用 ASCII 字符作为 ASCII 等效项发送。例如,像 153 这样的整数值以三个字符 “1”、“5” 和 “3” 的形式发送,而不是以二进制格式直接表示数字。这样做的好处是,您可以以人类可读的格式查看消息,并且可以轻松调试通信。但作为副作用,在大多数情况下,它使所需的数据带宽增加了一倍。
Modbus TCP/IP – 顾名思义,这是对以太网接口的改编。在这种情况下,利用 TCP/IP 的速度和寻址功能,数据通过以太网电缆作为 TCP/IP 数据包传输。以太网也是一种高效、快速和强大的通信接口,使其成为工业应用的理想选择。
Modbus UDP – TCP/IP 并不是唯一可以在以太网中使用的协议。一些 Modbus 实现利用了 UDP 的低延迟和低开销。
QH modbus 模块物理层是RS-485,协议版本为Modbus RTU 。
1.10. 报文格式
modbus报文包含站号、功能码、数据、和CRC校验码。这里不做详细叙述。
1 功能码
重点关注功能码,通常设备通讯说明书会告诉你读取设备数据所需要的功能码及地址。
功能码 功能说明
01H 读取输出线圈
02H 读取输入线圈
03H 读取保持寄存器
04H 读取输入寄存器
05H 写入单线圈
06H 写入单寄存器
0FH 写入多线圈
10H 写入多寄存器
2 寄存器分类
Modbus协议中一个重要的概念是寄存器,所有的数据均存放于寄存器中。最初Modbus协议借鉴了PLC中寄存器的含义,但是随着Modbus协议的广泛应用,寄存器的概念进一步泛化,不再是指具体的物理寄存器,也可能是一块内存区域。Modbus寄存器根据存放的数据类型以及各自读写特性,将寄存器分为4个部分,这4个部分可以连续也可以不连续,由开发者决定。
数据区块 前缀
线圈 0
离散量输入 1
输入寄存器 3
保持寄存器 4
3 寄存器地址分配
Modbus寄存器地址分配(不同的设备,可访问的地址范围不同,以下是其中一个示例)
寄存器种类 寄存器PLC地址 寄存器Modbus协议地址 简称 读写状态
线圈状态 00001 ~0999 0000H~ FFFFH 0x 可读可写
离散输人状态 10001~ 19999 0000H~ FFFFH 1x 只读
保持寄存器 40001~49999 0000H~ FFFFH 4x 可读可写
输入寄存器 30001~ 39999 0000H~ FFFFH 3x 只读
二、 编程功能块
2.1 图形化编程功能块位置
齐护教育版Mixly:ESP32 Arduino/C02/AIcam/UNO主板:齐护工业应用–>ModbusRTU
Mixly2RC4及以上:ESP32 Arduino 云端库导入【齐护ModbusRTU库】
齐护编程Scratch: ESP32 Arduino 添加扩展–>通讯–>ModbusRTU
2.2 编程功能块说明
2.2.1初始化
Mixly
Scratch
初始化modbusRTU模块,选择串口引脚和串口接口,以及串口参数。这些参数需要与连接在RS-485上所有的设备一致。
序列号:请查看【3.4 序列号】的详细说明。
波特率:串口所使用的波特率,与连接的其它设备一致。
串口参数如 SERIAL_8N1 后三位代表的意义如下:
其中 8表示数据位(modbus固定为8位)
N :无校验 E :偶检验 O :奇校验
1或2表示停止位
2.2.2 写多个
Mixly
Scratch
ModbusRTU 写多个保持寄存器(功能码0x10),在远程设备中写入连续寄存器块,数据变量类型为uint16_t类型的数组。
站号:从站站号
地址:从站寄存器起始地址,地址范围0 – 65535。
数量:要写入寄存器的数量,最多可以写入 123 个连续的 16 位 寄存器。
数据:需要写入的数据,类型为uint16_t类型的数组,数组的长度必须等于或大于写入的数量。
返回:
该函数返回数据含义如下:
正常返回为该指令的功能码
返回-1时为通讯故障,原因可能为以下几点: 发送失败、接收失败、响应与请示地址不同。
当出现其它错误时会将错误代码+100返回,
错误代码如下所示:
0x01 非法功能 (Illegal Function)
0x02 非法数据地址 (Illegal Data Address)
0x03 非法数据值 (Illegal Data Value)
0x04设备故障 (Slave Device Failure)
0x05设备忙 (Acknowledge)
0x06负号应答 (Negative Acknowledge)
0x07内存区保留 (Memory Parity Error)
0x08Gateway路径不存在 (Gateway Path Not Available)
0x0AGateway目标失败 (Target Device Failed to Respond)
如下图所示功能块,所有写多个数据的程序块内参数含义相同。
写多个线圈
Mixly
Scratch
2.2.3 写单个
Mixly
Scratch
ModbusRTU 写单个保持寄存器(功能码0x06),在远程设备中写入连续寄存器块,数据变量类型为uint8_t类型的数据。
站号:同上
地址:同上
数量:同上
数据:同上。
返回:同上
所有写单个数据的程序块内参数含义相同
写单个线圈
Mixly
Scratch
2.2.4 读取功能块
Mixly
Scratch
ModbusRTU读取数据,从远程设备中读取数据到变量中,变量的类型要与功能块上一致。
站号:同上
地址:同上
数量:同上
数据:同上。
返回:同上
2.2.5 通讯超时设置
设置从服务器接收响应的超时时间,在设置时间内如果没有数据到达则表示接收数据完成。默认值50ms(能满足大部分通讯),每种设备的响应时间不尽相同,请设置合适的超时时间以达到最高效率。设置时间过长会影响收发效率,时间过短可能会造成通讯错误。
Mixly
Scratch
三、 模块介绍
3.1 模块功能介绍
齐护RS485转TTL模块
3.3V与5.0V电源、信号完美兼容的RS485自动流向控制模块无需“收-发”控制,使用本模块跟您操作串口一样简单 (1)、3. 3V与5.0V信号兼容 (2)、采用原装进口芯片,工业级设计,抗干扰能力强同时采用更为有效的485防雷设计,可在工业现场及野外恶劣的环境下使用,工作温度为-40°C至+85°C,传输距离可达千米( 具体距离和使用环境,传输速率有关连。) (3)具有RXD、TXD信号指示灯,收发状况尽收眼底。
模块兼容3.3V~5V信号,供电建议不超过5V。
序号 端子名称 功能
1 VCC 3.3V或5V(模块电源+)
2 TXD 模块串口发送
3 RXD 模块串口接收
4 GND 电源地
5 A+ RS485 A+
6 B- RS485 B-
7 EARTH 接大地,用于防干扰
3.2 终端电阻
短接R0可使用内置120Ω电阻做为终端电阻。
什么时候需要加终端电阻?
在RS485通信中,长总线传输和多终端连接,需要在总线的两端加终端电阻。具体请查阅相关资料。
3.3 防干扰
由于工业控制环境恶劣,通信线路中会出现更多的干扰耦合,从而影响RS485总线的可靠性,甚至会损坏RS485收发器芯片。
常见防干扰措施:
RS485总线隔离
在485总线上添加隔离器件。
使用屏蔽双绞线
使用带屏蔽的双绞线,并且屏蔽层单点接大地,连接能够有效的抑制干扰。
增加TVS管或串联磁珠
在总线上增加TVS管或串联磁珠,可起到保护485收发器效果。
3.4 序列号
序列号印于产品两侧,为产品唯一标识,编写程序时需要使用。
四、 主站例程(ESP32)
与永宏PLC的modbusRTU通讯示例
4.1 使用器材
永宏PLC FBS60MT+FBS-CB5通讯板(485)
QH_modbus通讯模块
齐护C02开发板(ESP32)
4.2 接线
C02–>QH_modbus通讯模块
C02 QH_modbus通讯模块
3.3V或5V VCC
GND GND
16 RX
17 TX
QH_modbus通讯模块—>PLC(如实际应用应使用屏蔽双绞线,并接地)
QH_modbus通讯模块 PLC 485接口
A+ +
B- -
注:PLC接入电源前请确认接线正确再上电!
4.3 PLC参数设置
设置PLC通信模块参数为 9600 8N1,通讯协议为Modbus RTU(Slave)从站。有些PLC做为modbusRTU的从站需要编写PLC程序,永宏PLC不需要。设置完成后PLC断电重启后通讯参数才会生效。
4.4 PLC地址
查阅PLC手册,可以看出永宏的modbus只支持0X与4X寄存器。也就是只支持线圈和保持寄存器相关的功能指令。
例如:
Y输出,使用读写线圈指令,地址范围0~255(表中是+1后的,在我们编程中不需要+1)读取和写入。
X输入,使用读线圈指令,地址范围1000~1255
R0寄存器,对应读保持寄存器指令,地址范围0~4167。
4.5 写保持寄存器
站号、波特率、数据位、停止位、校验位设置需要与PLC一致。
连续对R0开始的10个寄存器写入数据,在写入完成之后对每个数据+1。
写入指令执行完成后将执行结果码保存到result,再判断是否成功写入。
abc变量用于计算通讯用时。
Mixly
Scratch
联机PLC监视PLC寄存器的变化
4.6 读保持寄存器
读取寄存器与写入寄存器的使用方法相似。
Mixly
Scratch
联机PLC观察数据,PLC数据与串口打印数据一致。
所有其它读取功能使用方法与其相同,注意变量的类型要与功能块标识一样
五、从站例程(ESP32)
5.1 使用器材
USB转485通讯线,电脑端使用modbus Poll模拟modbusRTU主站
QH_modbus通讯模块
齐护C02开发板(ESP32芯片)
5.2 接线
C02–>QH_modbus通讯模块
C02 QH_modbus通讯模块
3.3V或5V VCC
GND GND
16 RX
17 TX
QH_modbus通讯模块—>USB转485通讯线
QH_modbus通讯模块 USB转485通讯线
A+ A+
B- B+
5.3, 程序
做为从端,只能被动的接收消息,被动的接收主端的读写寄存器请求并响应。
只有配好对应的寄存器,主端才能去访问,否则会回复对应的错误信息。
Mixly
Scratch
5.4 电脑端modbus poll软件配置
设置与C02相同串口参数
点击菜单 连接–>连接
连接选择 serial port
串口设置选择USB转485线的串口端口号
其它的波特率、数据位、校验位、停止位与程序中相同。
设置–>读/写定义,配置读写寄地址,这里的地址用于在主画面显示.
从站ID填写程序中的站号
地址与程序中相同
数量,填写你要读取的数量
扫描间隔,读取的间隔时间
点击连接后图中1表示连接成功。双击对应的值可以修改其中的值。
也可以使用菜单功能中的单个指令对寄存进行操作。
可以使用其它命令读写从机寄存器
从主站对其数据修改后,我们可以从C02的串口观察到实际数据的更改。
六、主站例程(UNO)
UNO的使用和ESP32没有太大区别,唯一不同的是UNO下使用的是软串口,无法定义除波特率外的其它参数(数据位、停止位、校验)。固定数据位为8,停止位为1,无校验。
图中例为读取从站保持寄存器示例。
Mixly
写保持寄存器
Mixly
七、从站例程(UNO)
UNO下从站暂时不可用。
八、 相关下载
测试程序:modbus_例程
相关文章:
齐护机器人ModbusRTU RS485转TTL通信模块与ESP32 Arduino通信可Mixly的图形化编程Scratch图形化编程
齐护机器人ModbusRTU RS485-TTL通信模块 一、概念理解 Modbus协议是一种由Modicon公司(现为施耐德电气Schneider Electric)于1979年发表的网络通信协议,旨在实现可编辑逻辑控制器(PLC)之间的通信。 1.1 什么是Mod…...
JDK、JRE、JVM的区别
JDK(Java Development Kit)、JRE(Java Runtime Environment)和JVM(Java Virtual Machine)是Java技术栈中的三个核心组件,它们各自有不同的功能和用途: 1. JDK(Java Deve…...
linux基础2
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...
vue 项目实现阻止浏览器记住密码
在各个浏览器中,登录输入密码一般都会弹出是否记住密码的功能,如果记住之后,会在各个密码框自动填充记住的密码,这无疑是一种不安全的操作,所以要实现禁用阻止浏览器记住密码的行为 查阅资料,也得到很多…...
【23种设计模式】工厂模式:理论剖析与Java实践
文章目录 工厂模式:理论、Java 实现与实践应用一、工厂模式概述二、简单工厂模式(一)理论介绍(二)代码实现(三)关键步骤(四)流程图 三、工厂方法模式(一&…...
(补充)JSON在Java后端的应用
JSON在Java后端的应用 本篇介绍 本篇文档不涉及到写一个JSON字符串,只是介绍如何在后端实现JSON字符串和Java对象的相互转换 Java对象转换为JSON字符串 在Java中,可以使用一个第三方工具包Jackson将Java对象转换为JSON对象,假设现在有一个…...
使用 Apache Commons IO 实现文件读写
在 Java 编程中,文件读写是常见的操作。虽然 Java 标准库提供了基本的文件 I/O 功能,但使用 Apache Commons IO 库可以进一步简化这些操作,提高开发效率。Apache Commons IO 是一个强大的工具库,提供了许多实用的类和方法…...
AWS ECS Task 添加 Prometheus 监控采集配置详细指南
以下是一篇完整的博文,介绍如何在 AWS ECS 环境中实现 JVM 监控。 AWS ECS 环境下的 JVM 监控实践 概述 在 AWS ECS (Elastic Container Service) 环境中监控 Java 应用性能是一项重要任务。本文将详细介绍如何使用 AWS Distro for OpenTelemetry (ADOT) 结合 Spring Boot …...
Vue+vite 组件开发的环境准备
一.nodejs安装 进入Node.js 官网(Node.js — Run JavaScript Everywhere),点击下载。 双击打开,进行安装 双击打开后,点击 next(下一步),后面也是一直点击 next 无其他设置,直到 …...
STM32 进阶 定时器:1系统定时器 系统中断案例 LED闪烁
定时器: 功能从高到低: TIM1和TIM8 高级控制定时器:输出能力更强,刹车控制、死区时间。 TIMx 通用定时器:可以输出PWM方波 TIM6和TIM7 基本定时器:只能计时 系统定时器 系统定时器(SysTic…...
基于微信小程序的教学质量评价系统
私信我获取源码和万字论文,制作不易,感谢点赞支持。 基于微信小程序的教学质量评价系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的教学质量评价系统的开发全过…...
Qt Qtablewidget 标题 QHeaderView 增加可选框 QcheckBox
创建自定义QHeaderView #pragma once#include <QObject> #include <QHeaderView> #include <QPainter> #include <QMouseEvent>class SSHeaderView : public QHeaderView {Q_OBJECTprivate:bool isChecked;int m_checkColIdx; public:SSHeaderView(i…...
在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案
在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案 背景概述解决方案脚本实现脚本说明使用指南注意事项在CentOS操作系统环境中,若需并发上传特定目录下的.wav文件至HTTP服务器,而系统未安装GNU parallel工具,我们可通过其他方法实现此需求。本文将介绍一种利用Sh…...
实战ansible-playbook(四) -文件操作重定向/追加
原始命令: ----------阶段1--------------- apt-get update -y apt install nano vim iputils-ping net-tools dialog gcc apt-utils make -y systemctl stop unattended-upgradessystemctl disable unattended-upgradesecho APT::Periodic::Update-Package-Lists "1&qu…...
嵌入式 C 编程必备(7):const 关键字 —— 打造稳定的常量空间
目录 一、const关键字的基本含义与用法 1.1. 修饰基本数据类型 1.2. 修饰指针 1.3. 修饰数组 1.4. 修饰结构体 二、const关键字在嵌入式编程中的优势 2.1. 提升代码可读性 2.2. 增强代码安全性 2.3. 优化内存使用 2.4. 促进模块化设计 2.5. 支持静态分析和测试 三、…...
电脑显示没信号显示屏不亮怎么办?电脑没信号解决方法
电脑没信号显示屏不亮这种故障的原因可能有多种,例如显示器的供电、连接、设置等问题,或者电脑的显卡、内存、硬盘、主板等硬件问题。所以我们想要解决这个问题,也是需要多方面排除找到具体原因然后进行修复。下面将为大家介绍一些常见的电脑…...
C++零基础入门:运算符与表达式详解 —— 树莓派Pico编程应用
C语言作为信息学奥赛的指定语言,广泛应用于嵌入式开发、系统编程、游戏开发等领域。对于初学者而言,掌握基本的运算符和表达式是进行编程的基础,而这些基础知识能够帮助你解决各种实际问题。本文将带你深入理解C中的运算符与表达式࿰…...
mvc命令
命令 mvc MVC(Model-View-Controller)是一种软件架构模式,用于组织和管理应用程序的代码mvc重要的三部分 (1)模型(Model):负责存储系统的中心数据,提供访问数据的函数,封装了应用程序的功能内核。 (2)视图&…...
Kafka-创建topic源码
一、命令创建topic kafka-topics --create --topic quickstart-events --bootstrap-server cdh1:9092 --partitions 2 --replication-factor 2 二、kafka-topics脚本 exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.TopicCommand "$" 脚本中指定了…...
如何开展单元测试
1、是什么 单元测试(Unit Testing)又称为模块测试,是针对程序模块来进行正确性检验的测试工作。 程序模块是软件设计的最小单位,程序单元是应用的最小可测试部件 • 在面向过程编程中,一个单元就是单个程序、函数、过…...
网络练级宝典-> UDP传输层协议
目录 传输层 端口号 端口号和进程的关系 UDP协议 UDP协议格式 UDP数据封装: UDP数据分用: 面向数据报 UDP的缓冲区 UDP的缺点 基于UDP的应用层协议 传输层 端口号 我们知道端口号对应的其实就是一个进程的pid,在操作系统中二者的…...
【Elasticsearch】07-ES聚合
1. 桶 桶(Bucket)聚合:用来对文档做分组 TermAggregation:按照文档字段值分组,例如按照品牌值分组、按照国家分组Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组…...
Unity 画线(UILineRenderer)
实现 以鼠标点击点作为起点创建UILineRenderer 并记录起点。 GameObject go new GameObject(); go.transform.parent transPaint; go.transform.localPosition Vector3.zero; line go.AddComponent<UILineRenderer>(); line.LineWidth widthLine; line.color col…...
【Linux测试题】
1. 选择题 题目: 如果想将电脑中Windows C盘(hd1)安装在Linux文件系统的/winsys目录下,请问正确的命令是()。 选项: A. root104.123.123.123:~# mount dev/hd1 /winsys B. root104.123.123.12…...
什么是快速傅里叶变换?
一、FFT概念 快速傅里叶变换(Fast Fourier Transform,FFT)是一种高效计算离散傅里叶变换(Discrete Fourier Transform,简称DFT)及其逆变换的算法。DFT和FFT都是音频处理、图像分析、振动分析、无线通信等许…...
android-studio开发第一个项目,并在设备上调试
恭喜你成功安装并配置好了 Android Studio!下面是开发你的第一个 Android 项目并在设备上调试的详细步骤: 1. 启动 Android Studio 首先,启动 Android Studio。你可以通过以下几种方式启动: 使用桌面快捷方式(如果已…...
深入浅出:php-学习入门全攻略
文章目录 1. 为什么选择 PHP?2. 安装 PHP 环境2.1 Windows 系统安装步骤 1:下载 PHP步骤 2:解压并配置步骤 3:配置环境变量步骤 4:验证安装 2.2 Mac 系统安装步骤 1:使用 Homebrew 安装步骤 2:验…...
Qml之基本控件
一.Qml常用控件 1.Text(显示普通文本和富文本) 1.1显示普通文本: Window { visible: true width: 320 height: 240 title: qsTr("Hello World") Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color:…...
redis机制详解
RDB 快照机制 在默认情况下,Redis 会将内存数据库的快照存储在名为 “dump.rdb” 的二进制文件中。同时,你可以通过相关设置,让 Redis 在满足特定条件时自动保存数据集。例如,设定 “save 60 1000”,意味着当在 60 秒内…...
【知识科普】Linux系统下用户权限体系
文章目录 概述一、用户类型二、用户权限的组成三、权限的表示方法四、权限的修改方法五、特殊权限六、权限掩码(umask) 密码相关一、修改用户密码二、删除用户密码三、设置用户密码有效期四、查询用户密码信息五、密码策略配置 SSH远程访问1. 检查SSH服务…...
【数据结构】堆
目录 一、堆 二、堆的模拟实现 1.结构体 2.push 3.pop和top 三.实现堆排序 1.成堆算法 2.堆排序 heap模拟实现源码_gitee 一、堆 分为大堆和小堆 大堆是每个父节点都大于子节点,小堆则相反是每个父节点都小于子节点 底层抽象结构是完全二叉树࿰…...
6.824/6.5840 Lab 1: MapReduce
宁静的夏天 天空中繁星点点 心里头有些思念 思念着你的脸 ——宁夏 完整代码见: https://github.com/SnowLegend-star/6.824 由于这个lab整体难度实在不小,故考虑再三还是决定留下代码仅供参考 6.824的强度早有耳闻,我终于也是到了挑战这座高…...
Day5:生信新手笔记 — R语言基本语法
一、数据类型 (重点只有两个,剩下的不看) 1.1 向量(vector) 矩阵(Matrix) 数组(Array) 1.2 数据框(Data frame) x<- c(1,2,3) #常用的向…...
lua download
https://www.lua.org/ https://www.lua.org/versions.html#5.4...
安装更新upgrade导致ubuntu崩溃
安装更新导致ubuntu崩溃 前言uuid编不过,导致的崩溃 记录一些ubuntu崩溃的过程。 目前只有一个,以后遇到都放在这里,以提醒自己。 前言 如果从10000年看现在的linux,不是说不完美,而是糟透了。 linux的版本号…...
软件测试最新项目合集【商城、外卖、银行、金融等等.......】
项目一:ShopNC商城 项目概况: ShopNC商城是一个电子商务B2C电商平台系统,功能强大,安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城,系统PC后台是基于ThinkPHP MVC构架开发的跨…...
【学习总结|DAY09】Java 流程控制与数据操作练习一:录入三位数并筛选符合条件的数字
一、主要代码: import java.util.Scanner;public class demo07 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.print("请输入一个大于100的三位数:");int number scanner.nextInt();if (nu…...
“放弃Redis Desktop Manager使用Redis Insight”:日常使用教程(Redis可视化工具)
文章目录 更新Redis Insight连接页面基础解释自动更新key汉化暂时没有找到方法, Redis Desktop Manager在连接上右键在数据库上右键在key上右键1、添加连接2、key过期时间 参考文章 更新 (TωT)ノ~~~ βyё βyё~ 现在在维护另一…...
使用lumerical脚本语言创建弯曲波导并进行数据分析(纯代码实现)
本文使用lumerical脚本语言创建弯曲波导、设置有限差分时域(FDTD)模拟、改变波导弯曲半径计算损耗、绘制图像展示电场强度分布情况及对具有不同弯曲半径的波导进行一系列模拟和分析操作(代码均有注释讲解)。 一、创建弯曲波导 1.1 基本结构讲解 (1)包层(Clad) 在波导结…...
AC+AP漫游实验
实验拓扑 实验要求 1.AP1服务vlan10,AP2服务vlan20,实现三层漫游 2.AP1与AP2为不同AP组,直接转发 实验步骤 1.配置VLAN放行相关流量 交换机与AP接口为trunk口并修改PVID为30 2.配置相关业务使得ap上线 3.配置vap上线,AP可用…...
七:仪表盘安装-controller node
一:工具、环境准备-controller node 二:OpenStack环境准备-controller node 三:安装服务-controller node 四:工具、环境准备-compute node 五:OpenStack环境准备-compute node 六:安装服务-compute node 七…...
pandas习题 067:小于 60 的部分列修改为 60
(编码题)修改以下名为 df 的 DataFrame 的值,将 Q1、Q2、Q3、Q4 列中小于 60 的分数修改为 60。 import pandas as pd# 示例数据 data = {name: [Alice, Bob, Charlie],...
Flutter 版本管理工具FVM
FVM是一款非常好用的Flutter版本管理工具。FVM官网: 下面是使用 FVM(Flutter Version Manager)管理 Flutter 版本的整个流程,包括安装、配置环境变量以及基本的使用步骤。 1. 安装 FVM FVM 可以通过多种方式安装,下…...
图学习GNN笔记
目录 第一部分:预测分析中的图学习4.3 案例研究:图上的学习机器学习生命周期 第二部分:图特征学习特征表示与嵌入为什么难以学习? 第三部分:节点嵌入嵌入节点设置学习节点嵌入浅层编码如何定义节点相似性? …...
装饰器—购物打折
from collections import namedtuple# 定义促销策略列表 promos []# 装饰器函数,用于注册促销策略 def promotion(promo_func):promos.append(promo_func)return promo_func# 促销策略1:忠诚度积分折扣 promotion def fidelity(order):""&quo…...
【Linux---10】本地机器 <=> 服务器 文件互传
文章目录 1. 小文件互传2. 大文件互传 1. 小文件互传 使用sz命令。 说明:sz命令是ZModem文件传输协议的一部分,用于在Linux和Unix系统中,从本地系统发送(send)文件到远程系统。sz命令通常与rz命令(ZModem接…...
Mysql数据库基础篇笔记
目录 sql语句 DDL——数据库定义语言(定义库,表,字段) 数据库操作: 表操作: DML 增删改语句 DQL 语法编写顺序: 条件查询 DCL 用户管理: 权限管理: 函数 常见字符串内置函…...
QT 实现QStackedWidget切换页面右移动画
1.实现效果 以下是一个QStackedWidget,放了两个QPushButton在上面,点击切换不同的界面。 为了方便查看动画特效,设置了每个界面的背景图片。 2.实现思路 首先截取当前界面的图片,渲染到一个QLabel上,然后设置QPropertyAnimation动画,动画的作用对象就是这个QLabel,不断…...
RocketMQ rocketmq-tools管理主题
RocketMQ rocketmq-tools管理主题 环境和软件版本增删改查 环境和软件版本 Win10、IDEA、Jdk1.8、rocketmq 5.1.3、rocketmq-tools 5.1.3 引入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-tools</artifactId&g…...
Docker 容器隔离关键技术:Seccomp
Docker 容器隔离关键技术:Seccomp 在 Docker 容器中,Seccomp(Secure Computing Mode) 是一种内核安全机制,用来限制容器内的程序可以调用哪些系统调用(Syscalls)。通过列清单的方式,…...