【网络通讯】【通讯协议(一)】

【网络通讯】【SuperSocket实现(三)】 介绍使用SuperSocket实现网络通讯(作为客户端,使用FixedHeaderReceiveFilter协议实现)。 阅读详情

网络通讯系列

第四章 【网络通讯】【DotNetty实现(四)】
第三章 【网络通讯】【SuperSocket实现(三)】
第二章 【网络通讯】【Socket实现(二)】
第一章 【网络通讯】【通讯协议(一)】



前言

这里协定通讯协议。在自动化设备开发的场景下,因为项目时间紧,很多时候我们都是随便列一些字符串表示不同意思,就当是通讯协议了,但其实这样不好,一个是后期不好维护、后人不好接手,在开发过程中的变化不好追溯,同事也增加了莫名其妙BUG出现的概率,提高调试、维护成本。


一、基本规则

1. 以太网接口,TCP/IP协议。

网线要根据具体情况选择,如考虑传输速率、抗干扰性、柔性等,一般常用的内容通讯简单网线即可。
如无特殊要求的话,不要纠结,上位机通常作为TCP客户端。

2. 数据格式,使用16进制字节。

(在程序中也可以在应用层上再封装一层字符串的接口,装换字节后再通过通讯接口发送,或将接收到的内容转换字符串再输出)

注意:在16进制字节中,本协议规定,所有数据均按照小端格式传输,即16位、32位数据格式均先传输先低后高原则

3. 问答方式通讯,有问必有答。

正常通讯时,由上位机客户端下发指令到服务器,服务器收到指令,然后处理逻辑,最后需要回复上位机客户端处理结果,如无逻辑需要处理,也要回复信息表示收到(心跳指令除外)
上位机客户端发出的报文叫下行报文,服务器发出的报文叫上行报文。

二、数据链路层

1. TCP标准数据包格式

包长度固定标识命令码操作号总包数分包号数据长度数据内容校验码结束符固定标识
0x04PFDataCrc160x550x00
2字节1字节1字节1字节2字节2字节2字节N字节2字节1字节1字节

包长度:表示发送的有效数据长度(不包括本身),即从前面固定标识到包尾固定标识范围内的字节总数(包括固定标识),用来解析分隔收到的通讯内容。

命令码:标识当前指令的具体分类,如表示心跳命令可以用0xFF,表示视觉图形处理结果可以用0xFE,这个可以分两部分,一部分是公司内所有项目固定的命令,另一个部分根据项目具体的情况协定,但是不管怎么样,一定一定一定要输出定好后的协议文档存档。

操作号:从0开始,这个是每次发送命令后,下次发送新命令需要递增的,因为工业自动化设备的生产环境千奇百怪,有的设备干扰挺强的,容易丢包,这时候程序就可以通过操作号很容易处理了,程序可以一直发送同一条指令,操作号不变,直到收到回复后再发送下一条指令,操作号递增变化。

总包数、分包号:从1开始,这两个是一起使用的,因为发送一条指令不能太大,否则容易出现丢包等异常现象,我们协议规定一条指令最大1Kb即1024字节,那么某个场景下需要发送升级文件到下位机嵌入式板,可能就发不出了,这时候就可以用上分包功能,读文件内容并拆分多包分别发送,注意操作号应该是要一样的,因为在分包号已经区分开了。总包数、分包号分别使用2个字节,意味着一共可以发送最大的内容长度是:(1024-15)*65535=66124815字节,约为63MB大小,如果超出这个范围,需要结合命令码扩展。

数据长度:即数据内容的长度,用于解析数据内容

数据内容:即发送的具体内容,举个例子,如需要发送视觉的X、Y补偿数据给到机械手,X为0.01,Y为0.12,那么在协议上可以这样定,单位为0.001,X占一个字节,Y占一个字节,那么X为10即0x0A,Y为120即0x78,那么数据长度+数据内容就应该是:0x02 0x0A 0x78

校验码:表示从命令字到后数据内容最后一个数据的范围内所有数据的CRC16查表校验。
校验表:

    CRC16_Table = [
    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
    0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
    0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
    0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
    0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
    0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
    0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
    0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
    0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
    0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
    0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
    0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
    0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
    0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
    0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
    0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
    0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
    0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
    0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
    0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
    0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
    0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
    0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
    0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
    0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
    0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
    0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
    0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
    0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
    0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
    0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
];

