通讯笔录嗯

本文详细介绍了如何在Windows10中建立两台电脑的局域网连接,并教授了Modbus通讯协议的基础知识,包括地址、功能码、数据解析和CRC16校验,以及示例操作和注意事项。
摘要由CSDN通过智能技术生成

1. 如何建立两台电脑的局域网(win10)

2. Modbus通讯协议

1. 如何建立两台电脑的局域网(win10)

情景1:例如B电脑想访问A电脑的文件

步骤1:关闭防火墙

步骤2:建立文件共享设置

步骤3: 在命令控制器上输入gpedit.msc进入本地计算机安全策略

步骤四:到控制面板

步骤6:

设置IP, 在cmd那里访问 \192.168.1.1    rdpublic

2. Modbus通讯协议

通信协议就是把16进制字符串转成字节流发送出去,然后接受的字节流翻译成认识的浮点数等等。

举个例子:  

00 06 01 01 00 02 00 08

这串字符是可以读取线圈的协议。两个符号组合一起是两个16进制字符串,例如06(0x0和0x6)就是两个16进制0x06。 两个16进制就是1个字节,8个bit。那么06就代表一个字节。PLC是一个寄存器两个字节,储存的方式是高字节在前,低字节在后,这跟我们的数组相反,数组是地位在前,高位在后。 

        ushort占两个字节, 用字节数组可以表示为  new byte[]{低字节,高字节}, 而放到寄存器里面,就是{高字节,低字节}

      所以翻译协议的时候,尤其是单个寄存器,一定对高低字节进行换位置。

Mobus的测试软件是Modbus Slave, 注意站号

1、报文结构

通信模式是主/从方式,也即主请求、从应答的方式。无论主请求报文,还是从应答报文其结构都是如下图这样的

2.png

2、地址(Address)域

信息帧地址域(信息地址)在帧的开始部分,由8位组成,有效的从机设备地址范围0-247(十进制),各从机设备的寻址范围为1-247。主机把从机地址放入信息帧的地址区,并向从机寻址。从机响应时,把自己的地址放入响应信息的地址区,让主机识别已作出响应的从机地址。

  • 地址0:广播地址,所有的从设备必须处理广播报文。

  • 1-247:从设备地址,主设备是没有地址的,这一点需要注意。

  • 248-255:保留地址

3、功能(Function)域

常用的功能码

代码

名称

作用

01

读取线圈状态

取得一组逻辑线圈的当前状态(ON/OFF)

02

读取输入状态

取得一组开关输入的当前状态(ON/OFF)

03

读取保持寄存器

在一个或多个保持寄存器中取得当前的二进制值

04

读取输入寄存器

在一个或多个输入寄存器中取得当前的二进制值

05

强置单线圈

强置一个逻辑线圈的通断状态

06

预置单寄存器

放置一个特定的二进制值到一个单寄存器中

07

读取异常状态

取得8个内部线圈的通断状态

15

强置多线圈

强置一串连续逻辑线圈的通断

16

预置多寄存器

放置一系列特定的二进制值到一系列多寄存器中

17

报告从机标识

可使主机判断编址从机的类型及该从机运行指示灯的状态

4、数据域(在这里我们以功能码03,06,16为例)

功能码03  数据解析

主机的命令格式为:01 03 00 04 00 02 85 CA

从机回复的数据格式为:01 03 04 00 00 00 00 FA 33

数据解析如下图

3.png

功能码06 数据解析

06功能码是用来写从机寄存器的内容的,比如主机向改写从机其中一个寄存器的数据,就可以通过06功能码来实现。

报文样例:01 06 00 00 00 0A 09 CD

01:从机地址

06:功能码

00 00:地址

00 0A:数据,因为写一个寄存器,所以不用寄存器个数

09 CD:校验码

功能码16 数据解析

报文样例:01 10 11 99 00 03 06  00 0A 00 00 00 32 79 3A

01:从机地址

10:功能码,注意10为十六进制,十进制为16

11 99:起始地址 高位在前,转化为10进制为4505

00 03:寄存器个数  3个

06:要写的数据字节个数据

00 0A 00 00 00 32:数据,一个寄存器2个字节 

79 3A:校验码

5、CRC16数据校验

16位循环冗余校验(从数据开始到数据结束),作用是检测数据的完整性,相关的计算方法请访问:C# CRC16校验码计算方法

报表样例:01 10 11 99 00 03 06  00 0A 00 00 00 32 79 3A

计算的是:01 10 11 99 00 03 06  00 0A 00 00 00 32

计算的结果是:79 3A(校验码)

ModBus TCP/RTU 报文解析

Modbus Tcp

https://gitee.com/szwzhsz/Modbus-TCP-client-server-DotNetty.?_from=gitee_search

固定协议格式

事务标识(2byte):00 00,可变(递增)
协议标识(2byte):00 00,固定
长度(2byte):00 06,可变
单位标识(1byte):01,固定
功能码(1byte):01,可变
数据(nbyte):可变

功能码:01 读取输出线圈
单个读取 从00100开始,读取1个bool
发送:00 00 00 00 00 06 01 01 00 63 00 01 (01:功能码(1byte);00 63:起始地址(2byte);00 01:读取长度(2byte))
返回:00 00 00 00 00 04 01 01 01 01 (01:功能码(1byte);01:字节长度(1byte);01;数据:01)-- 00100: 开
返回:00 00 00 00 00 04 01 01 01 00  -- 00100: 关

批量读取 从00100开始,批量读取10个bool
发送:00 01 00 00 00 06 01 01 00 63 00 0A (十六进制转二进制,再倒序存储)
返回:00 01 00 00 00 05 01 01 02 00 00 (全关) 0000 0000
返回:00 01 00 00 00 05 01 01 02 01 00 (100) 0000 0001
返回:00 01 00 00 00 05 01 01 02 03 00 (100,101开) 0000 0011

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值