SiemensMPI協(xié)議解析資料_第1頁
SiemensMPI協(xié)議解析資料_第2頁
SiemensMPI協(xié)議解析資料_第3頁
SiemensMPI協(xié)議解析資料_第4頁
SiemensMPI協(xié)議解析資料_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

SiemensMPI協(xié)議解析

摘要:在使用上位機和西門子S7300系列PLC實現(xiàn)自動化過程控制當中,選擇MPI協(xié)議進

行通信時,PLC可以不用編程,并且可讀寫所有數(shù)據(jù)區(qū),快捷方便。但是西門子公司沒有公

布MPI協(xié)議的格式,用戶假如想使用MPI協(xié)議監(jiān)控,就必須購買其監(jiān)控產(chǎn)品或第三方廠家的

組態(tài)軟件。這樣給用戶自主開發(fā)帶來一定困難,特別是自行開發(fā)的現(xiàn)場設備就不能通過MPI

協(xié)議接入PLC。而采用其它通訊方式也存在編程復雜,簾要購買軟件和授權等局限性。本文

通過數(shù)據(jù)監(jiān)視、采集、分析的方法,解析出了MPI協(xié)議的關鍵報文格式,可用于實現(xiàn)上位機、

現(xiàn)場設備與支持MPI協(xié)議的CPU之間通訊,從而提供了一種高效率低成本的通信方式。

關鍵字:MPI協(xié)議

前言

工業(yè)的現(xiàn)代化,很大限度體現(xiàn)在工業(yè)生產(chǎn)過程的自動化,其中信息的傳輸,數(shù)據(jù)的互換也

成為評價工業(yè)自動化水平高低的標準。網(wǎng)絡通迅方式的多樣化和通迅速率的高速化,使信息

人換領域從設備控制層延伸到公司管理層。信息技術的£速發(fā)展,促進了自動化系統(tǒng)結構的

變革,以網(wǎng)絡為主干的分布式控制系統(tǒng)已成為當今自動化系統(tǒng)的主流趨勢。因此,網(wǎng)絡通迅

的實時性和可靠性,以及網(wǎng)絡故障的診斷和排除都成為工業(yè)網(wǎng)絡通信關注的焦點。MPI網(wǎng)絡

是西門子工業(yè)控制系統(tǒng)中經(jīng)常用到的一種通迅方式,使用RS485物理接口進行數(shù)據(jù)傳輸。卜

面重要闡述西門子MPI協(xié)議的解析方法以及關鍵報文格式。

MPI協(xié)議概述

MPI協(xié)議,其英文全名為Multi-point-Interface。在PLC之間可組態(tài)為主/主協(xié)議或主/

從辦議.如何操作依賴于設備類型:假如控制站都是S7-300/400系列PLC,那么就建立

主/主連接關系,由于MPI協(xié)議支持多主站通訊,所有的S7-300CPU都可配置為網(wǎng)絡主站,

通過主/主協(xié)議可以實現(xiàn)PLC之間的數(shù)據(jù)互換。假如某些控制站是S7-200系列PLC,則可

以建立主/從連接關系,由于s7-200CPU是從站,用戶可以通過網(wǎng)絡指令實現(xiàn)S7-300

CPU對s7200CPU的數(shù)據(jù)讀寫操作。

分析思緒

西門子Step7V5.4軟件是S7-300系列PLC(涉及ET200S)的開發(fā)工具,上位機通過其PCI插

槽上的通訊卡(CP5613A2)接口以及通訊電纜連接到PLC的編程口上,并且通訊卡接口和

PLC編程口都是RS485接口標準。這說明,PC機事實上是可以通過RS485串口同ET200

CPU(IM15l-7)通訊,只是我們不知道通訊協(xié)議而已。因此,在上位機上運用西門子提供的

PRODAVES7軟件讀寫PLC時,通過監(jiān)視通訊口上的數(shù)據(jù),我們就有也許分析出通信報文