总结

后面章节我们从代码上具体实现

网口通讯与串口通讯(内含代码) 网口通讯与串口通讯 阅读详情

相关推荐

Modbus 网络通讯协议

1、概述 通信协议详细地描述了温湿度传感器的输入和输出命令、信息和数据,以便第三方使用和开发。 1.1通信协议的作用     使信息和数据在上位机(主站)和温湿度传感器之间有效地传递,允许访问温湿度传感器的所有测量数据。    温湿度传感器可以实时采集现场温湿度的值,具备一个RS485通讯口,能满足小型温湿度监控系统的要求。其功能和技术指标参见用户手册。     温湿度传感器通信协议

拥抱变化 8919

.NET C# Socket产品性能测试、性能对比报告(包含SuperSocket、HPSocket.Net、TouchSocket)

因为我是TouchSocket 的作者,所以难免会对自家产品有诸多赞扬,但是实际上我知道,TouchSocket 还有很长的路要走,好的产品只有经过时间和更多人的考验,才能淘沙出金。所以希望本篇测评,能该您一个建议,也能给TouchSocket 一个机会。下次选择Socket的时候,可以考虑一下TouchSocket 哦。

若汝棋茗 的博客 1万+

YOLO详解

本文参考知乎 https://zhuanlan.zhihu.com/p/25236464 1. YOLO的创新点 YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。 从网络设计上,YOLO与two steps的目标检测方法如RCNN、Fast RCNN和Faster RCNN的区别如下: YOLO训练和检测均是在一个单独网...

UnknownPlayer的博客 9945

Netty和Tomcat的区别已经性能对比

一、Netty和Tomcat有什么区别? Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。有人说netty的性能就一定比tomcat性能高,其...

qq_36318234的博客 3万+

gd32 spi 发送&中断接收例程

【代码】gd32 spi 发送&中断接收例程。

weixin_43026921的博客 1651

纳米尺度仿真软件:GROMACS_(3).分子动力学模拟原理

分子动力学(MD)模拟是一种强大的计算方法,通过数值积分牛顿运动方程,追踪粒子在时间上的位置和速度变化,提供关于体系动力学行为的详细信息。选择合适的力场、设置初始条件、应用边界条件、控制温度和压力、选择合适的时间步长、计算能量和力,是 MD 模拟的关键步骤。通过这些步骤,可以对各种化学、生物和材料体系进行模拟和分析,揭示其结构、动力学和热力学性质。高级应用如反应路径模拟和蛋白质折叠研究,进一步扩展了 MD 模拟的应用范围。

kkchenjj的博客 1100

surging 集成SuperSocket预发布版本2.0

周末在家试着扩展SuperSocket,因为之前都是只支持.net framework, 后面出现支持.NET CORE 的SuperSocket 2.0 ,然后集成进来和dotnetty 做下对比,dotnetty 有多强,我压测可以支持20w/s, 然后客户提供的服务器,通过外网压测网关,把上行速度50MB带宽的网络跑满了,引擎主机CPU只是在15%左右,完全没有跑满。/// <param name="message">消息内容。/// <param name="message">消息内容。

weixin_55010563的博客 792

YOLOv8改进 | 注意力篇 | 一文带你改进GAM、CBAM、CA、ECA等通道注意力机制和多头注意力机制

官方论文地址:官方论文地址点击此处即可跳转官方代码地址:官方代码地址点击此处即可跳转GAM旨在通过设计一种机制,减少信息损失并放大全局维度互动特征,从而解决传统注意力机制在通道和空间两个维度上保留信息不足的问题。GAM采用了顺序的通道-空间注意力机制,并对子模块进行了重新设计。具体来说,通道注意力子模块使用3D排列来跨三个维度保留信息,并通过一个两层的MLP增强跨维度的通道-空间依赖性。

Snu77的博客 4万+

各网络通讯协议汇总(一)- TCP/IP

