网站大量收购闲置独家精品文档,联系QQ:2885784924

S7-200 PPI通信协议介绍及测试源码、协议下载.doc

S7-200 PPI通信协议介绍及测试源码、协议下载.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S7-200 PPI通信协议介绍及测试源码、协议下载

S7-200?PPI通信协议介绍及测试源码、协议下载摘?要:通过数据监视,分析的方法,找出了PPI协议的关键报文格式,可用于上位机、单片机与S7-200?CPU之间通讯。 关键字:PLC?,PPI?,协议 1?前言 为了实现西门子S7-200?PLC与单片机(RS485)间通信,在单片机和PLC中都要编写数据通信程序。使用PPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。但是西门子公司没有公布PPI协议的格式。用户如果想使用PPI协议监控,必须购买其监控产品或第三方厂家的组态软件。这样给用户自主开发带来一定困难,特别是自行开发的现场设备就不能通过PPI协议接入PLC。其它通讯方式编程也存在编程复杂,需要购买软件和授权等局限性(1)。通过数据监视、分析的方法,我们找出了PPI协议的关键报文格式,可用于上位机、现场设备与S7-200?CPU之间通讯。本以AT89S8252完全兼容51指令,内部带8K?Flash?,??2K?EEPROM,内部集成Uart的单片机为例! 2?分析方法 西门子的Step?7?Micro/Win32?是用于S7-200系列PLC的开发工具,它使用PC机上的COM口通过一条PC/PPI编程电缆连到PLC的编程口上。这说明,PC实际上是可以通过串口同S7-200?CPU通讯。只是我们不知道通讯协议而已。通过截获PC机串口上的收发数据,对照Step?7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过串口向PLC发送报文,以验证这些指令报文是否正确。本着这一思想,我们采用以下步骤获得这些报文。 首先制作一个串口的分支器,COM1的RX、TX分别接到COM2的TX、RX,即交叉接线,使得COM1发的数据COM2能收到。PC/PPI编程电缆接在COM1上,这样,Step7?Micro/Win32发给PLC的报文就可以在COM2上接收了。我们按S7-200系统手册设置好两个串口,参数要一样,均为9600,8,偶校验,1位停止位。然后设置好Step7软件,使之能与S7-200?CPU正常通讯。从Step7软件中发出一个明确指令,COM2上的监视软件就能显示这条报文了(用16进制显示)。通过与Profibus标准的类比(2)我们就可以得到一些关键的报文了。这种方法比分析PLC中NETR,NETW指令要直接、全面(3)。 3?PPI协议分析 单片机与PLC采用主从方式通讯,单片机按如下的格式发读写指令,PLC作出接收正确的响应(返回应答数据E5H或F9H见下文分析),上位机接到此响应则发出确认命令(10?02?5C?5E?16),PLC再返回给上位机相应数据。 SD?LE?LEr?SD?DA?SA?FC?DSAP?SSAP?DU?FCS?ED SD:开始符(68H)?LE、Ler:长度(从DA到DU) DA:目的地址?SA:源地址 FC:功能码?(6CH)?DSAP:目的服务存取点 SSAP:源服务存取点?DU:数据单元 FCS:校验和?ED:结束符(16H) 3.1?读命令分析 一次读一条数据 对于一次读取一个数据,读命令都是33个字节。前面的0—21字节是相同的,为?: 68?1B?1B?68?02?00?6C?32?01?00?00?00?00?00?0E?00?00?04?01?12?0A?10 因为是单片机上发的读PLC数据的命令,SA=00,DA=02,如果有多个站,DA要改成相应的站号。读命令中从DA到DU的长度为1B即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。表一是读不同存储器命令的Byte22—32。 字节?22?23?24?25?26?27?28?29?30?31?32 功能?读取长度?数据个数*?存储器类型?偏移量?校验?结束 读q0.0?01?00?01?00?00?82?00?00?00?64?16 读m0.0?01?00?01?00?00?83?00?00?00?65?16 读M0.1?01?00?01?00?00?83?00?00?01?66?16 读SMB34?02?00?01?00?00?05?00?01?10?F9?16 读VB100?02?00?01?00?01?84?00?03?20?8B?16 读VW100?04?00?01?00?01?84?00?03?20?8D?16 读vd100?06?00?01?00?01?84?00?03?20?8F?16 读i0.5?01?00?01?00?00?81?00?00?05?68?16 读i0.7?01?00?01?00?00?81?00?00?07?6A?16 表?一?读命令的Byte22-32 从表中我们可以得出以下结果: Byte?22?读取数据的长度 01:1?B

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档