西门子S7—200以太网通讯协议研究_第1页
西门子S7—200以太网通讯协议研究_第2页
西门子S7—200以太网通讯协议研究_第3页
西门子S7—200以太网通讯协议研究_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西门子S7200以太网通讯协议研究西门子S7-200 PLC网络模块采用S7协议通讯,本文分析S7协议的内容与帧格式,其目的是能够让客户自己编写程序,用自己的socket程序通过以太网读写西门子S200 PLC 区数据。本文对要通过编写程序读取S7-1200、S7-300、S7-400的读者也有帮助。【关键词】S7-200 S7协议 以太网通讯 TCP/IP1 前言在使用西门子S7-200 PLC的中,因为其通讯协议不公开,经常导致客户自己开发监控软件同PLC通讯连接出现困难。本文尝试研究通过以太网读取西门子 S200 PLC数据块及寄存器功能。由于西门子的S7协议是不公开的协议,所以本文的研

2、究方式是通过监听通讯帧,抓取数据包,然后推测协议的格式、定义及意义。本文的目的,是能让用户自己编写程序,用自己的程序读取西门子S-7 200 PLC的 I、Q、M、DB区数据。由于本人主要使用以太网与PLC通讯,所以重点介绍 ISO on TCP的通讯方式。但从网上的资料看出,S200的PPI协议、MPI协议其核心都是S7协议。相信本文对想通过MPI或PPI连接的用户也有一定的帮助。2 ISO on TCP的模型ISO(International Organization for Standardization )国际标准化组织制定了OSI(Open System Interconnectio

3、n)7层模型,包括:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。西门子S7-200网络通讯使用的是:TCP/IP+ISO TP+S7协议。如图1。通讯过程是:(1)TCP三次握手建立通讯TCP连接。(2) ISO_TP连接建立。(3)S7协议连接请求、应答建立连接。(4)实现S7协议读取数据。其过程如图2。3 RFC1006由于S7-200网络通讯,是使用的ISO TCP,先简要介绍一下ISO TP。如要更清晰了解ISO TP内容,请参考RFC1006及RFC983文档。3.1 帧格式ISO TP 帧分为两部分,一部分为帧头,一部分为 TPDUISO TP的帧分为4中帧分别是:

4、(1)CR: connect request(连接请求);(2)CC: connect confirm(连接应答帧);(3)DR: disconnect request(断开请求帧);(4)DT: data(数据帧);(5)ED: expedited data(扩展数据帧)。对这5种类型帧,帧头格式一样,TPDU格式不同。3.2 帧头格式Vrsnreservedpacket length1 Byte1 Byte2 ByteVrsn 版本 :03;Reserved:保留;packet length 从vrsn到数据结尾长度,包括Vrsn。3.3 TPDU格式3.3.1 CR(连接请求)、CC(连

5、接应答帧)的TPDU格式如表1所示。(1)header length:TPDU到帧尾长度,不包括header length这个字节。(2)code :TPDU 类型,4个bit位。 0xe(1110)为连接请求CR;0xd(1101)为连接确认CC;0x8(1000)为断开连接请求DR;0xF(1111)为数据帧DT;0x1(0001)为扩展数据帧 ED。(3)Credit:保留,总是0。(4)destination reference :目的reference,在S200通讯中总是0。(5)source reference :目的reference,在S200的通讯中,为连续次数(在RFC9

6、83中定义该部分为0)。(6)class :4bits 发送端总是0,接受端忽略。(7)options :4bits 发送端总是0,接受端忽略。(8)variable data :该部分可传输多个参数,每个参数部分为:参数码(1Byte)+参数长度(1Byte)+参数值(N Byte)。在S7-200以太网通讯中,variable data共有三组参数。参数1(C1)为PLC端的连接通道号、PLC机架号、PLC槽号;参数2(C2)为远端连接通道号、机架号、槽号;参数3(C3)为0x0A。3.3.2 ED(扩充) 的TPDU格式如表2所示。header length部分、code部分、credi

7、t部分,内容同表2。PDU-NR and EOT:0x80(1000 0000)表示该帧包括帧尾,即该帧独立,没有后续数据;其他数据忽略。4 S7协议西门子的S7通讯协议,是一组复杂的多功能协议,可下载程序,上次程序,操作PLC,读取数据等。本篇只针对S7-200数据读取功能部分进行解读。由于S7协议为没有公开资料,所以解读可能与实际存在差异。4.1 S7协议连接在S7协议层,客户端读取S7-200数据前,需要先建立连接。以下是客户端连接请求及PLC的连接应答帧。(1)连接请求帧为:32 01 00 00 cc c1 00 08 00 00 f0 00 00 01 00 01 03 c0(2)

8、连接应答帧为:32 03 00 00 cc c1 00 08 00 00 00 00 f0 00 00 01 00 01 00 f0该部分尚未知确切的含义。4.2 S7读命令4.2.1 命令如表3所示。标示符【0】: 0x32为帧开始标示符。请求应答标识【1】:0x01为发送命令帧;0x03为应答帧。保留【23】:保留或未知,填充0x00。事务处理标识【45】:请求、应答事务标识,应答帧直接复制返回该部分。命令长度【67】:填充从命令符开始,到帧结束的字节长度,包括命令本身的1个字节。保留【89】:保留,填充0x00;命令符【10】:命令符,0x04为读命令,0x05为写命令。读取数据段数【1

9、1】:该部分为;读取数据段;个数。S7协议支持一次读取多个不连续地址的数据,读取段个数为本次读取命令要读取不连续数据段的数目。读取数据段命令域【1223】:在读取多个不连续地址的数据时,该部分可重复出现。具体含义:命令域子段标示头【12】:读取数据段命令域的标识头,为0x12;命令域子段长度【13】;命令域子端的长度,该字节后,到本命令域子段的长度。未知【14】:该字节未知确切的含义,通常为0x10。数据类型【15】:0x01 bit;0x02 byte;0x04为float读取字节【1617】:本命令段读取字节长度;数据块编号【1819】:读取数据块的编号,为I、Q、M等区,为0;寄存器类型

10、【20】:读取寄存类型,0x04 顺序控制继电器区(S);0x05特殊存储器区(SM);0x06 模拟量输入映象区(AI);0x07 模拟量输出映象区(AQ);0x1E:计数器存储器区(C);0x81数字量输入寄存器(I);0x82数字量输出寄存器(Q);0x83位存储器区(M);0x84变量存储器(V); 0x1F定时器存储器区(T)。偏移地址【20】:开始读取量的偏移地址,安bit计算。4.3 S7读应答应答如表4所示。标示符【0】: 0x32为帧开始标示符。请求应答标识【1】:0x03为应答帧。保留【23】:保留或未知,填充0x00。事务处理标识【45】:直接复制请求帧该部分,然后填充返

11、回。执行命令返回值【67】:推测是执行命令的结果代码。推测0x02为执行OK。数据帧长度【89】:从数据段个数;后,到帧尾的数据长度。保留【1011】:保留或未知,填充0x00。命令符【12】:命令符,0x04为读命令,0x05为写命令。数据段个数【13】:返回的数据段数数据段:根据读取不连续地址命令,一个应答帧可包含多个读取的数据段。具体含义:子数据段标示符【14】:0xFF子数据段标示符。有效性【15】:该项表示的意义不太确定,推测为该数据段数据的有效性。数据长度【1617】:子数据段的数据长度,按bit位计算。子数据段数据【N】:返回的数据。5 编程试验根据以上协议,编程实现通过以太网,读取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论