创建个人网站怎么做,平度建设局网站,网站二次开发合同,衡水网站开发报价python实现MC协议#xff08;SLMP 3E帧#xff09;的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样#xff0c;可以使用现成的pymodbus模块去实现。但是#xff0c;我们可以根据协议帧进行组包#xff0c;自己去实现帧的格式#xff0c;而这一切可以基于socket模…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帧格式的区别
4E帧的格式相对灵活可以用于更复杂的通信场景支持更多的命令和参数。 4、3E帧指令
详见三菱PLC官方文档。 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-Header50 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用的页脚。页脚在外部设备侧进行添加及发送。此外通常根据外部设备自动被添加。 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帧脚不显示。