Modbus Poll/Slave 模拟器使用教程

2023-05-16

一、Modbus协议

ModBus官网是Modicon(Modicon被施耐德收购)公司为其PLC通讯而开发的一种通讯协议。

Q1-什么是PLC?

A1- 在工业生产过程中,大量的开关量顺序控制,它按照逻辑条件进行顺序动作,并按照逻辑关系进行连锁保护动作的控制,及大量离散量的数据采集。传统上,这些功能是通过气动或电气控制系统来实现的。 1968年美国GM(通用汽车)公司提出取代继电气控制装置的要求,第二年,美国数字公司研制出了基于集成电路和电子技术的控制装置,首次采用程序化的手段应用于电气控制,这就是第一代可编程序控制器,称Programmable Controller(PC)。

个人计算机(简称PC)发展起来后,为了方便,也为了反映可编程控制器的功能特点,可编程序控制器定名为Programmable Logic Controller(PLC)

PLC是个可编程序的控制器,是一个设备产品是一个实物。

Q2-通讯协议

A2- 协议是一种规范和约定,是一种通讯的语言。规定了通讯双方能够识别并使用的消息结构和数据格式。

modbus是工业上常用的通讯协议,和普通的软件开发中的通讯协议差不多。

总结: Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。可以理解你的PLC设备和我的PLC设备想通讯聊天,我们就得遵循这个协议来交流。

Modbus协议支持RTU、ASCII、TCP三种常见传输模式

上面三种模式,根据常用传输介质,Modbus可使用串口和网口(含光纤)方式进行传输,RTU、ASCII是属于串口通讯,TCP属于网口(以太网通讯)。

串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。

想仔细了解串口可以看看这个文章 读懂com/串口。

在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。

这里出现了一个 串口参数也就是设置合适的通讯参数,串口参数详细请看:

学习串口参数详解:波特率,数据位,停止位,奇偶校验位 (360doc.com)

波特率:串口通讯时候得速率
数据位:衡量通信中实际数据位的参数
停止位:用于表示单个包的最后一位
校验位:串口通信中一种简单的验错方式。4种:偶奇高低

在正式开始使用Modbus模拟器前,还需要了解一些概念:

1. C,C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数

2. 主从模式和对等模式

控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。

主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。

从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。

在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。

在消息位,Modbus协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。

我们要和控制器通讯,首先要求协议一样,串口参数一样。传输模式一样。

这里说说Mdobus三种传输模式:

通信帧被称为应用数据单元(Application Data Unit,ADU),它包含通信地址段、功能代码段、数据段和校验段。

其中,功能代码段和数据段组合称为协议数据单元(Protocol Data Unit,PDU)。

通信地址段:每个设备或者说从机都有个地址识别,我理解是MAC地址。唯一的。等于说主机发消息说hello 张三,那一堆从机收到消息。得和自身匹配才行。不然你不是张三,你应答个啥。

ADU = 地址域+PDU+校验
PDU = 功能码+数据

功能码:决定这一帧数据主要是干嘛的,就是我有个编码比如说数字1,表示我喊你把灯打开,数字2,告诉我灯的状态等等。类似于一个字典。占用一个字节,取值范围(1-255),其中128-255为保留,用于异常消息应答报文。1到127为功能代码编号,其中65到72和100到110为用户自定义编码。

数据:可有可没有,根据需求来

校验段:就是一种检验数据的手段,比如你给我说的我爱你,而我收到的信息是我恨你,这不就乱套了么。所以得校验你的数据是不是你要传的数据。

Modbus的功能码

 

串行通信中规定ADU的最大长度为256个字节,通信地址占用1个字节。校验2个字节,所以PDU的字节253 ,256-1-2=253字节。

以太网通信的TCP,因为要增加一个7个字节的MBAP(MODBUS Application Protocol)的报文头,所以他的ADU的长度=253+7=260 字节。tcp不需要校验。因为底层做了这份工作。底层的数据链路层已经做了冲突检测的工作,自然就可以同时传输不担心数据撞车。

RTU模式

对于上图,就是发送的消息要有间隔时间。不然你一股脑的发过来,谁分辨的清楚。

8bit包含的是2个4bit的十六进制。

ASCII模式

