《SiemensMPI协议解析.docx》由会员分享,可在线阅读,更多相关《SiemensMPI协议解析.docx(26页珍藏版)》请在第一文库网上搜索。
1、SiemensMP1合同解析摘要:在使用上位机和西门子s73OO系列P1C实现自动化过程控制当中,选择MPI合同进行通信时F1C可以不用编程,并且可读写所有数据区,快捷以便。但是西门子公司没有发布MPI合同的格式,顾客如果想使用MPI合同监控,就必须购买其监控产品或第三方厂家的组态软件。这样给顾客自主开发带来一定困难,特别是自行开发的现场设备就不能通过MPI合同接入P1C。而采用其他通讯方式也存在编程复杂,需要购买软件和授权等局限性。本文通过数据监视、采集、分析的措施,解析出了MPI合同的核心报文格式,可用于实现上位机、现场设备与支持MP1合同的CPU之间通讯,从而提供了一种高效率低成本的通信
2、方式。核心字:MP1合同刖工业的现代化,很大限度体目前工业生产过程的自动化,其中信息的传播,数据的互换也成为评价工业自动化水平高下的原则。网络通迅方式的多样化和通迅速率的高速化,使信息互换领域从设备控制层延伸到公司管理层。信息技术的飞速发展,增进了自动化系统构造的变革,以网络为主干的分布式控制系统已成为当今自动化系统的主流趋势。因此,网络通迅的实时性和可靠性,以及网络故障的诊断和排除都成为工业网络通信关注的焦点。MP1网络是西门子工业控制系统中常常用到的一种通迅方式,使用RS485物理接口进行数据传播。下面重要论述西门子MP1合同的解析措施以及核心报文格式。MPI合同概述MP1合同,其英文全名
3、为MU用-Point-Interfce。在P1C之间可组态为主/主合同或主/从合同,如何操作依赖于设备类型:如果控制站都是S7300/400系列P1c那么就建立主/主连接关系,由于MP1合同支持多主站通讯,所有的S7300CPU都可配备为网络主站,通过主/主合同可以实现P1C之间的数据互换。如果某些控制站是s7200系列P1C,则可以建立主/从连接关系,由于s7200CPU是从站,顾客可以通过网络指令实现S7300CPU对S7200CPU的数据读写操作。分析思路西门子Step7V5.4软件是S7-300系歹IJP1C(涉及ET200S)的开发工具,上位机通过其PCI插槽上的通讯卡(CP5613
4、A2)接口以及通讯电缆连接到P1C的编程口上,并且通讯卡接口和P1C编程口都是RS485接口原则。这阐明,PC机事实上是可以通过RS485串口同ET200CPU(IM151-7)通讯,只是我们不懂得通讯合同而已。因此,在上位机上运用西门子提供的PRODAVES7软件读写P1C时,通过监视通讯口上的数据,我们就有也许分析出通信报文格式。然后,撤掉西门子通讯卡,直接通过RS485串口向P1C发送报文来验证其对时性,并作进一步的操作。本着这一思想,采用如下环节获得这些报文。环节硬软件需求硬件:串口分支器及通讯电缆,西门子CP5613A2通讯卡,ADVANTECH公司PCI一160IA通讯卡,西门子E
5、T200S(IM151-7CPU以及有关模块)。软件:step7v5.4,simticnetedition,prodaves7,seria1portmonitor,PCI1601Adriver,visuaIc+o硬件连接如图1-0pmzf=T9Q4白壬2图1-0安装完有关软件及驱动程序后来,进行硬件测试以及软件平台搭建(I)串口分支器制作及通讯电缆的连接(附录A)(2)运用STEP7V5.4对ET2OOS组态以及有关初始化设立(附录B)PCI160IA通讯卡的测试(附录C)(4)串口监视软件设立和测试(附录D)(5)PRODAVES7调试运营(附录E)完毕设立和调试后,打开串口监视软件,并将P
6、1C上电,运营PRODAVES7并在其中进行多种操作(I。Qd、Un1OaCI、read、Write等)时启动数据监视,通过比较分析发现:(1)与S7-200不同,ET20OS不管出于何种状态(run或stop),一经上电,就不断发出数据查找设备,在读写数据过程中也不间断。(2)连接、读出、写入和断开时检测到一系列有规律的数据。通过多次监测比较分析,可得到有关操作的数据帧格式,初始化设定P1C与上位机的地址分别为02和00;为描述以便,目前对数据帧格式做如下符号商定SD:(StartDe1imiter)开始定界符1E:(1ength)报文长度1ER:(Repeated1ength)反复数据长度
7、SD:(StartDe1imiterj开始定界符DA:(DestinationAddress)目的地址SA:(SourceAddress)源地址FC:(FunctionCC)de)功能码DSAP:(DestitionSerViCeACCeSSPoint)目的服务存取点SSAP:(SourceServiceAccessPoint)源服务存取点FS:(FrameSequence)帧序列号UU:(Unkownunit)未知操作单元,其数值一般为固定值GU:(groupUnit)分组单元DU:(DQtQUnit)数据单元FCS:(FrameCheckSequence)校验码END:(EndDeIimi
8、ter)结束分界符分析成果连接(1oad)过程设备查找在P1C(ET20OS)上电启动进入run状态后,开始不断发出数据查找设备,数据帧格式如下。DA从00到IF共32个站号,令牌帧和总线访问帧按照严格的帧时序(15帧s),交替发出。令牌帧:DCDASADCDA02总线访问帧:SDDASAFCFCSEND10DA0249FCS在Prodoves7中运营1。C1命令后,上位机也开始不断发出数据查找设备,数据帧格式如下。DA从00到IF共32个站号,令牌帧和总线访问帧按照严格的帧时序(19帧s),交替发出。令牌帧:DCDASADCDA00总线访问帧:SDDASAFCFCSEND10DA0049FC
9、S16SD、DC、FC、END均占据一种字节长度,为固定数值,分别等于1OxDC49、16,FCS采用求和校验,等于DA+SA+FC。(2)握手上位机在收到et200S发出的令牌帧(dc0202)后以其令牌帧(de0000)作为答复,等待et2OOs应答,如果收到dc0002,pc机立即答复de0200,令牌握手成功。总线访问握手方式与令牌握手一致。在读写操作过程中,应答握手也不间断。读取操作一次读操作的环节涉及上位机发出读命令帧(PC_requestjrame_read),P1C作出对的的响应,并将确认信息帧(p1c_ack_frame_reod)返回给上位机,接着反馈回对时的数据信息帧(p
10、1c_retuITVfrQmejeod)给上位机上位机接到此帧数据,校验拟定后对P1C做出确认信息帧(pc_ack_frame_read),这样完毕一种读取数据的过程。在读取操作过程中,上位机和P1C共进行两次应答。读取命令读取数据时上位机的祈求帧格式如下,该帧占据38字节长度,记作pc_request_frame_read(38)oSD1E1ERSDDASAFCDASPSSAPFSUUGUDUFCSENDSD1E1ERSD占据4字节长度,为固定值。pc_request_frame_read(O)=68pc_request_frame_read(1)=1F,帧长度校验,为DA+SA+FC+DS
11、AP+SSAP+FS+GU+DU的字节个数。pc_request_frame_read(2)=IF反复帧长度,与帧长度校验记法相似。pc_request_frme-red(3)=68DASAFCDSAPSSAPFS各占据7字节。pc_reqest_frame_read(4)=82数值上等于目的!站地址加上8Opc_request_frame_read(5)=80数值上等于源站地址加上80pc_request_frame_read(6)=5Cs7Cpc_request_frame_read(7)=16、15pc_request_frame_read(8)=02O1pc_request_frame
12、_read(9)=F1为分界符,其值不变。pc_requestJrame_read(1O)=OO-FF,帧序号,对相似操作时自加计数。在应答握手时用来判断目前应答帧与否为本祈求时应答。UU占据6字节长度,均为固定值pc_request_frame_read(11)=32pc_request_frame_read(12)=O1pc_request_frame_read(13)=OOpc_requestjrame_read(14)=00pc_requestJrame_read(15)=33pchequest_frame_read(16)=02、O1GU占据6字节长度,混合读写时可以进行操作pc_r
13、equestJrame_read(17)=00pc_request_frame_read(18)=0Epc_request_frame_read(19)=OOpc_request_frame_read(20)=00pc_request_frame_read(21)=04pc_request_frame_read(22)单一读写时pc_requestjrame_read(22)=01,其他不变化;混合读写时pc_request_frame_read(22)为其他值。DU单元占据12字节长度从pc_requst_frame_read(23)到pc_request_frame_read(26)这4字
14、节为固定数值pc_request_frame_read(23)=12pc_request_frame_read(24)=OApc_request_frame_read(25)=10pc_request_frame_read(26)=02pc_requestjrame_read(27)和pc_requestjrme.red(28)这2字节共同表达读取的数据个数,当读取的存储区是I、QsM、DB时表达字节个数,当存储区是C、T时表达读取时计数器或定期器的个数。如果读取两个字节,则为:pc_requestjrame_read(27)=00pc_requestjrame_read(28)=02如果读取
15、一种计数器或者定期器,则为:PJreqUest_frame_read(27)=00pc_request_frame_read(28)=O1pc_requestjrame_read(29)、pc_requestjrame.read(30)共同表达要操作的DB号,如果读取其他区,则两者分别为0000。pc_request_frame_read(31)表达存储区类型,具体参照表1-1存储区IQMDBCT标示符81828384ICID表1-1pc_requestjrme_read(32)pc_request_frame_read(33)pc_request_frame_reod(34)共同表达操作的起始地址,对于I、Q、M、DB存储区按照bit计算,对C、T存储区按照其个数计算。若读取DBIB1时则依次为pc_request_frame_read(32)=00pc_request_frame_read(33