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

这篇具有很好参考价值的文章主要介绍了python实现MC协议(SLMP 3E帧)的TCP服务端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一、了解MC协议

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

1、MC协议与SLMP协议

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

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

2、3E/4E帧报文

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

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

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

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

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

4、3E帧指令

详见三菱PLC官方文档。

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

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

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)不显示,因为是TCP/IP及UDP/IP用的帧头。帧头在外部设备侧进行添加及发送。此外,通常根据外部设备自动被添加。

(2)副帧头(Sub-Header)50 00固定值,占用4字节,没什么好说的。

(3)请求目标网络编号00,占用2字节,表示请求的目标网络编号。

(4)请求目标站号FF,占用2字节,表示请求的目标站号。

(5)请求目标模块T/0编号:FF 03,占用4字节,表示请求的目标模块T/0编号。

(6)请求目标多点站号00,占用2字节,表示请求的目标多点站号。

(7)请求数据长0C 00,占用4字节,表示请求数据的长度(16字节,即后续的数据部分的长度)。

(8)监视定时器10 00,占用4字节,表示监视定时器的值。

(9)请求数据:01 04 00 00 00 00 00 A8 05 00,这20个字节表示具体的请求数据,但没有数据本身。

01 04:命令码,占用4字节,表示读取请求。

00 00:子命令码,占用4字节(通常为0)。

00 :固定值,占用2字节

00 00 A8 05 00:系统区域,占用10字节

(10)帧脚不显示,因为是TCP/IP及UDP/IP用的页脚。页脚在外部设备侧进行添加及发送。此外,通常根据外部设备自动被添加。

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

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

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

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)帧头:不显示。

(2)副帧头:D0 00。

(3)请求目标网络编号:00。

(4)请求目标站号:FF。

(5)请求目标模块T/0编号:FF 03。

(6)请求目标多点站号:00。

(7)响应数据长:0C 00。

(8)结束代码:00 00 存储指令处理结果,正常结束时存储0。异常结束时存储访问目标的出错代码。

(9)响应数据:73 00 00 00 00 00 00 00 00 00,正常结束时,存储对于指令的读取数据等。 常结束时,存储出错响应站的信息、与请求报文相同的指令及子指令、异常结束时的响应数据(通过指令定义的情况下)

(10)帧脚:不显示。文章来源地址https://www.toymoban.com/news/detail-735814.html

到了这里,关于python实现MC协议(SLMP 3E帧)的TCP服务端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PLC通信协议【三菱Q系列】MC协议

    MC协议的目的是开放PLC内部寄存器给外部设备,实现外部设备和PLC的数据交互。简单说就是允许外部设备通过MC协议来读/写PLC里面的寄存器 通讯方式有485和TCP/IP两种,本次只介绍TCP/IP下的配置和通讯方法,其实两者一样没啥大区别。 采用一发一收模式,外部设备主动发起通讯

    2024年02月07日
    浏览(42)
  • Linux Ubuntu搭建我的世界Minecraft服务器实现好友远程联机MC游戏

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 Linux使用MCSM面板搭建我的世界私服相对比windwos简单,也是目前比较流行的设置方式,在Linux中安装MCSManger也是非常容易,一键指令脚本即可安装,本篇教程演示在Ubunt

    2024年01月20日
    浏览(52)
  • FPGA实现 TCP/IP 协议栈 服务器 纯VHDL代码编写 提供4套vivado工程源码和技术支持

    FPGA实现 TCP/IP 协议栈 服务器 纯VHDL代码编写 提供4套vivado工程源码和技术支持 没玩过TCP网络通信都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前网上fpga实现udp协议的源码满天飞,我这里也有不少,但用FPGA纯源码实现TCP的项目却很少,能上

    2024年02月04日
    浏览(48)
  • [TCP协议]基于TCP协议的字典服务器

    目录 1.TCP协议简介: 2.TCP协议在Java中封装的类以及方法 3.字典服务器 3.1服务器代码: 3.2客户端代码: TCP协议是一种有连接,面向字节流,全双工,可靠的网络通信协议 .它相对于UDP协议来说有以下几点好处: 1.它是可靠传输,相比于UDP协议,传输的数据更加可靠.当然这里的可靠是相对的

    2024年02月22日
    浏览(43)
  • python实现TCP服务端程序开发(含源码)

    开发介绍 TCP 网络应用程序开发分为: TCP 客户端程序开发 TCP 服务端程序开发 说明: 客户端程序是指运行在 用户设备上的程序 服务端程序是指运行在 服务器设备上的程序 ,专门为客户端提供数据服务。   TCP开发流程示意图     TCP服务端开发流程: 创建服务端套接字对象:

    2024年02月04日
    浏览(32)
  • FPGA实现10G万兆网TCP/IP 协议栈,纯VHDL代码编写,提供服务器和客户端2套工程源码和技术支持

    目前网上fpga实现udp协议的源码满天飞,我这里也有不少,但用FPGA纯源码实现TCP的项目却很少,能上板调试跑通的项目更是少之又少,甚至可以说是凤毛菱角,但很不巧,本人这儿就有一个; 本设采用纯VHDL实现了10G万兆网TCP/IP协议栈,该协议栈分为TCP服务器核客户端,没有使

    2024年02月09日
    浏览(63)
  • Minecraft开服教程:我的世界Java版服务器搭建并结合cpolar内网穿透实现MC远程联机

    本教程主要介绍如何在Linux Ubuntu系统中使用MCSManager面板搭建Minecraft服务器,并结合cpolar内网穿透工具,实现在外远程联机我的世界游戏,无需公网IP,无需公网服务器,使用本地部署的服务器即可。 Linux使用MCSM面板搭建我的世界私服相对比windwos简单,也是目前比较流行的设

    2024年01月23日
    浏览(55)
  • 03 python网络应用实战(三)tcp服务端设计实现

    创建 socket 对象 绑定IP 和端口 设置监听 阻塞等待客户端的链接 新的 socket 收信息 新的 socket 发信息 关闭   通常服务器在启动的时候都会绑定一个众所周知的地址(如ip地址+端口号), 用于提供服务 ,客户就可以通过它来接连服务器;而 客户端就不用指定,有系统自动分配

    2024年02月07日
    浏览(30)
  • python网络编程:通过socket实现TCP客户端和服务端

    目录 写在开头 socket服务端(基础) socket客户端(基础) 服务端实现(可连接多个客户端)  客户端实现 数据收发效果   近期可能会用python实现一些网络安全工具,涉及到许多关于网络的知识,逃不过的就是最基本的socket。本文将介绍如何通过python自带的socket库实现TCP客户

    2024年03月21日
    浏览(54)
  • 用Rust设计一个并发的Web服务:常用Rust库如Tokio、Hyper等,基于TCP/IP协议栈,实现了一个简单的并发Web服务器,并结合具体的代码讲解如何编写并发Web服务器的程序

    作者:禅与计算机程序设计艺术 1994年,互联网泡沫破裂,一批优秀的程序员、工程师纷纷加入到web开发领域。而其中的Rust语言却备受瞩目,它是一种现代系统编程语言,专注于安全和并发。因此,Rust在当下成为最流行的编程语言之一,很多框架也开始使用Rust重构,这使得

    2024年02月06日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包