在该模式下,传输的帧中的数据的每一位只能是ascii码的0-9 a-f,因为rtu模式下一字节一个数据,也就是1字节0x00-0xff,所以在ascii模式下为了传送相同的数据,必须两个字节标识一个有效数据,也就是如下:

可以看到,找ascii模式下,不是依靠时间间隔判定帧起始了,而是依靠特定字符判断,结束也是按照特定字符判断,起始的判断是’:’字符,结束的判断是windows下的回车换行,数据的最大长度被扩容到了2*252,这样,两种传输模式能传输相同的数据量,但是ascii传输的更慢了。

TCP模式

TCP的报文帧 = MBAP+PDU

MBAP为报文头,长度为7字节,组成如下:

 ​​

MBAP报文头

其中MBAP报文头的组成为:

由上表可知,报文头为 7 个字节长。

PDU报文体

PDU的组成为功能码(一个字节)和数据(n个字节),其中功能码为一个字节,modbus定义的功能码有:

01 读线圈(coils)状态,读取单个或多个
02 读离散输入(discreteinputs)状态,读取单个或多个
03 读保持寄存器(holdingregisters),读取单个或多个
04 读输入寄存器(inputregisters),读取单个或多个
05 写单个线圈(coils)状态,单个写入
06 写单个保持寄存器(holdingregisters),单个写入
15 写多个线圈(coils),多个写入
16 写多个保持寄存器(holdingregisters),多个写入

另外,当响应报文的功能码最高位为1时(即:(function & 0x80) != 0),表示为异常响应,这时数据为一个字节的异常码,具体的异常码定义有:

01 功能码不能被从机识别
02 从机的单元标识符不正确
03 值不被从机接受
04 当从机试图执行请求的操作时,发生了不可恢复的错误。
05 从机已接受请求并正在处理,但需要很长时间。返回此响应是为了防止在主机中发生超时错误。主站可以在下一个轮询程序中发出一个完整的消息,以确定处理是否完成。
06 从站正在处理长时间命令。Master应该稍后重试。
07 从站不能执行程序功能。主站应该向从站请求诊断或错误信息。
08 从站在内存中检测到奇偶校验错误。主设备可以重试请求,但从设备上可能需要服务。
10 专门用于Modbus网关。表示配置错误的网关。
11 专用于Modbus网关的响应。当从站无法响应时发送。

PDU报文详情

1、读线圈

请求报文:

正常响应报文:

异常响应报文: 

2、读离散输入

请求报文:

正常响应报文: 

异常响应报文: 

3、读保持寄存器

请求报文:

正常响应报文:

异常响应报文:

4、读输入寄存器

请求报文:

正常响应报文:

异常响应报文: 

5、写单个线圈

请求报文:

正常响应报文:

异常响应报文:

6、写单个保持寄存器

请求报文:

正常响应报文:

异常响应报文: 

7、写多个线圈

请求报文:

正常响应报文:

异常响应报文: 

8、写多个保持寄存器

请求报文:

正常响应报文:

异常响应报文: 

练习题1:

请在从站0x01中,读取开始地址为0x0002的线圈数据,读0x0008位 解析: 00 01 00 00 00 06 01 01 00 02 00 08 

req格式: MBAP 功能码 起始地址H 起始地址L 数量H 数量L(共12字节)

对应下图:

这里都是16进制表示。为啥是16进制。1byte不是等于8bit么。计算机在进制转换的时候4bit和16进制转换简单。至于16进制前缀0x,不用过多言语了。

高八位和低八位:内存里,一个单元是一个字节,也就是8位。如果是16位的指令,就是同时操作连续的2个内存地址,将这连续的2个内存地址当成一个单位,所以就有高8位和低8位之分。

00 01 :2字节事务处理标识符。理解为序列号

00 00 :2字节协议标识符。TCP就是00 00

00 06 :2字节。表示后面的数据长度。后面不就是6个么

01: 设备地址。就是这题的0x01

01:功能码读线圈。没啥可说的。不熟悉就对照那个功能码去看。

00 02: 00是高位 02是低位。这里就是表示0x0002的线圈位置

00 08: 00是高位 08是低位。这里读0x0008位

针对这个req,对应做出res

解析res: 00 01 00 00 00 04 01 01 01 01

res格式:MBAP 功能码 数据长度 数据(一个地址的数据为1位)(共12字节)

对应下图:

