python实现MC协议(SLMP 3E帧)的TCP服务端

news2024/12/28 2:32:04

python实现MC协议(SLMP 3E帧)的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样,可以使用现成的pymodbus模块去实现。但是,我们可以根据协议帧进行组包,自己去实现帧的格式,而这一切可以基于socket模块。

一、了解MC协议

参考文档:三菱PLC之SLMP协议报文说明 - 知乎 (zhihu.com)

1、MC协议与SLMP协议

查阅三菱PLC官方文档,发现SLMP协议的3E帧,其实就是MC协议的3E帧,因此可通用。

2、3E/4E帧报文

查阅三菱PLC官方文档,发现3E/4E帧报文格式如下图所示

3、SLMP的3E帧与4E帧格式的区别

SLMP(Seamless Message Protocol)的3E帧和4E帧是两种不同的帧格式,用于在三菱PLC(Programmable Logic Controller)和外部设备之间进行通信。它们的主要区别在于帧头和帧体的格式。

(1)3E帧格式:

SLMP的3E帧格式由三个部分组成:帧头、命令数据和CRC校验。

帧头(Header):3个字节,包括起始字节(STX,0x02)和两个字节的长度信息(高字节在前)。

命令数据(Command Data):包含命令码和命令参数等信息。

CRC校验(Cyclic Redundancy Check):2个字节,用于数据完整性检查。

3E帧的格式相对简单,适用于一些基本的通信需求

(2)4E帧格式:

4E帧格式更加复杂,可以包含更多的信息,并支持更多的功能。它包含以下几个部分:帧头、信息头、数据区和CRC校验。

帧头(Header):1个字节,包括起始字节(0x80)。

信息头(Information Header):4个字节,包括命令码、子命令码和信息长度等。

数据区(Data Area):包含具体的命令数据,根据命令的不同而变化。

CRC校验(Cyclic Redundancy Check):2个字节,用于数据完整性检查。

4E帧的格式相对灵活,可以用于更复杂的通信场景,支持更多的命令和参数。

4、3E帧指令

5、3E帧请求报文

SLMP 3E帧:50 00 00 FF FF 03 00 0C 00 10 00 01 04 00 00 00 00 00 A8 05 00

(1)帧头(Header)50,表示这是一个3E帧。

(2)副帧头(Sub-Header)00 00 FF FF,这4个字节表示帧的长度(65535字节,包含副帧头自身)。一般来说,这个部分是帧长度的表示,但在实际3E帧中,这个字段通常是固定的,表示无限长度。

(3)请求目标网络编号03,表示请求的目标网络编号。

(4)请求目标站号00,表示请求的目标站号。

(5)请求目标模块T/0编号0C,表示请求的目标模块T/0编号。

(6)请求目标多点站号00,表示请求的目标多点站号。

(7)请求数据长10,表示请求数据的长度(16字节,即后续的数据部分的长度)。

(8)监视定时器00 01,表示监视定时器的值。

(9)请求数据04 00 00 00 00 00,这6个字节表示具体的请求数据。

04:命令码,表示读取请求。00 00:子命令码(通常为0)。00 00 00 00:数据部分(通常为0,如果有具体的数据,会在这里体现)。

(10)CRC校验A8 05,CRC校验的结果。

(11)帧脚00,表示帧的结束。

6、3E帧响应报文

SLMP 3E帧:D0 00 00 FF FF 03 00 0C 00 00 00 73 00 00 00 00 00 00 00 00 00

(1)帧头:D0(命令码的响应部分,表示读取响应)。

(2)副帧头:00 00(子命令码的响应部分,通常为0,与请求中保持一致)。

(3)请求目标网络编号:00 FF FF(这3个字节在响应中不再表示请求目标,可以忽略)。

(4)请求目标站号:03(与请求中的目标站号保持一致,表示网络中的设备地址)。

(5)请求目标模块T/0编号:00(与请求中的模块T/0编号保持一致)。

(6)请求目标多点站号:0C(与请求中的多点站号保持一致,通常为0C)。

(7)响应数据长:00 00(表示后续数据的长度,这里为0,表示没有后续数据)。

(8)结束代码:73(通常用来表示操作是否成功或者特定的响应状态码,具体含义需要查阅通信协议文档)。

(9)响应数据:00 00 00 00 00 00 00 00 00 00(这10个字节表示具体的响应数据,可能是传感器的状态、设备的值等具体信息,需要根据通信协议解析)。

(10)帧脚:00 00(表示帧结束,通常为0,与请求中保持一致)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1156032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何快速定制个性化外观验证码?

验证码作为人机交互界面经常出现的关键要素,是身份核验、防范风险、数据反爬的重要组成部分,广泛应用网站、App上,在注册、登录、交易、交互等各类场景中发挥着巨大作用,具有真人识别、身份核验的功能,在保障账户安全方…

【vtk学习笔记2】vtk编程中的基本对象与可视化管线

一、VTK编程中的基本对象 数据可视化一般需要一个数据源,可以来说具体的算法,如有限元、边界元等,也可以是测量数据,如医学检测数据等。这些基础数据经过变换处理,变成计算机图形流水线支持的数据,最后显示…

C语言编程之排列组合问题

1.动态取球 在生活中我们经常会遇到一个这样的问题,从N个球中随机取K个(N>K),问有多少总取法。这是我们数学中的排列组合,通过排列组合可计算方法为:C(N,K);   例如一个袋子中有6个球为(1,2,3,4,5,6),从袋子中一次…

Python基础介绍 —— 使用pytest进行测试!

Pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。 Pytest 是一个成熟的全功能的 Python 测试工具,可以帮助你写出更好的程序,让我们很方便…

MINIO 对象存储服务

MINIO 官网下载地址: 注:需要下载 MINIO SERVER(服务端) 和 MINIO CLIENT(客户端)两个文件 WINDOWS版本下载地址:https://min.io/download#/windows LINUX版本下载地址:https://mi…

数据库 索引

Mysql的索引 事务 存储引擎 索引 概念 什么是索引:索引是一个排序的列表,列表当中存储的是所有的值和包含这个值的数据所在行的物理地址 索引的作用 加快查询作用,这是他主要的一个作用 利用索引数据库可以快速定位,大大加快…

AERMOD模型、WRF/Chem模式、CMAQ、Smoke模式及EDGAR/MEIC清单制作

推荐一些大气环境、气象领域常用的一些模型软件免费教程,包含5大方向,不容错过!评论区联系小编领取 >>>> WRF模式及在地学多领域应用(必学) 1、WRF模式基础 (初始和边界场、气象预报流程、数…

毫米波雷达3-三个FFT(距离,速度,角度)

文章目录 快慢时间维度空间维度FFT原理useful links快慢时间维度 由于电磁波传播的速度非常之快,导致了回波间隔比发射间隔小了好几个数量级 下图中,每一行(快时间维)对应的是一个脉冲回波的连续采样,在快时间维度,即使一个移动的物体,我们也可以看作不动,那么对于快…

代码随想录day50|198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

198.打家劫舍 (中等) leetcode题目链接:198. 打家劫舍 - 力扣(LeetCode) 文章讲解:代码随想录 (programmercarl.com) 视频讲解:动态规划,偷不偷这个房间呢?| LeetCode…

前端css介绍

CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。 CSS语法 CSS实例 每个CSS样式由两个组成部分:选择器和…

C语言 DAY07:预编译,宏,选择性编译,库(静态库,动态库)

声明与定义分离 声明:将声明单独封装成一个以.h为后缀名的头文件 定义:将定义的变量,函数,数组所在的源文件单独封装成一个.c文件。其实就是在源文件基础上将定义过的所有东西的声明分离出去就是了。 注意:1.声明的…

【MATLAB源码-第63期】基于matlab的DCSK(差分混沌移位键控调制)系统误码率仿真。

MATLAB 2022a 1、算法描述 DCSK(Differential Chaos Shift Keying)是一种差分混沌移位键控调制方式,常用于无线通信系统。其调制和解调的基本流程如下: 1. DCSK调制 1.1 生成混沌序列 - 初始条件:选择一个混沌映射&a…

[论文笔记]RetroMAE

引言 RetroMAE,中文题目为 通过掩码自编码器预训练面向检索的语言模型。 尽管现在已经在许多重要的自然语言处理任务上进行了预训练,但对于密集检索来说,仍然需要探索有效的预训练策略。 本篇工作,作者提出RetroMAE,一个新的基于掩码自编码器(Masked Auto-Encoder,MAE)…

rate-based 借贷式拥塞控制算法

有没有一种 rate-based 算法可以不测量 delivery rate,当然有!直接套在 AIMD 上就行,虽然套在 bbr 上没什么不可。 传统 AIMD 拥塞控制代价很大,代价源自两点,首先,AI 有填 buffer 的趋势,其次…

四十二、【进阶】

目录 1、覆盖索引 2、案例分析 (1)select * 查询 (2)使用字段查询 (3)性能差异原因 3、分析 (1)主键id查询 (2)覆盖索引 1、覆盖索引 简单点说&#x…

【MySQL索引与优化篇】索引优化与查询优化

索引优化与查询优化 文章目录 索引优化与查询优化1. 概述2. 索引失效案例3. 关联查询优化3.1 Join语句原理3.2 Simple Nested-Loop Join(简单嵌套循环连接)3.3 Index Nested-Loop Join(索引嵌套循环连接)3.4 Block Nested-Loop Jo…

发布不到一月的4+经典单细胞+预后模型生信思路,可复现可升级

今天给同学们分享一篇单细胞预后模型的生信文章“Integrating single-cell and bulk RNA sequencing to predict prognosis and immunotherapy response in prostate cancer”,这篇文章于2023年9月20日发表在Scientific Reports期刊上,影响因子为4.6。 前…

数藏平台纷纷停运 用户手中数字藏品成了一张图

2021年8月2日,腾讯上线幻核数藏平台,随后QQ音乐、腾讯动漫、腾讯视频、腾讯新闻、起点读书等腾讯系应用都植入了数字藏品板块,强势进入国内数藏市场。国内数藏市场也迎来了起飞时刻。2022年底,数藏市场进入寒冬,曾经人…

数字展厅搭建平台要具备哪些功能,如何选择数字展厅搭建平台

引言: 数字展厅搭建平什台是现代营销中不可或缺的重要工具之一。它可以帮助企业打造个性化、多媒体、互动性强的展示空间,吸引、引导和留住目标用户。在选择数字展厅搭建平台时,我们需要考虑各方面的功能和性能,以确保能够满足企业的需求并取…

建筑模板材质-不同材质建筑模板优缺点分析

建筑模板是施工过程中不可或缺的重要材料,不同材质的建筑模板各有其优缺点。在众多材质中,广西桉木芯建筑模板以其独特的性能和优势备受青睐,下面将从不同材质的建筑模板入手,重点推荐广西桉木芯建筑模板。一、胶合板建筑模板胶合…