格式。然后,撤掉西門子通訊卡,直接通過RS485串口向PLC發(fā)送報文來驗證其對的性,并

作進一步的操作。本著這一思想,采用以下環(huán)節(jié)獲得這些報文。

環(huán)節(jié)

硬軟件需求

硬件:串口分支器及通訊電纜,西門子CP5613A2通訊卡,ADVANTECH公司PCI-1601A通

訊卡,西門子ET20OS(IM15I-7CPU以及相關模塊西

軟件:step7v5.4,simalicnet2023edition,prodaves7,serialportmonitor,PCI1601Adriver,

visualC++。

硬件連接如圖1-0

卜待機

Cn5613A2PCI1601A

F.T200S編程口

圖1-0

(1)安裝完相關軟件及驅動程序以后,進行硬件測試以及軟件平臺搭建

(2)串口分支器制作及通訊電纜的連接(附錄A)

(3)運用STEP7V5.4對ET200s組態(tài)以及相關初始化設立(附錄B)

(4)PC"601A通訊卡的測試(附錄C)

(5)串口監(jiān)視軟件設立和測試(附錄D)

(6)PRODAVES7調(diào)試運營(附錄E)

(1)完畢設立和調(diào)試后,打開串口監(jiān)視軟件,并將PLC上電,運營PRODAVES7并在其

中進行各種操作(load、unload、read、write等)時啟動數(shù)據(jù)監(jiān)視,通過比較分

析發(fā)現(xiàn):

與S7-200不同,ET200s不管出于何種狀態(tài)(run或stop),一經(jīng)上電,就不斷發(fā)出數(shù)據(jù)查找

設備,在讀寫數(shù)據(jù)過程中也不間斷。

連接、讀出、寫入和斷開時檢測到一系列有規(guī)律的數(shù)據(jù)。通過多次監(jiān)測比較分析,可得到相

關操作的數(shù)據(jù)幀格式,初始化設定PLC與上位機的地址分別為02和00;為描述方便,現(xiàn)在

對數(shù)據(jù)幀格式做以下符號約定

SD:(StartDelimiter)開始定界符

LE:(Length)報文長度

LER:(RepeatedLength)反愛數(shù)據(jù)長度

SD:(StartDelimiter)開始定界符

DA:(DestinationAddress)目的地址

SA:(SourceAddress)源地址

FC:(FunctionCode)功能碼

DSAP:(DestinationServiceAccessPoint)目的服務存取點

SSAP:(SourceServiceAccessPoint)源服務存取點

FS:(FrameSequence)幀序列號

UU:(unkownunit)未知操作單元,其數(shù)值通常為固定值

GU:(groupunit)分組單元

DU:(DataUnit)數(shù)據(jù)單元

讀取操作

一次讀操作的環(huán)節(jié)涉及上位機發(fā)出讀命令幀(pc_request_frame_read),PLC作出對的的響應,

并將確認信息幀()返回給上位機,接著反饋回對的的數(shù)據(jù)信息幀

(plc_retum_frame_read)給上位機,上位機接到此幀數(shù)據(jù),校驗擬定后對PLC做出確認信息

幀(pc_ack_frame_read),這樣完畢一個讀取數(shù)據(jù)的過程。在讀取操作過程中,上位機和PLC

共進行兩次應答。

pc_rcqucst_frame_rcad(0)=68

pc_request_frame_read(I)=IE幀長度校驗,為DA+SA+FC+DSAP+SSAP+FS+GU+DU的

字節(jié)個數(shù)。

pc_request_frame_read(2)=IF反復幀長度,與幀長度校驗記法相同。

pc_request_frame_read(3)=68

DASAFCDSAPSSAPFS各占據(jù)7字節(jié)。

pc_request_frame_read(4)=82數(shù)值上等于目的站地址加上80

pc_request_frame_read(5)=80數(shù)值上等尸源站地址加上80

pc_request_frame_read(6)=5C.7C

pc_rcquest_frame_read(7)=16.15

pc_request_frame_read(8)=02.01

pc_rcqucst_franic_rcad(9)=F1為分界符,其值不變。

pc_request_frame_read(10)=00~FF,幀序號,對相同操作時自加計數(shù)。在應答握手時用

來判斷當前應答幀是否為本請求的應答。

UU占據(jù)6字節(jié)長度,均為固定值

pc_request_frame_read(11)=32

pc_requesl_frame_read(12)=01

pc_request_frame_read(13)=00

pc_request_fraine_read(14)=(X)

pc_request_frame_read(15)=33

pc_rcquest_franic_rcad(16)=02.01

GU占據(jù)6字節(jié)長度,混合讀寫時可以進行操作

pc_request_frame_read(17)=00

pc_request_frame_read(18)=()E

pc_request_frame_read(19)=00

pc_rcqucst_frame_rcad(20)=(X)

pc_request_frame_read(21)=04

pc_rcqucst_framc_rcad(22)

單一讀寫時pc_request_frame_read(22)=01,其他不變化;

混合讀寫時pc」equest_frame_read(22)為其他值。

DU單兀占據(jù)12/節(jié)長度從pc_request_frame_read(23)到pc_request_frame_read(26)

這4字節(jié)為固定數(shù)值

pc_request_frame_read(23)=12

pc_request_frame_read(24)=0A

pc_rcquest_frame_read(25)=1()

pc_request_frame_read(26)=02

pc_request_frarne_read(27)和pc_requcst_frame_rezd(28)這2字節(jié)共同表達讀取的數(shù)據(jù)

個數(shù),當讀取的存儲區(qū)是I、Q、M、DB時表達字節(jié)個數(shù),當存儲區(qū)是C.T時表達讀取的

計數(shù)器或定期器的個數(shù)。

假如讀取兩個字節(jié),則為:

pc_rcquest_frame_read(27)=00

pc_requesl_frame_read(28)=02

假如讀取一個計數(shù)器或者定期器,則為:

pc_request_frame_read(27)=00

pc_rcquest_frame_read(28)=01

pc_request_frame_read(29)spc_request_frame_read[30)共同表達要操作的DB號,假如

讀取其他區(qū),則兩者分別為0000。

pc_request_frame_read(31)IQMDBCT

表達存儲區(qū)類型,具體參

考表1-1

存儲區(qū)

標示符818283841C1D

表1-1

pc_rcqucst_framc_rcad(32)

pc_request_frame_read(33)

pc_rcquest_frame_read(34)共同表達操作的起始地址,對『I、Q、M、DB存儲區(qū)按照bit

計算,對C、T存儲區(qū)按照其個數(shù)計算。

若讀取DB1B1時則依次為

pc_requesl_frame_read(32)=00

pc_request_frame_read(33)=00

pc_rcquest_framc_rcad(34)=08

若讀取Cl或T1時則為

pc_rcquest_frame_read(32)=00

pc_requesl_frame_read(33)=OO

pc_rcquest_franie_read(34)=01

pc_request_frame_read(35)是幀校驗碼,采用和取余算法:

(DA+SA+FC+DSAP+SSAP+FC+UU+GU+DU)mod16#100

pc_request_frame_read(36)>pc_requesl_frame_read(37)是結束符,為固定值,分別等于16

E5o

PLC接受到請求命令FS

(pc_request_frame_read)

時,確認后返回一個數(shù)據(jù)

幀表達回應,占據(jù)15字節(jié)

LELERSDDASAFCDASPSSAPUUFCSEND

長度,記作

plc_ack_framc_rcad(15),

格式如下:

SD

SDLELERSD

plc_ack_frame_read(0)=68

plc_ack_frame_read(1)=08

plc_ack_framc_rcad(2)=08

plc_ack_frame_read(3)=68

DA.SA

plc_ack_frame_read(4)=80

plc_ack_framc_rcad(5)=82

FC

plc_ack_frame_read(6)=7C5C

DSAP>SSAP

plc_ack_frame_read(7)=02

plc_ack_frame_read(8)=16

UU

plc_ack_frame_rcad(9)=B0

plc_ack_frame_read(10尸0【

FS

plc_ack_fiame_iead(11)

幀序號,和pc_requesi_frame_read(10)保持一致。

FCS

plc_ack_frame_read(12)

幀校驗,等于(DA+SA+FC+DSSAP+SSAP+UU+FS+FCS)mod16#100

END

plc_ack_frame_read(13)=16

plc_ack_frame_read(14)=E5

在發(fā)送完響應數(shù)據(jù)FUG

幀SUU

(plc_ack_frame_re

ad)后PLC接著給

上位機反饋其所要

LLESDSFDASSDFCEN

讀取的數(shù)據(jù)信息幀

ERDAACSPAPUSD

(plc_retum_frame_

read),其長度因讀

取字節(jié)個數(shù)而長短

不定,格式如下:

SD

SDLELERSD

plc_rcturn_framc_rcad(0)=68

plc_retum_frame_read(1)

plc_return_frame_read(2)

plc_retum_frame_read(3)=68

DASAFCDSAPSSAPFS各占一個字節(jié)

plc_retiim_frame_read(4)=80

plc_return_frame_read(5)=82

plc_rcturn_framc_rcad(6)=5C

plc_retum_frame_read(7)=6

plc_return_frame_read(8)=02

plc_return_frame」ead(9)分界符,為固定值Fl

plc_return_frame_read(10),與plc_ack_frame(11)保持一致。

UU占據(jù)8個字節(jié)長度,均為固定值

plc_retuni_frame_read(11)=32

plc_return_frame_read(12)=03

plc_return_frame_read(13)=(X)

plc_retum_frame_read(14)=00

plc_rcturn_framc_rcad(15)=33

plc_return_frame_read(16)=02

plc_rcturn_franic_rcad(17)=00

plc_return_frame_read(18)=02

GU占據(jù)6字節(jié)長度

plc_retum_frame_read(19)=00

plc_return_frame_read(20)

等于讀取的自己個數(shù)加4,假如讀取一個字節(jié)時為05

plc_return_frame_read(21)=00

plc_retum_frame_read(22)=00

plc_retum_frame_read(23)=04

plc_rcturn_fraine_read(24)

單一讀取時為01,分組讀取時為其他值。

DU占據(jù)(4+pc_rcqucst_frame_rcad(27)+pc_rcquest_franic_rcad(28))字節(jié)長度

plc_return_frame_read(25)=FF

plc_rcturn_frame_read(26)=04

plc_relum_frame_read(27),plc_retum_frame_read(28)共同表達返回所讀取的數(shù)據(jù)位數(shù),按照

bil計算;假如讀取了一個字節(jié),則他們分別為00、08。

PLC返回所要讀取的數(shù)據(jù),按照從低地址到高地址的順序依次存放。

plc_retum_frame_read(29)

plc_return_frame_read(30)

plc_return_frame_read(n)

n=28+讀取的字節(jié)數(shù)

plc_return_frame_read(n+1)^JFCS,采用和取余校驗。

END

plc_return_frame_read(n+2)=16

plc_rcturn_framc_rcad(n+3)=E5

上位機在接受到數(shù)據(jù)通過確認以后向PLC發(fā)送一個確認幀(pc_ack_frame」ead),一共15

字節(jié)長度,記作pc_ack_framc_rcad(15)。

格FS

如LELERSDDASAFCDASPSSAPuuFCSED

下:

SD

SDLELERSD

pc_ack_frame_read(0)=68

pc_ack_frame_read(1)=08

pc_ack_framc_rcad(2)=08

pc_ack_frame_read(3)=68

DASA

pc_ack_frame_read(4)二82

pc_ack_framc_rcad(5)=80

FC

pc_ack_frame_read(6)=5C

DSAPSSAP

pc_ack_frame_read(7)=16

pc_ack_frame_read(8)=02

UU

pc_ack_framc_rcad(9)=B0

pc_ack_frame_read(10)=07

FS

pc_ack_frarne_read(II)和plc_return_frame(10)保持一致

FCS

pc_ack_frarne_read(12)

采用求和取余校驗算法,等于(DA+SA+FC+DSSAP+SSAP+UU+FS)mod16#100

END

pc_ack_frame_read(13)=16

pc_ack_frame_read(14)=E5

讀數(shù)據(jù)過程完畢。

寫入操作

一次完整的寫入操作環(huán)節(jié)涉及:一方面上位機發(fā)出寫命令信息幀(pc_requesl_frame_write),

PLC接受以后判斷,若對的,則做出響應,并將確認信息(plc_ack_frame_write)幀返回給上

位機,并反饋回對的的數(shù)據(jù)(plc_return_frame_write)幀給上位機,上位機接到此幀數(shù)據(jù),校

驗對的后對PLC做卻確認信息(pc_ack_frame_write),這樣就完畢一個讀取數(shù)據(jù)的過程。

在讀取操作過程中,上位機和PLC共進行兩次應答。

寫入時上位機的請求幀F(xiàn)SUUGU

LELERSDDASAFCDASPSSAPDUFCSEN:

(pc_requcst_frame_write)

所占據(jù)字節(jié)長度不擬定,

跟寫入的數(shù)據(jù)個數(shù)有關。記

作pc_request_frame_write

(),格式如下:

SD

SDLELERSD

pc_request_fraine_write(0)=68

pc_request_frame_write(1)pc_request_frame_write(2)寫入一個字節(jié)時為24,寫入兩個字

節(jié)時為25…

pc_request_frame_write(3)=68

DASAFCDSAPSSAPFS

pc_request_frame_write(4)=82

pc_request_frame_wnte(5)=80

pc_request_frame_write(6)=5C

pc_request_frame_write(7)=16

pc_rcqucst_framc_writc(8)=02

pc_request_frame_write(9)=F1

pc_rcqucst_franic_writc(10)為幀序號,從00到FF

UU占據(jù)6字節(jié)長度

pc_request_frame_write(11)=32

pc_request_frame_write(12)=01

pc_request_frame_wnte(13)=00

pc_rcqucst_frame_writc(14)=00

pc_request_frame_write(15)=43

pc_rcquest_frame_write(16)=02

GU占據(jù)6字節(jié)長度

pc_rcqucst_franic_writc(17)=00

pc_request_frame_write(18)=0E

pc_request_frame_write(19)、pc_request_frame_write(20)共同表達寫入的字節(jié)個數(shù)加4。

假如要寫入2個字節(jié),則依次為00、06。

pc_request_frame_write(21)=05

pc_request_frame_write(22)=01

DU占據(jù)的長度和要寫入的字節(jié)個數(shù)有關,其長度為

(16+pc_request_frame_write(21)+pc_request_frame_write(22)-4)個字節(jié),置復位操作

按照一個字節(jié)計算。

pc_request_frame_write(23)=12

pc_request_fraine_write(24)=0A

pc_request_frame_write(25)=10

pc_request_frame_write(26)與存儲區(qū)有關,當寫C區(qū)時,為IC,M區(qū)置復位時為01,寫其

他存儲區(qū)為02

pc_rcqucst_framc_writc(27)=00

pc_request_frame_write(28)=01

pc_reques(_frame_write(29)、pc_request_fianie_write(30)共同衣這所要寫入的DB號,寫

其他存儲區(qū)時,為0000.注意I區(qū)和T區(qū)不能進行寫操作。

pc_request_frame_writeQMDBC

(31)表達存儲區(qū)類

型,參考表1-2

存儲區(qū)

標示符8283841C

表1-2

pc_request_frame_wrile(32)

pc_rcqucst_franic_writc(33)

pc_request_frame_write(34)

以上三個字節(jié)表達要寫入的起始地址。對于C區(qū),則為起始計數(shù)器的編號,若對C2寫入,則

依次為000002。對其他區(qū)寫操作時則表達起始位地址,假如要寫DB1B1,則依次為00、00、

08o

pc_request_frame_write(35)、pc_request_frame_write(36)與存儲區(qū)有關,寫入C區(qū)時依次

為0()09,置復位操作時依次為()003,寫入其他區(qū)(涉及對'M區(qū)寫入字節(jié))是依次為00、

04<>

pc_requcst_frame_write(37)、pc_request_frame_write(38)共同表達寫入的數(shù)據(jù)量,與存儲

區(qū)類型有關。寫C區(qū)時表達寫入的字節(jié)個數(shù),例如對一個計數(shù)器進行寫操作,則其值依次為

00、02;寫其他存儲區(qū)區(qū)時表達要寫入的數(shù)據(jù)位數(shù),按照bit計算,若寫DB1B0,則依次為00、

08o

pc_request_frame_write(39)

pc_rcquest_frame_write(4())

pc_request_frame_write(41)

pc_request_frame_write(n)

以上若干字節(jié)表達要寫入的數(shù)據(jù),按照低地址到高地址的順序排列,其中對C區(qū)進行寫操作

時,數(shù)據(jù)表達為BCD碼,對其他其他存儲區(qū)寫入時,數(shù)據(jù)均為十六進制格式表達。

n=38+pc_request_frame_\^rite(19)+pc_request_frame_write(20)-4)?

pc_request_frame_write(n+1)為FCS,采用求和取余算法,等于

(DA+SA+FC+DSAP4SSAP+FS+UU+GU+DU)mod16#100

END

pc_rcqucst_frame_writc(n+2)=16

pc_request_frame_write(n+3)=E5

PLC在接受到請求數(shù)據(jù)幀確認后,返回確認信息幀(plc_ack_frame_write)

占據(jù)LELERSDDASAFCDASPSSAPUUFSFCSED

15

字節(jié)

度,

格式

下:

SD

SDLELERSD

plc_ack_frame_write(0)=68

plc_ack_frame_write(1)=08

plc_ack_frame_wri(e(2)=08

plc_ack_frame_write(3)=68

DASAFCDSAPSSAP

plc_ack_frame_write(4)=80

plc_ack_frame_write(5)=82

plc_ack_frame_write(6)=5C

plc_ack_framc_writc(7)=02

plc_ack_frame_write(8)=16

UU

plc_ack_frame_write(9)=B0

plc_ack_frame_write(10)=01

FS

plc_ack_frame_write(11)與pc_request_frame_write(10)保持一致。

FCS

plc_ack_frame_write(12),采用求和取余校驗算法。

END

plc_ack_frame_write(13)=16

plc_ack_frame_write(14)=E5

plc_return_frame_write幀格式

SDLELERSDDASAFCDASPSSAPFSUUFCSED

記作plc_re(urn_frame_write(29)

SDLELERSD

plc_return_frame_write(0)=68

plc_return_frame_write(1)=16

plc_return_frame_write(2)=16

plc_return_frame_write(3)=68

DASAFCDSAPSSAPFS

plc_retum_frame_write(4)=80

pic_retum_firame_write(5)=82

plc_retum_frame_wri(e(6)=7C

plc_rcturn_framc_write(7)=02

plc_retum_frame_write(8)=16

plc_return_frame_write(9)=F1

plc_return_frame_write(10),FS,f^Jplc_ack_frame_write(11)保持一致。

UU占據(jù)15字節(jié)長度

plc_rcturn_frainc_writc(II)=32

plcreturnframewrite(12)=03

plc_rcturn_franic_write(13)=00

plc_retum_frame_write(14)=00

plc_return_franie_write(15)=43

plc_return_frame_write(16),fUpc_request_frame_write(16)保持一致。

plc_return_frame_write(17)=00

plc_retum_frame_write(18)=02

plc_return_frame_write(19)=00

plc_return_frame_write(20)=01

plc_retum_frame_write(21)=00

plc_re

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論