前面基本一样,长度变成04.然后主要看数据。

数据01 01: 数据长度为0x01个字节,数据为0x01,第一个线圈为ON,其余为OFF

练习题2:

将从站中的一个输出写成ON或OFF,0xFF00请求输出为ON,0x000请求输出为OFF
req格式:MBAP 功能码 输出地址H 输出地址L 输出值H 输出值L(共12字节)。

如:将地址为0x0003的线圈设为ON

00 01 00 00 00 06 01 05 00 03 FF 00

二、Modbus Poll/Slave 模拟器使用

poll和slave概述

官网地址tools

poll:是非常流行的 Modbus 主站模拟器,用于测试和调试您的从站设备。支持 Modbus RTU/ASCII 和 Modbus TCP/IP(来自官网翻译)

slave:是一个从站模拟器,用于模拟 32 个从设备/地址区域。OLE 自动化支持,可轻松连接到 Excel 电子表格。

下载安装:首先我们需要下载这2个软件,官网即可下载。下载安装都很简单,软件属于收费软件。如果有条件请支持正版。因为我只是学习下,注册码可以移步:

(538条消息) Modbus模拟器亲测可用-其它文档类资源-CSDN文库

这里安装好会就会看见这2个图标了。

主从模拟器有了以后,这里我们还需要下载一个工具。

Virtual Serial Port Driver虚拟com端口工具,不下载后面玩不了,会给报错说端口没有定义的。

这个工具有个虚拟com端口的。软件使用也是傻瓜教程,直接add。

添加好虚拟端口以后。win10可以点击此电脑-属性-设备管理器 

打开软件之后主界面如下,出现红色No connection说明此时没有连接任何从设备。上面一行字代表当前通讯状态统计,Tx 代表发送帧数,Err代表错误帧,ID表示从站的ID号,F代表功能码,SR代表轮询周期,右下角显示IP地址和端口号。

点击Connection->Connect… 弹出注册码输入框,可以输入注册码,没有的话点击Regster later可以试用30天。

输入完注册码后,弹出Connection配置。

支持5种连接形式:

1 串行: 通过串行线路。RS232或RS485。可以使用USB串行转换器。

2 TCP/IP:如果要与TCP/IP网络通信,选择TCP/IP。在这种情况下,从站ID与TCP/IP中使用的单元ID相同。 端口号默认为502。如果连接失败,则尝试是否可以在命令提示符下ping设备。如果ping命令失败,轮询也将失败。

3 UDP/IP: 如果要与UDP/IP网络通信,请选择UDP/IP。这与TCP/IP相同,但改用连接较少的UDP协议。

通过TCP/IP的RTU/ASCII: 这是通过TCP/IP网络而不是串行线路发送的RTU或ASCII消息。 通过UDP/IP的RTU/ASCII: 这是通过UDP/IP网络而不是串行线路发送的RTU或ASCII消息。 连接类型3-5不是http://www.modbus.org指定的标准,是为了一些特殊情况下的应用。

连接成功connection时界面如下(需要使用从站仿真器或者真实设备)。

模拟串口通讯-RTU

演示用的版本poll(),slave(7.3.0),选择串口后可以配置串口信息。

串口配置一般默认就好,除非有特殊的要求,Mode处可以选择RTU和 ASCII类型。右侧可以设置响应超时时间,和轮训间隔。对于轮训间隔,一般设置为20ms,如果将此值设置为小于20毫秒,则不能保证响应和新请求之间的3.5个字符的时间间隔。这是因为Windows进程调度为每10到20毫秒切换一次任务。 如果在串行RS485网络中轮询多个从站,则不应将该值设置为低于20ms。这是为了确保3.5个字符的时间间隔。 在TCP/IP网络中,小于20毫秒是可以的。

点击高级Advanced...可以看到高级设置,这里一般不用去管这里稍微介绍一下

RTS切换 :RTS切换指定如果字节可用于传输,则RTS线将为高。发送所有缓冲的字节后,RTS线将变为低电平。 如果你的232/485转换器带自动方向切换功能,则可以使用它来切换方向。 尽量,应避免使用RTS控制的RS232/RS485转换器。在非实时操作系统(例如Windows和Linux)下,很难确定关闭变送器的确切时间。如果关闭它,字符可能仍位于FIFO或UART的发送寄存器中,尚未发送出去,这会导致数据丢失,但如果关闭时间太晚,则从站的消息将被破坏,主站将无法识别该消息。

