modbus tcp数据报文结构详解

modbus tcp数据报文结构

请求:00 00 00 00 00 06 09 03 00 00 00 01

响应:00 00 00 00 00 05 09 03 02 12 34

  一次modbus tcp读取保持寄存器的通信分析(省略了ip/tcp头):从左向右分析该数据报文:

请求:

00 00为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文;

00 00表示协议标识符,00 00为modbus协议;

00 06为数据长度,用来指示接下来数据的长度,单位字节;

09为设备地址,用以标识连接在串行线或者网络上的远程服务端的地址。以上七个字节也被称为modbus报文头;

03为功能码,此时代码03为读取保持寄存器数据;

00 00为起始地址;

00 01为寄存器数量,(word数量)。

响应:

00 00为此次通信事务处理标识符,应答报文要求与先前对应的请求保持一致;

00 00为协议标识符,与先前对应的请求保持一致;

00 05为数据长度,用来指示接下来数据的长度,单位字节;

09为设备地址,应答报文要求与先前对应的请求保持一致;

03为功能码,正常情况下应答报文要求与先前对应的请求保持一致,如果出错则返回80h+先前的功能码;

02指示接下来数据的字节长度;

12 34为被读取的保持寄存器中的数据值,即要求被读取的地址为00 00的保持寄存器中的数值为1234h。

IM.X6ULL 修改开机进度条

1. 下载 psplash:git clone git://git.yoctoproject.org/psplash     会下载到当前目录的psplash文件夹中
(若没有git,需要安装	apt-get install git)

2、如果既更改开机动画,也需要logo连续显示,需要先切换分支再参考上述连接进行修改:
在完成第一步后,要进入psplash文件夹,
并切换分支: cd psplash git reset --hard 88343ad23c90fa1dd8d79ac0d784a691aa0c6d2b
vi psplash-config.h
把第23行//屏蔽掉
把第26行的0改成1
然后再进行上述连接中步骤2和之后的操作

3. 将图片转换成代码文件:./make-image-header.sh logo.png POKY	其中logo.png是你自己的启动图片
(可能需要安装的库	apt-get install build-essential libncurses5-dev 
		apt-get install autoconf
		apt-get install libtool
		apt-get install gettext
		apt-get install libglib2.0-dev
		apt-get install libgtk2.0-dev	)

4. 上面的命令会生成一个logo-img.h文件
找到psplash.c文件并打开
注释掉原来的头文件
添加引用你生成的头文件

#include "psplash.h"
#include "psplash-config.h"
#include "psplash-colors.h"
#include "logo-img.h"  //更换这里的名称
#include "psplash-bar-img.h"
#include "radeon-font.h"

5. 配置交叉编译库:
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

6.制作 autogen.sh 脚本,用于生成 Makefile,如下
#!/bin/bash
aclocal
autoheader
automake --add-missing
autoconf

赋予可执行权限
7.生成Makefile:
./autogen.sh 
./configure --host=arm-linux CC=arm-linux-gnueabihf-gcc

8. 执行 make:生成 psplash 与 psplash-write

9. 将 psplash 与 psplash-write 拷贝到根文件系统/usr/bin/目录下。

10. psplash.sh 脚本在根文件系统/etc/init.d 中,此项已经存在。

11. psplash.sh 的链接在根文件系统/etc/rcS.d/目录下,用于开机启动。

如果不想显示开机动画,可以编辑/etc/init.d/psplash.sh,注释最后一行

12.最后sync保存改动