一、OSI(Open System Interconnection) 我们先认识OSI参考模型的七层中每层的含义、作用、可用协议和设备。 OSI的七层模型具体如下图 (一)、物理层(信号和介质) 含义:在物理信道(机械、电子、定时接口通信信道)上实现原始比特流的传输。 作用:定义了通讯接口及介质的标准,以及将上层封装的数据转换为比特流方式进行传输。 协议:IEEE 802.2、Ethernet ...

oyzy_Sean的篝火 1810

【ComfyUI】Wan2.2 动态服饰描述驱动换装图生视频

本文介绍了一个基于ComfyUI的Wan2.2动态服饰描述驱动换装工作流,能通过自然语言描述实现人物图像的自动换装并生成动态视频。该工作流结合多模态输入、语言模型驱动生成和视频合成技术,包含图像加载、文本解析(使用Qwen2.5大模型)、潜变量编码、视频帧采样与插值(RIFE VFI)等核心模块,最终通过VHS_VideoCombine输出流畅换装视频。整个流程无需手动干预,支持从"哥特风格"到"未来装甲"等多样化服饰风格的精确转换,通过文本节点控制50-100

Mr数据杨 2581

如何在不牺牲精度的前提下,把 YOLOv11 压缩到 Jetson 能跑的程度

YOLOv11 在目标检测任务中具备较强的准确性与多尺度鲁棒性,但其原始模型参数规模与计算量,对边缘设备来说并不友好,特别是面向 Jetson 这类资源受限的推理平台。本文基于实际部署场景,逐步拆解从结构层级改造、剪枝策略制定、量化导出流程,到 Jetson TensorRT 推理落地全过程。在不牺牲主干精度的前提下,最终实现 YOLOv11 推理延迟缩短 3 倍、模型体积压缩 4 倍、mAP 损失控制在 1% 以内的轻量化优化结果,并总结出一条可复用的工程路径,供工业界与边缘侧模型部署开发者参考。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2425

网络通讯协议TCP/IP、IOS、IoT——一图胜千言

adeyi的专栏 462

成功解决安装cuda的时候,下载的文件自动消失,并且出现An unknown error has occurred

成功解决安装cuda的时候,下载的文件自动消失,并且出现An unknown error has occurred. 目录 解决问题 解决思路 解决方法 解决问题 安装cuda的时候,下载的文件自动消失,并且出现An unknown error has occurred. 解决思路 发生未知错误。 解决方法 很可能是因为当前电脑下载的cuda版本不适合当前电脑GPU支持的cuda版本! 推荐文章:CV:Win1..

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 7523

科来软件网络通讯协议图2020版_Eclipse Kura物联网网关软件介绍(一)——概述...

本文是对Eclipse Kura物联网网关软件进行介绍的系列文章的第一篇。本文主要从总体上介绍Kura。1.物联网系统三大组件对于任何一个物联网系统,有三个重要的组件:设备:网关连接的末端物联网节点;网关:连接多个设备,并与物联网云平台双向通信;物联网云平台:连接分布式的大量网关和设备,并可基于其开发物联网应用程序。对于这三个组件,目前许多物联网公司都是自己投入资源,自己从头开发。但是实际上,这里...

weixin_39605840的博客 1106

《ATF(TF-A)专题精讲》目录——146篇,完整覆盖整个ATF的官方文档

本文摘要介绍了Trusted Firmware-A (TF-A)项目的技术文档体系。主要内容包括:项目概述、组件解析(如ARM RAS/RME/CCA等安全技术)、系统设计(启动流程、中断管理、信任链等)、开发指南(构建环境、移植策略)、性能分析、平台支持(涵盖NXP、Marvell、Xilinx等主流芯片厂商)、开发流程规范以及安全通告(CVE漏洞分析)。文档体系全面覆盖了ARM安全固件的技术实现、硬件适配和开发实践,为开发者提供了从理论到实践的完整参考。

Linux内核架构师 1112

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

matlab制作以太网数据接收上位机_西门子S7-1200PLC网络通信解析(以太网、串口通讯...)...

写在前面前面我们讲了PLC之间的通讯:S7-200/300/400/1200/1500全系列通信总结也解读了关于常用的通讯协议,接口,工业以太网等:最全整理工业通讯上的领域各种总线+协议+规范+接口—数据采集与控制技术解读PROFINET、Ethernet/IP等7种主流工业以太网同时还讲了网络中通讯的自动化金字塔:工业通讯网络层级全解读,解析工业网络的自动化金字塔今天单独聊一聊S7-1200的网...