DSR :DSR指定是否监视DSR(数据集就绪)信号以进行输出流控制。如果此成员为TRUE并且DSR关闭,则输出将被挂起,直到再次发送DSR。

CTS :CTS指定是否监视CTS(清除发送)信号以进行输出流控制。如果启用此复选框且CTS已关闭,则输出将暂停,直到再次发送CTS。

DTR:DTR指定在打开端口时是启用还是禁用DTR。

删除回显 如果你用的设备或RS232/RS485转换器会回显刚刚发送的字符,则启用该功能自动删除回显。

配置slave从机。打开软件。第一个界面。id=1表示从机地址。F=03表示协议功能码。03就是读保持寄存器。

选择工具栏的setup-slave definition(快捷键F8)。这里代表的意思已标注。配置好以后点击ok

选择工具栏的setup-Connection-connect,出现如下界面,配置好后点击ok。这里参数比较多,说明下:

connection: Serial port 表示传输方式是串行端口
Serial setting: 设置刚刚的虚拟端口
9600 Baud 波特率
8data bits 数据位
Parity 校验位
stop bit 停止位
mode :rtu

这里就是设置串口参数:

配置好以后点击ok,就会出现如下界面:

至此,从机的配置我们做完了,接着我们操作poll(主机)。同样的打开poll,出现如下界面:

tx =0 发送0次命令
err =0错误次数0,
id = 从机ID,
f = 功能号03,
sr= 轮询间隔1000ms 

选择工具栏的setup-slave definition(快捷键F8).这里就是设置要通讯的从机地址1,功能码。

寄存器地址数量和轮询时间。

 

选择工具栏的setup-Connection-connect。串口参数和传输模式得和从机一致。

端口是com1-com2。 

点击ok以后。就会发现连接成功。

为了方便调试,我们可以查看通讯数据帧。选择工具栏中的Display-Communication。

可以显示出当前发送命令和接受的数据。图下图就是收发的数据帧。

这里的数据帧含义解析:

Rx表示接收的数据帧
Tx表示发送的数据帧
000089这样的6位表示序列号
随便看一条数据
Tx:000090-01 03 00 00 00 0A C5 CD
01 从机地址
03 功能码
00 00 00 0A 数据
C5 CD 校验

我们可以在slave中配置下寄存器的值,比如我给随便配置个值68。

点击ok,我们在看看poll的数据帧,就会读到。 

以太网通讯-TCP 

和串口配置类似,只是多了服务器(从机)IP配置,端口号,网络连接超时设置,还可以切换IPv4和IPv6网络协议。

参数设置

点击Setup->Read/Write Definiton...可以对监视窗口监视的内容进行设置

点击之后可以设置从站地址,选择功能码,如03是读保持寄存器值,Address处填写寄存器地址,这里要注意右侧有地址寻址方法 40011->10,Quantity填写要读的寄存器数目

View 部分用于设置显示的行数,Cell中的地址显示等信息。

可配置Modbus的功能码定义如下:

常见的功能码和地址对应表:

设置假名,你可以直接双击alias列对应的单元格填写一些方便记忆的名字。

选择Setup->Excel Log ...可以设置Excel log,以方便数据处理。

选择Setup->Log … 可以设置Log的存储细节,存储速率,分割符,错误记录形式等。

测试功能:

Modbus poll 提供方便的测试辅助功能在Function菜单下,可以直接选择相应的功能发送命令给从机。

Modbus Poll还提供了文本发送调试工能,点击Functions->Test Center...进入测试中心,编辑完了命令之后可以直接点击Send发送。

显示设置

默认情况下Modbus Poll以Signed形式显示数据,这可以根据需要需要 点击Display菜单可以根据需要修改每个单元格的显示格式。

选择Communication...可以看到通信帧信息。

Modbus poll还提供了一个实时绘图页面来帮助用户观察数据接收情况,一般情况下不需要,调试时直接观察通信帧一般就够了。

Mobus Slave模拟从站(服务器),辅助主站开发调试。

打开Modbus Slave可以看到主界面。

图中ID为站号,F为响应主机的功能码。

