當(dāng)前位置: 首頁 > 工業(yè)控制產(chǎn)品 > 自動(dòng)化控制 > PLC可編程控制器
發(fā)布日期:2022-04-26 點(diǎn)擊率:2172 品牌:組態(tài)王_Kingview
西門子S7200 PLC PPI通訊協(xié)議詳解
西門子S7-200 PLC之間或許PLC與PC之間通訊有許多種辦法:安閑口,PPI辦法,MPI辦法,Profibus辦法。運(yùn)用安閑口辦法進(jìn)行編程時(shí),在上位機(jī)和PLC中都要編寫數(shù)據(jù)通訊程序。運(yùn)用PPI協(xié)議進(jìn)行通訊時(shí),PLC能夠不必編程,并且可讀寫悉數(shù)數(shù)據(jù)區(qū),便當(dāng)便當(dāng)。可是西門子公司沒有發(fā)布PPI協(xié)議的格局。用戶假定想運(yùn)用PPI協(xié)議監(jiān)控,有必要收購其監(jiān)控商品或第三方廠家的組態(tài)軟件。這么給用戶自立開發(fā)帶來推重艱難,分外是自行開發(fā)的現(xiàn)場設(shè)備就不能經(jīng)過PPI協(xié)議接入PLC。其它通訊辦法編程也存在編程雜亂,需求收購軟件和授權(quán)等局限性(1)。經(jīng)過數(shù)據(jù)監(jiān)督、剖析的辦法,咱們找出了PPI協(xié)議的要害報(bào)文格局,可用于上位機(jī)、現(xiàn)場設(shè)備與S7-200 CPU之間通訊。
2 剖析辦法
西門子的Step 7 Micro/Win32 是用于S7-200系列PLC的開發(fā)東西,它運(yùn)用PC機(jī)上的COM口經(jīng)過一條PC/PPI編程電纜連到PLC的編程口上。這闡明,PC實(shí)習(xí)上是能夠經(jīng)過串口同S7-200 CPU通訊。僅僅咱們不知道通訊協(xié)議算了。經(jīng)過截獲PC機(jī)串口上的收發(fā)數(shù)據(jù),對照Step 7軟件宣告的指令,咱們就有或許剖析出有關(guān)指令的報(bào)文和通訊辦法;然后,直接經(jīng)過串口向PLC發(fā)送報(bào)文,以驗(yàn)證這些指令報(bào)文是不是精確。本著這一思維,咱們選用以下進(jìn)程取得這些報(bào)文。
首要制造一個(gè)串口的分支器,COM1的RX、TX別離接到COM2的TX、RX,即穿插接線,使得COM1發(fā)的數(shù)據(jù)COM2能收到。PC/PPI編程電纜接在COM1上,這么,Step7 Micro/Win32發(fā)給PLC的報(bào)文就能夠在COM2上接納了。咱們按S7-200體系手冊設(shè)置好兩個(gè)串口,參數(shù)要準(zhǔn)則,均為9600,8,偶校驗(yàn),1位中止位。然后設(shè)置好Step7軟件,使之能與S7-200 CPU正常通訊。從Step7軟件中宣告一個(gè)明晰指令,COM2上的監(jiān)督軟件就能顯現(xiàn)這條報(bào)文了(用16進(jìn)制顯現(xiàn))。經(jīng)過與Profibus規(guī)范的類推(2)咱們就能夠得到一些要害的報(bào)文了。這種辦法比剖析PLC中NETR,NETW指令要直接、悉數(shù)(3)。
3 PPI協(xié)議剖析
PC與PLC選用主從辦法通訊,PC按如下的格局發(fā)讀寫指令,PLC作出接納精確的照料(回來應(yīng)對數(shù)據(jù)E5H或F9H見下文剖析),上位機(jī)接到此照料則宣告供認(rèn)指令(10 02 5C 5E 16),PLC再回來給上位機(jī)相應(yīng)數(shù)據(jù)。
SD LE LEr SD DA SA FC DSAP SSAP DU FCS ED
SD:開端符(68H)
LE、Ler:長度(從DA到DU)
DA:意圖地址
SA:源地址
FC:功用碼 (6CH)
DSAP:意圖效勞存取點(diǎn)
SSAP:源效勞存取點(diǎn)
DU:數(shù)據(jù)單元
FCS:校驗(yàn)和
ED:完畢符(16H)
3.1 讀指令剖析
一次讀一條數(shù)據(jù)
關(guān)于一次讀取一個(gè)數(shù)據(jù),讀指令都是33個(gè)字節(jié)。前面的0—21字節(jié)是準(zhǔn)則的,為:
68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
由所以PC上發(fā)的讀PLC數(shù)據(jù)的指令,SA=00,DA=02,假定有多個(gè)站,DA要改成相應(yīng)的站號。讀指令中從DA到DU的長度為1B即27個(gè)字節(jié)。從22字節(jié)開端依據(jù)讀取數(shù)據(jù)的類型、方位禁絕則而禁絕則。表一是讀禁絕則存儲器指令的Byte22—32。
字節(jié) 22 23 24 25 26 27 28 29 30 31 32
功用 讀取長度 數(shù)據(jù)個(gè)數(shù) 存儲器類型 存儲器偏移量指針 校驗(yàn)和 完畢
讀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 讀取數(shù)據(jù)的長度
01:1 Bit 02:1 Byte 04:1 Word 06:Double Word
Byte 24數(shù)據(jù)個(gè)數(shù)
這兒是01 ,一次讀多個(gè)數(shù)據(jù)時(shí)見下面的闡明。
Byte 26 存儲器類型
01:V存儲器 00:其它
Byte 27 存儲器類型
04:S 05:SM 06:AI 07:AQ 1E: C 81:I 82:Q
83:M 84:V 1F: T
Byte 28,29,30存儲器偏移量指針(存儲器地址*8),如:VB100,存儲器地址為100,偏移量指針為800,改換成16進(jìn)制便是320H,則Byte 28—29這三個(gè)字節(jié)便是:00 03 20。
Byte 31 校驗(yàn)和,前面已提到這是從(DA+SA+DSAP+SSAP+DU) Mod 256 。
一次讀多條數(shù)據(jù)
關(guān)于一次讀多個(gè)數(shù)據(jù)的狀況,前21Byte與上面類似僅僅長度LD,LDr及Byte 14禁絕則:
Byte 14 數(shù)據(jù)塊占位字節(jié),它指明數(shù)據(jù)塊占用的字節(jié)數(shù)。與數(shù)據(jù)塊數(shù)量有關(guān),長度=4+數(shù)據(jù)塊數(shù)*10,如:一條數(shù)據(jù)時(shí)為4+10=0E(H);一同讀M,V,Q三個(gè)禁絕則的數(shù)據(jù)塊時(shí)為4+3*10=22(H)。
Byte 22 老是02 即以Byte為單位。
Byte 24 以字節(jié)為單位,接連讀取的字節(jié)數(shù)。如讀2個(gè)VD則Byte24=8
Byte 19---30 按上述一次讀一個(gè)數(shù)據(jù)的格局順次列出,
Byte 31---42 另一類型的數(shù)據(jù),也是按上述格局給出。
以此類推,一次最多讀取222個(gè)字節(jié)的數(shù)據(jù)。
3.2 寫指令剖析
一次寫一個(gè)Double Word類型的數(shù)據(jù),寫指令是40個(gè)字節(jié),別的為38個(gè)字節(jié)。
寫一個(gè)Double Word類型的數(shù)據(jù),前面的0—21字節(jié)為 :
68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
寫一個(gè)其它類型的數(shù)據(jù),前面的0—21字節(jié)為:(與上面比照,僅僅長度字節(jié)發(fā)作改動(dòng))
68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
從22字節(jié)開端依據(jù)寫入數(shù)據(jù)的值和方位禁絕則而改動(dòng)。表二是幾個(gè)寫指令的Byte22—40。
字節(jié) 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
寫入方位及值 長度 數(shù)據(jù)個(gè)數(shù) 存儲器類型 存儲器偏移量指針 位數(shù) 值、校驗(yàn)碼、完畢符
M0.0=1 01 00 01 00 00 83 00 00 00 00 03 00 01 01 00 71 16
M0.0=0 01 00 01 00 00 83 00 00 00 00 03 00 01 00 00 70 16
M0.1=1 01 00 01 00 00 83 00 00 01 00 03 00 01 01 00 72 16
vb100=10 02 00 01 00 01 84 00 03 20 00 04 00 08 10 00 AE 16
vb100=FF 02 00 01 00 01 84 00 03 20 00 04 00 08 FF 00 9D 16
VW100=FFFF 04 00 01 00 01 84 00 03 20 00 04 00 10 FF FF A6 16
VD100=FFFFFFFF 06 00 01 00 01 84 00 03 20 00 04 00 20 FF FF FF FF B8 16
表二 寫指令的Byte22—40
經(jīng)剖析咱們能夠得出以下效果:
Byte 22-- Byte 30 寫入數(shù)據(jù)的長度、存儲器類型、存儲器偏移量與讀指令準(zhǔn)則。T,C等不能用寫指令寫入。
Byte 32 假定寫入的是位數(shù)據(jù)這一字節(jié)為03,其它則為04
Byte 34 寫入數(shù)據(jù)的位數(shù)
01: 1 Bit 08: 1 Byte 10H: 1 Word 20H: 1 Double Word
Byte 35--40值、校驗(yàn)碼、完畢符
假定寫入的是位、字節(jié)數(shù)據(jù),Byte35便是寫入的值,Byte36=00,Byte37=查驗(yàn)碼,Byte38=16H,完畢。假定寫個(gè)的是字?jǐn)?shù)據(jù)(雙字節(jié)),Byte35,Byte36便是寫入的值, Byte37=查驗(yàn)碼,Byte38=16H,完畢。假定寫個(gè)的是雙字?jǐn)?shù)據(jù)(四字節(jié)),Byte35—38便是寫入的值, Byte39=查驗(yàn)碼,Byte40=16H,完畢。
3.3 其它指令剖析
強(qiáng)行寫入
I、Q、S 等不能運(yùn)用上述的寫指令寫入數(shù)據(jù),只能用強(qiáng)行寫入的辦法。
前0—35字節(jié)值如下(長度字段要依據(jù)實(shí)習(xí)狀況而定),需求留心的是Byte8=07,
68 2B 2B 68 02 00 6C 32 07 00 00 00 00 00 0C 00 12 00 01 12 08 12 48 0B 00 00 00 00 00 FF 09 00 0E 00 01 10
后邊的內(nèi)容如下:
Byte 32 占位字節(jié),從下一字節(jié)開端到校驗(yàn)和前的字節(jié)數(shù)。闡明同讀數(shù)據(jù)的Byte 14.
Byte 36 強(qiáng)行寫入數(shù)據(jù)的長度
01:1 Bit 02:1 Byte
04:1 Word 06:Double Word
Byte 38 數(shù)據(jù)個(gè)數(shù),這兒是01 ,一次強(qiáng)行寫多個(gè)數(shù)據(jù)時(shí)見下面的闡明。
Byte 40 存儲器類型
Byte 41 存儲器類型,見讀指令的闡明。
Byte 42、43、44存儲器偏移量指針(存儲器地址*8)
Byte 45、46、47、48 值、校驗(yàn)碼、完畢符
撤銷強(qiáng)行寫
強(qiáng)行寫入I、Q 等后,這些值就不能被程序改動(dòng),除非運(yùn)用”撤銷強(qiáng)行指令”。撤銷強(qiáng)行指令的格局與強(qiáng)行寫入類似,改動(dòng)的有以下幾點(diǎn):(1)是沒有”值”這一段,即沒有Byte45—48。這影響到長度字節(jié)LE,LEr;占位字節(jié)Byte 32.(2)Byte16=10H, (3) Byte32=0CH,也便是榜首條,沒有”值”這一段,數(shù)據(jù)塊長度變短了。
關(guān)于一次強(qiáng)行寫入或撤銷多個(gè)數(shù)據(jù)的狀況能夠參照寫入指令寫出相應(yīng)的報(bào)文,這兒不再給出。
STOP指令
STOP指令使得S7-200 CPU從RUN狀況改換到STOP狀況(此刻CPU模塊上的辦法開關(guān)開應(yīng)打在RUN或TERM方位)。PC宣告如下指令,PLC回來F9,此刻PLC已進(jìn)入等候狀況,PC再發(fā)供認(rèn)報(bào)文(10 02 5C 5E 16),完結(jié)一個(gè)指令進(jìn)程。
68 1D 1D 68 02 00 6C 32 01 00 00 00 00 00 10 00 00 29 00 00 00 00 00 09 50 5F 50 52 4F 47 52 41 4D AA 16
RUN 指令
RUN指令使得S7-200 CPU從STOP狀況改換到RUN狀況(此刻CPU模塊上的辦法開關(guān)開應(yīng)打在RUN或TERM方位)。PC宣告下指令,PLC回來F9,此刻PLC已進(jìn)入作業(yè)狀況,PC再發(fā)供認(rèn)報(bào)文(10 02 5C 5E 16),完結(jié)一個(gè)指令進(jìn)程。
68 21 21 68 02 00 6C 32 01 00 00 00 00 00 14 00 00 28 00 00 00 00 00 00 FD 00 00 09 50 5F 50 52 4F 47 52 41 4D AA 16
3.4 讀出數(shù)據(jù)剖析
一次讀出一條數(shù)據(jù)
PLC照料的數(shù)據(jù)也是用PPI封裝的。假定用一次讀一條數(shù)據(jù)指令,照料的報(bào)文中就只包含一條數(shù)據(jù),此照料報(bào)文的Byte16<=8。
Byte 04:DA=00 Byte 05:SA=02 即從02 PLC站發(fā)往PC。
Byte 16:數(shù)據(jù)塊占位字節(jié),從Byte21到校驗(yàn)和前的字節(jié)數(shù)。
一條數(shù)據(jù)時(shí):Word=06 Double Word=08 其它為 05。
Byte 22:數(shù)據(jù)類型,位=3,其它=4。
Byte 24:數(shù)據(jù)寬度,Bit=01,Byte=08,Word=10H,Double Word=20H
Byte 25—28:值。
假定網(wǎng)絡(luò)上只或許有一個(gè)站會發(fā)回照料報(bào)文,那么能夠簡略的依據(jù)LE長度字節(jié)區(qū)分回來值的方位:LE=16H,回來值是字節(jié),或位類型的值,照料報(bào)文的Byte 25便是回來值;LE=17H,回來值是字(雙字節(jié))類型的值,照料報(bào)文的Byte 25,26便是回來值;LE=19H,回來值是雙字(四字節(jié))類型的值,照料報(bào)文的Byte 25—28便是回來值。更精確的辦法是要依據(jù)回來報(bào)文的SA,DA,及存儲器方位等信息辨認(rèn)方針地址和源地址,供認(rèn)是這次懇求的回來數(shù)據(jù),然后經(jīng)過校驗(yàn)查看,得到精確的數(shù)據(jù)。
一次讀出多條數(shù)據(jù)
假定用的是一次讀多條數(shù)據(jù)的指令,照料的報(bào)文中就包富含多條數(shù)據(jù)。這些數(shù)據(jù)只需類型參數(shù),沒有偏移量參數(shù),所以要留心依據(jù)讀指令的次序?qū)⑵渲饌€(gè)對應(yīng)起來。
Byte 16:數(shù)據(jù)塊占位字節(jié),從Byte21到校驗(yàn)和前的字節(jié)數(shù),與數(shù)據(jù)塊數(shù)量和類型有關(guān)。
Byte 20:數(shù)據(jù)塊的個(gè)數(shù)。
Byte 21 開端為數(shù)據(jù)塊,每一個(gè)數(shù)據(jù)塊都以FF 04開端,接下來的兩個(gè)字節(jié)標(biāo)明這一數(shù)據(jù)塊的長度,以位核算,然后順次是接連的數(shù)據(jù)。下一個(gè)數(shù)據(jù)塊也是以FF 04開端,重復(fù)上述格局,直到完畢。
4 運(yùn)用
PC與與PLC通訊
在選用PC機(jī)與PLC通訊時(shí),核算機(jī)選用PPI電纜或通常的485串口卡與PLC的編程口聯(lián)接, PC機(jī)選用VB編程,遵照PPI協(xié)議,主從式的通訊辦法,一次讀寫操作的進(jìn)程包含:首要上位機(jī)宣告讀寫指令,PLC作出接納精確的照料(回來應(yīng)對數(shù)據(jù)E5H),上位機(jī)接到此照料則宣告供認(rèn)指令(10 02 5C 5E 16),PLC完結(jié)精確的讀寫照料,回來給上位機(jī)相應(yīng)數(shù)據(jù)。這么收發(fā)兩次數(shù)據(jù),完結(jié)一次數(shù)據(jù)的讀寫。那么咱們就能夠運(yùn)用上述PPI協(xié)議,讀寫S7-200PLC中的各種類型數(shù)據(jù),包含I、Q、SM、M、V、T、C、S等數(shù)據(jù)類型,能夠直接讀出以上變量中的位、字節(jié)、字、雙字等,(其間讀位變量時(shí),實(shí)習(xí)是讀取該位地址的字節(jié)值)。能夠改動(dòng)PLC的作業(yè)狀況(RUN/STOP)。在編程時(shí),最好將讀取的查看值、輸出值等數(shù)據(jù),寄存在PLC的一個(gè)接連的變量區(qū)中,當(dāng)上位機(jī)讀取PLC的數(shù)據(jù)時(shí),就能夠一次讀出這組接連的數(shù)據(jù),削減數(shù)據(jù)的分次頻頻讀取。當(dāng)修正設(shè)定值等數(shù)據(jù)時(shí),進(jìn)行寫數(shù)據(jù)的通訊操作。
現(xiàn)場設(shè)備與PLC通訊
運(yùn)用PPI協(xié)議除了能與上位機(jī)(PC)通訊外,更首要的是為現(xiàn)場設(shè)備與S7-200CPU之間的通訊供應(yīng)了捷徑。自行開發(fā)的設(shè)備能夠便當(dāng)?shù)倪\(yùn)用PPI協(xié)議經(jīng)過485/232接口接入S7-200CPU,聯(lián)入PLC的網(wǎng)絡(luò),包含操控面板,搜集器等。
5 總結(jié)
經(jīng)過剖析STEP7 Micro/win32軟件與S7-200CPU的通訊數(shù)據(jù),咱們得到了西門子PPI協(xié)議的要害報(bào)文格局,這一效果對工程實(shí)習(xí)具有較高的參閱價(jià)值。在不運(yùn)用西門子或其它組態(tài)軟件的狀況下,運(yùn)用剖析得到的PPI協(xié)議完結(jié)了上位機(jī)對PLC的監(jiān)控。現(xiàn)場設(shè)備與PLC通訊方面的作業(yè)正在進(jìn)行中。別的這種對通訊端口進(jìn)行監(jiān)測、剖析的辦法也對一些不知道協(xié)議的測定和通訊過錯(cuò)的查看具有輔導(dǎo)含義。
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航