weixin_39945789的博客 983

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

WebSocket客户端学习

1. WebSocket是一种网络通讯协议 参考文档:http://www.ruanyifeng.com/blog/2017/05/websocket.html https://github.com/mrniko/netty-socketio http://www.runoob.com/html/html5-websocket.html 转载于:https://www.cnblogs....

weixin_34411563的博客 89

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

9、为什么我的电脑在安装网卡后启动慢了很多,有什么解决办法?

9、为什么我的电脑在安装网卡后启动慢了很多,有什么解决办法? 可能原因有: 1、TCP/IP设置中设置了"自动获取IP地址",这样每次启动计算机时,计算机都会主动搜索当前网络中的DHCP服务器,所以计算机启动的速度会大大降低。解决的方法是选择"指定IP地址"; 2、安装了太多的网络通讯协议或服务,以致计算机启动时寻址和加载程序的时间加长。可以在本地连接的属性中将不必要的协议和服务删除,对局域

探索者 4072

Charles抓包(未完待续)

Charles是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。 Charles 主要的功能包括: 截取 Http 和 Https 网络封包。 支持重发网络请求,方便后端调试。...

annuanjiu2049的博客 129

python网络编程(Tcp/Ip网络通讯协议)

Python网络编程是指使用Python编程语言进行网络通信和网络应用开发的技术。Python提供了一系列的网络编程库和模块,可以方便地进行网络通信、创建网络服务器、编写网络应用等。Python的网络编程模块包括socket、select、asyncio等。其中,socket模块是Python最基础、最常用的网络编程模块,提供了对套接字编程的支持,可以创建TCP、UDP等类型的套接字,进行网络通信。select模块提供了对I/O多路复用的支持,可以同时监听多个套接字的I/O事件。

m0_65995252的博客 4726

所有网络通讯协议汇总及各自应用

常用网络协议及不常用网络协议的汇总及应用总结。

超哥量化的博客 1303

网络通讯协议分析

网络通讯协议 什么是网络通讯协议 网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。 简单来说就是通过底层硬件实现各个设备间的通讯 目标: 1.研究数据格式 2.研究协议的阅读和制定、使用 疑问: 1.传输层协议只有tcp和udp吗 答案:推测,两个协议的特性决定,只有可靠,不可靠的区分。(错误,看维基百科) 2.为什么tcp要有三次...

winsun的专栏 1044

网络通讯协议图

网址 网络通讯协议图

嵌入式 1115

网络通讯协议

网络通讯的基本要素   物理介质   通讯协议     物理层规定物理介质的相关规范 比如网线接口是什么样的 有几根线       问题:无法理解单纯的二进制数据     数据链路层       工作在这一层的是以太网       规定一组电信号有多少位       每一组电信号包含什么样的内容       每一台电脑必须拥有一个全球唯一的mac地址(可以有多个)  ...

dd345898084的博客 113

稳定高效的流式网络通讯协议:snet

稳定高效的流式网络通讯协议:snet 项目介绍 在移动终端应用中,网络连接的稳定性一直是开发者面临的挑战。为了解决这一问题,snet 项目应运而生。snet 是一个在 TCP/IP 协议之上构建的流式网络通讯协议,旨在提升长连接型应用在移动终端上的连接稳定性。通过支持重连和加密功能,snet 能够在网络不稳定的情况下,尽量保证用户体验的连贯性,同时减少对已有代码的修改。 项目技术分析 snet 协...

gitblog_01142的博客 954

轻松定义自己的网络通讯协议

目标主机的网络端点</param>/// 将对象发送到默认主机。/// <param name="iep">发送者的网络端点</param>/// <param name="obj">要发送的对象</param>/// <param name="obj">要发送的对象</param>/// <param name="obj">接收到的对象</param>/// <param name="port">端口

biyusr的专栏 594
上一篇: 分享WPF的UI开源库
下一篇: 【网络通讯】【Socket实现(二)】
Aflashstar
博客等级 码龄12年 205粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值