在和主机进行连接之前先对连接进行设置点击Connection->Connection Setup,这里我选择了TCP/IP协议,串口协议类似。

对从机进行配置点击 Slave Definition...,设置好了点击OK。 

然后对仿真界面进行一些设置,可以在Alias列填写容易识别的名字,双击右侧单元格会弹出寄存器编辑窗口,可以填写你需要的值,勾选Auto increment可以另每个单元自动增长。

配置好了Slave仿真器后,可以点击connection,然后利用主机连接,开始仿真调试。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Modbus Poll/Slave 模拟器使用教程 的相关文章

  • Modbus Poll/Slave 模拟器使用教程

    一 Modbus协议 ModBus官网是Modicon xff08 Modicon被施耐德收购 xff09 公司为其PLC通讯而开发的一种通讯协议 Q1 什么是PLC xff1f A1 在工业生产过程中 xff0c 大量的开关量顺序控制 x
  • 详解 Modbus 通信协议(清晰易懂)

    文章目录 已剪辑自 https mp weixin qq com s dvo1l1GgJ2DtIHnPK5E1tA 本文总结关于 Modbus 相关的知识 xff0c 浅显易懂 xff0c 旨在对 Modbus 有一个很直观的了解 如有错误
  • I2C slave address

    1 同一 I2C bus device 之 I2C slaver address 不可一样 2 检查 这些 devices 是否可以变更 I2C slaver address hardware pin control or software
  • AM2322温湿度传感器(地址0XB8)---I2C总结(I2C_ModBus协议)

  • Modbus通信及数据存储读取

    1 存储区代号 代码号功能1区输入线圈0区输出线圈3区输入寄存器4区输出寄存器 2 功能码 代码功能0x01读取输出线圈0x02读取输入线圈0x03读取输出寄存器0x04读取输入寄存器0x05写入单个线圈0x06写入单个寄存器0x0F写入多
  • CRC-16 / MODBUS 校验计算方法

    CRC 16 MODBUS xff1a 1 xff09 CRC寄存器初始值为 FFFF xff1b 即16个字节全为1 xff1b 2 xff09 CRC 16 MODBUS的多项式A001H 1010 0000 0000 0001B H
  • linux中断&poll&selcet按键处理机制

    在上一篇linux按键中断处理中 xff0c 我们采用按键中断处理获取按键 xff0c 在read函数中阻塞读取 xff0c 当按键发生时 xff0c read自动解除阻塞 xff0c 实现应用层读取到相应的按键值 在上一节中如果没有按键到
  • C# Modbus CRC校验

    Modbus CRC校验 直接输入byte 输出bool public static bool CRC Check byte byteData bool Flag false byte CRC new byte 2 UInt16 wCrc
  • libmodbus官方手册中文翻译

    最近做libmodbus相关内容 因为中文没有libmodbus各个函数的详细解释 所以在此把要用的libmodbus的官方手册包括所有的函数都翻译整理一下 给自己和大家们学习 欢迎大家交流指正 手册原文http libmodbus org
  • libmodbus学习(一)之Modbus RTU-master

    一 Modbus 协议 Modbus簇主要有三种协议 Modbus RTU Modbus ASCII Modbus TCP 工控行业通常的设备组网看 三者应用的范围如下 三者模型区别如下 如上图所示 串行传输的物理层是RS 485或RS 2
  • Modbus驱动库—libmodbus驱动库的使用

    文章目录 为什么要使用驱动库 libmodbus简介 libmodbus常用函数 Windows平台libmodbus 使用 1 获取源代码 2 生成config h配置文件 3 编写测试代码 4 编译测试代码 Linux平台下libmod
  • STM32-modbus rtu 之主机程序

    一 STM32串口的发送与接收 考虑到modbus的使用场合大多为半双工而非全双工 所以 串口接收采用DMA 空闲中断 发送则直接发送 include serial h include string h serialbuf st seria
  • Modbus网关的 四种类型

    概述 Modbus网关是一种能够将Modubs TCP协议转化为Modbus RTU协议的设备 Modbus广泛应用于仪表和传感器领域 可以获得仪表和传感器的数据 但是传统的基于RS485的Modbus RTU 或ASCII 速度和扩展性较
  • 什么是“必须处理用户手势才能显示权限请求”。 Chrome Web Serial API 中出现错误消息?

    在编程方面 我是一个真正的初学者 我的目的是通过 COM 端口 RS485 控制具有 Google Chrome 中集成的 API 的设备 我尝试重现以下教程 https web dev serial 控制台中出现以下错误消息 未捕获 承诺
  • MFC 中的 libmodbus

    我正在尝试将 libmodbus 提供的 modbus 库集成到 Visual Studio 2010 中的自定义 MFC 项目中 到目前为止我所遵循的步骤如下 1 我在 Visual Studio 2010 中创建了项目 如下面的快照所示
  • Modbus 错误:[输入/输出] 未收到来自远程设备的响应

    我尝试从 Mac 笔记本电脑连接到 Modbus 设备 MR SI4 使用串行连接 使用 USB RS485 转换器 安装 到 dev cu SLAB USBtoUART 这是我的代码 import logging logging basi
  • 计算 Modbus RTU CRC 16

    我正在实现一个软件 可以通过串行方式读取和写入 Modbus RTU 协议中的数据 为此 我需要计算字节字符串末尾的两个 CRC 字节 但我无法执行此操作 在网上搜索 我发现两个函数似乎可以正确计算 CRC WORD CRC16 const
  • Qt modbus串口流控处理

    我正在通过串行端口使用 QModbusDevice 编写一个小程序 使用QModbusRtuSerialMaster类 并有一些问题 问题之一似乎是串口的流量控制不正确 检查串行端口嗅探器时 我发现工作客户端在发送请求时打开 RTS 然后关
  • 计算 modbus RTU 3.5 字符时间

    我是 Modbus 新手 正在使用 Modbus RTU 开发应用程序 我想知道如何找出RTU消息帧分离时间 在Modbus RTU规范中 它提到了3 5个字符时间 但是没有更多关于如何决定这个间隔的数据 计算分离时间的步骤是什么 看看第1
  • Modbus 错误:[无效消息] 收到的消息不完整,预计至少 2 个字节(收到 0 个字节)

    Problem pymodbus 主站 客户端可以向从站 服务器发送请求 从属 服务器准备好返回的东西 并等待主控 客户端来接收它们 尽管服务器 从站已准备就绪 但主站 客户端仅返回错误 Modbus 错误 输入 输出 Modbus 错误

