三菱PLC之SLMP协议报文说明

2021年09月15日 阅读数:2
这篇文章主要向大家介绍三菱PLC之SLMP协议报文说明,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

SLMP是三菱PLC用于CPU模块或外部设备(我的计算机或显示器等)使用以太网对PLC设备进行数据访问的一种协议,SLMP协议是基于TCP/IP,所以会存在服务器和客户端的功能区分。服务器

服务器功能是指CPU模块基于来自外部设备的要求报文(命令),执行数据处理的收发。而客户端功能是指可使用专用命令向外部设备发送要求报文(命令),并从外部设备接收响应报文。服务器和客户端之间的通讯过程如图所示。网络

 

 

三菱的SLMP协议有两种不一样的报文帧,分别为3E帧和1E帧,1E帧只支持FX5U/FX5UC CPU模块。这里说明一下,SLMP的报文格式与三菱的MC协议的帧是相同的。SLMP的3E帧兼容MC协议的Qna系列3E帧,SLMP的1E帧兼容MC协议的A系列1E帧,所以也能够经过MC协议将使用的外部设备链接到SLMP对应设备上。(获取学习资料请加VX:xiketang777)架构

SLMP通讯流程

在正式开始SLMP通讯以前,须要作一些准备工做,具体通讯流程以下:(1) 电缆与外部设备的链接:进行用于SLMP通讯的链接。(2) 参数设置:经过工程工具设置模块参数。(3) 写入至CPU模块:将已设置的参数写入至CPU模块。经过电源OFF→ON或复位,将参数设为有效。(4) 初始处理状态的确认:模块参数设置后,确认CPU模块的初始处理正常结束。(5) SLMP通讯:服务器将从外部设备接收SLMP报文,客户端将向外部设备发送SLMP报文。(获取学习资料请加VX:xiketang777)编辑器

SLMP报文格式

通讯协议报文通常分为请求报文和响应报文,请求报文是指上位机主动发动给SLMP设备的报文,响应报文是指SLMP设备响应请求而返回的报文。不管是请求报文仍是响应报文,通常都是由“帧头”和“应用数据”构成。SLMP请求报文格式以下所示:工具

 

 SLMP响应报文格式以下所示:学习

 

 对于帧头,通常是指TCP与UDP帧头,对于上位机侧,须要在对象设备侧附加CPU模块侧(指令报文)的帧头后进行发送,通常会自动附加,上位机开发不须要考虑。对于CPU模块侧,会自动附加对象设备侧(响应报文)的帧头,所以无需用户设定。对于应用数据,主要是由副帧头和文本两部分组成,副帧头用于显示该报文为指令报文仍是响应报文,文本则是各类不一样功能的请求数据或响应数据。SLMP报文按照编码格式区分,能够分为ASCII编码和二进制,这两种方式报文发送的内容有所不一样,具体如图1和图2所示:编码

 

 图1 ASCII编码格式通讯(获取学习资料请加VX:xiketang777)对象

 

 

图2 二进制编码格式通讯blog

二进制编码格式相对于ASCII编码格式来讲,报文更短更紧凑,所以通讯速度也更快,所以,通常咱们选择二进制编码格式通讯居多,后面的内容均以二进制编码为例进行阐述。开发

SLMP报文组成

SLMP报文格式根据报文类型为请求报文和响应报文,数据格式也会有所不一样,当该帧报文为请求报文时,具体格式以下图所示:

 

 当该帧报文为响应报文时,具体格式以下图所示:(获取学习资料请加VX:xiketang777)

 

 

下面针对各个部分进行说明:

  • 副帧头:副帧头部分占用4个字节,主要用来显示该帧报文是指令报文仍是响应报文,若是该帧报文是指令报文,那么副帧头内容为50H 00H,反之,若是该帧报文为响应报文,那么副帧头内容为D0H 00H,具体如图所示:
  • 网络编号及目标站号:网络编号及目标站号各占一个字节,它们的值与网络架构是息息相关的,下图展现了三种不一样的网络架构:(获取学习资料请加VX:xiketang777)

     

     通常状况第一种网络架构使用居多,后面都以这种架构为例进行阐述,网络编号为00H,目标站号为FFH。请求目标模块I/0编号占两个字节,默认为FFH 03H。

  • 请求目标模块I/0编号占两个字节,默认为FFH 03H。
  • 请求目标多点站号占一个字节,默认为00H。
  • 请求数据长是指从保留到请求数据,总共的字节长度之和,响应数据长是指结束代码和响应数据的长度和。
  • 保留占两个字节,默认值为00H 00H。
  • 结束代码占两个字节,正常结束时值为00H 00H,异常结束时值为00H 04H。
  • 请求数据是指做为执行的指令及子指令的参数数据,根据指令及子指令的状况,有时无需指定“请求数据”,后续会作详细讲解。
  • 响应数据是指做为请求数据的执行结果,根据指令来定,有时不会返回响应报文,后续会作详细讲解。
  • 指令与子指令是报文的命令码,根据读取和写入不一样的存储区会呈现不一样的值。对于批量读取,指令为0401H,子指令根据位或字分别为0001H和0000H,对于批量写入,指令为1401H,子指令根据位或字分别为0001H和0000H。
  • 对于批量读取,请求数据由起始软元件编号、软元件代号及软元件点数三部分组成,其中起始软元件编号占3个字节,软元件代号占1个字节,软元件点数占2个字节。
  • 对于批量写入,请求数据由起始软元件编号、软元件代号及写入数据三部分组成,其中起始软元件编号占3个字节,软元件代号占1个字节,写入数据占N个字节。
  • 对于批量读取,响应数据将实际读取的数据按照指定的格式进行返回。
  • 对于批量写入,响应数据部分为空。
  •                                                ==================END================