随机推荐

  • UCOSIII学习-任务管理

    UCOSIII学习 任务管理 1 UCOSIII 任务组成2 UCOSIII 默认系统任务3 UCOSIII 任务状态4 任务堆栈1 任务堆栈的创建2 任务堆栈初始化 5 任务控制块1 任务控制块创建2 任务控制块初始化 6 任务就绪表1
  • ubuntu(Linux)配置允许远程登陆

    安装ubuntu后默认不可以以root方式登录系统 xff0c 需要做以下配置 1 使用sudo i 命令可以让用户切换到root用户 xff0c guo用户是安装ubuntu时配置的用户 xff0c 因人而异 xff1b 2 配置root
  • python带下划线的变量和函数

    参考文献 xff1a https blog csdn net AI S YE article details 44685139
  • ADD,COPY,ENTRYPOINT和cmd

    Dockerfile中有关信息 xff1a ADD与COPY区别 add 1 对压缩包进行解压2 可以在后面直接跟文件地址 copy xff1a 把本地的文件copy到容器里面 ENTRYPOINT与CMD区别 1 第一种解释 xff08
  • docker实例操作

    很多东西都是借鉴各位大神的 xff0c 也不知道具体是谁或是哪个链接 xff0c 很抱歉 两者同为目前版本中个人和小团队常用的服务级操作系统 xff0c 在线提供的软件库中可以很方便的安装到很多开源的软件及库 两者都使用bash作为基础sh
  • 三、FreeRTOS任务管理--常用函数

    任务的基本概念 FreeRTOS 的任务可认为是一系列独立任务的集合 每个任务在自己的环境中运行 在任何时刻 xff0c 只有一个任务得到运行 xff0c FreeRTOS 调度器决定运行哪个任务 调度器会不断的启动 停止每一个任务 xff
  • 七、FreeRTOS事件和常用函数接口

    基本概念 事件是一种实现任务间通信的机制 xff0c 主要用于实现多任务间的同步 xff0c 但事件通信只能是事件类型的通信 xff0c 无数据传输 与信号量不同的是 xff0c 它可以实现一对多 xff0c 多对多的同步 即一个任务可以等
  • PX4姿态估计源码分析

    写在前面 今天入坑PX4开始学习PX4代码 xff0c pixhawk硬件是可以支持PX4 ardupilot两套固件 我用的是1 6 0rc1版本代码 代码位置 xff1a Firmware1 6 0rc1 src modules att
  • PX4位置估计源码分析

    写在前面 源码版本 xff1a 1 6 0rc1 源码位置 xff1a Firmware 1 6 0rc1 src modules position estimator inav position estimator inav main c
  • ROS入门笔记(二):ROS安装与环境配置及卸载(重点)

    ROS入门笔记 xff08 二 xff09 xff1a ROS安装与环境配置及卸载 xff08 重点 xff09 文章目录 1 ROS安装步骤1 1 ROS版本1 2 确定Ubuntu版本号1 3 安装ROS1 3 1 Ubuntu初始环境
  • windows安装Java环境及Flightplot分析PX4飞行日志

    写在前面 用Flightplot分析PX4飞行日志 xff0c 不管是windows还是Ubuntu都需要安装对应的Java环境 xff08 我用的是win10家庭版 xff09 1 下载安装java环境 xff1a a 下载 点击地址进行
  • PX4_ECL_EKF代码分析1

    写在前面 源码版本 xff1a 1 6 0rc1 源码位置1 xff1a Firmware 1 6 0rc1 src modules ekf2 main cpp 源码位置2 xff1a Firmware 1 6 0rc1 src lib e
  • PX4_ECL_EKF代码分析2

    写在前面 源码版本 xff1a 1 6 0rc1 源码位置1 xff1a Firmware 1 6 0rc1 src modules ekf2 main cpp 源码位置2 xff1a Firmware 1 6 0rc1 src lib e
  • 基于RflySim平台的mahony(含磁罗盘)互补滤波在pixhawk仿真及实物实验(带实验数据)

    写在前面 本案例实验采用RflySim平台 xff0c 该平台可以高效快速编写代码 xff0c 使用simulink模型搭建 xff0c 可以见代码直接生成对应的C代码 xff0c 并一键将代码烧录Pixhawk中 xff0c 是一种快速开
  • ROS学习笔记(1)——创作工作空间/安装usb_cam来调用摄像头

    写在前面 ubuntu版本 xff1a 20 04 ros版本 xff1a noetic 工作空间 工作空间 workspace 是一个存放工程开发相关的文件夹 xff0c 一般包含 xff1a src xff1a 代码空间 xff0c 存
  • ROS学习笔记(2)——roslaunch turtle_tf turtle_tf_demo.launch报错问题(Ubuntu20.04python2与python3版本切换)

    写在前面 Ubuntu版本 xff1a 20 04 ROS版本 xff1a noetic 解决运行roslaunch turtle tf turtle tf demo launch文件后报错问题 问题说明 xff1a 此问题最终是由于pyt
  • ROS学习笔记(3)——通过脚本控制rviz中创建的机器人运动

    写在前面 需求 xff1a rviz中创建的机器人模型 xff0c 通过运行脚本方式控制其运动 ros版本 kinetic noetic 两个版本亲测都可以 整体效果 思路 机器人描述文件xacro xff0c 通过joint 关节 来控制
  • ROS学习笔记(4)——RVIZ中显示双足机器人行走

    写在前面 ros版本 kinetic noetic 亲测可行 结合前面笔记 3 需求 xff1a 在rviz中实现双足机器人行走 效果展示 实现方式 rviz中机器人运动是通过控制关节运动的角度 xff0c 来改变机器人在rviz中的显示
  • C 语言中 void* 详解及应用

    void 在英文中作为名词的解释为 空虚 空间 空隙 xff0c 而在 C 语言中 xff0c void 被翻译为 34 无类型 34 xff0c 相应的void 为 34 无类型指针 34 void 似乎只有 34 注释 34 和限制程序
  • Modbus Poll/Slave 模拟器使用教程

    一 Modbus协议 ModBus官网是Modicon xff08 Modicon被施耐德收购 xff09 公司为其PLC通讯而开发的一种通讯协议 Q1 什么是PLC xff1f A1 在工业生产过程中 xff0c 大量的开关量顺序控制 x