background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

1

   

Poni

Ŝ

szy dokument zawiera opis konfiguracji programu STEP7 dla sterowników SIMATIC  

S7 – 300/S7 – 400, w celu stworzenia komunikacji mi

ę

dzy dwoma stacjami S7 – 300 za 

pomoc

ą

 sieci MPI i funkcji X_SEND/X_RCV 

 
 

1.  Podstawowe informacje 

 
Komunikacja z wykorzystaniem funkcji X_SEND/X_RCV jest „dwustronn

ą

” usług

ą

 

komunikacyjn

ą

. Oznacza to, 

Ŝ

e odpowiednie funkcje musz

ą

 by

ć

 wywołane zarówno w stacji 

wysyłaj

ą

cej dane jak i stacji docelowej. Funkcja X_SEND (SFC65) jest wykorzystywana do 

wysyłania danych do jednostek bior

ą

cych udział w komunikacji. Jednostka docelowa odbiera 

dane za pomoc

ą

  funkcji X_RCV (SFC66). 

  

2.  Zało

Ŝ

enia projektu 

 

 

 
Komunikacja za pomoc

ą

 protokołu MPI pozwala utrzymywa

ć

 transmisj

ę

 danych w granicach 

187.5 kbps – 12 Mbps
Segment sieci mo

Ŝ

e zawiera

ć

 maksymalnie 32 w

ę

zły. 

Maksymalna rozpi

ę

to

ść

 segmentu bez konieczno

ś

ci stosowania repeaterów wynosi 50m

Maksymalna ilo

ść

 urz

ą

dze

ń

, które mo

Ŝ

na podł

ą

czy

ć

 do sieci wynosi 126

Maksymalna liczba CPU bior

ą

cych udział w wymianie danych wynosi 15

Maksymalna wielko

ść

 przesyłanego pakietu wynosi odpowiednio: 

- dla S7-300 - 22 bajty 
- dla S7-400 – 54 bajty 
Maksymalna ilo

ść

 przesyłanych pakietów zale

Ŝ

y od rodzaju CPU i mo

Ŝ

e by

ć

 ich lub 8

 
 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

2

   

3. WYWOŁANIE I PARAMETRYZACJA FUNKCJI X_SEND/X_RCV 
 
3.1  
Po  wprowadzeniu  konfiguracji  sprz

ę

towej  do  projektu  z  drzewa  struktury  projektu 

wybieramy stacj

ę

, dla której chcemy wywoła

ć

 funkcj

ę

 i w zakładce S7 Program(2) klikamy na 

symbol Blocks (Rys. 1). 
 

 

 

 

 
 

3.2  W  oknie  projektu  powinien  by

ć

  widoczny  główny  blok  organizacyjny  OB1,  w  którym 

b

ę

dzie  znajdował  si

ę

  program  główny.  Nale

Ŝ

y  jeszcze  doda

ć

  blok  danych,  w  którym  b

ę

d

ą

 

przechowywane dane odbierane i wysyłane przez CPU. W tym celu w pustym polu klikamy 
prawym przyciskiem myszy i wybieramy Insert New Object 

 Data Block (Rys. 2). 

 

 

 

 

 
 

Rys. 1 
 

Rys. 2 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

3

   

3.3 W oknie wła

ś

ciwo

ś

ci tworzonego bloku danych potwierdzamy polecenie utworzenia bloku 

klikaj

ą

OK (Rys. 3).  

 

 

 
 
 
3.4  Wchodzimy  do  głównego  bloku  programu,  klikaj

ą

c  dwukrotnie  symbol  OB1  w  głównym 

oknie projektu (Rys. 4) 
 

 

 
 
 
  
 
 

Rys. 3 

 

Rys. 4 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

4

   

3.5  W  bloku  organizacyjnym  OB1  stacji,  która  ma  wysyła

ć

  dane  wywołujemy  funkcje 

X_SEND. W tym celu z  listy elementów programu  wybieramy Libraries 

 Standard Library 

 System Function Blocks (Rys. 5). 

 

 

 
 
 

Rys. 5 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

5

   

3.6  Z  listy  System  Function  Blocks  wybieramy  interesuj

ą

cy  nas  blok  SFC65,  klikaj

ą

dwukrotnie w jego symbol umieszczamy go w projekcie (Rys. 6).  
 

 

 
 
 
 
Poni

Ŝ

ej został umieszczony opis parametrów funkcji X_SEND. 

 

X_SEND (SFC65) 

Parametr 

Opis 

REQ 

Logiczna jedynka zezwalaj

ą

ca na wysłanie danych do okre

ś

lonej stacji 

CONT 

CONT=0: Poł

ą

czenie jest przerywane po zako

ń

czeniu transferu danych.   

                 Nast

ę

pne poł

ą

czenie mo

Ŝ

e zosta

ć

 nawi

ą

zane z innym partnerem.  

CONT=1: Poł

ą

czenie zostaje otwarte po zako

ń

czeniu transferu danych. Opcja   

                 jest u

Ŝ

yteczna przy ci

ą

głej wymianie danych mi

ę

dzy dwiema 

                 stacjami. 

DEST_ID  Adres MPI urz

ą

dzenia, z którym ma zosta

ć

 nawi

ą

zana komunikacja. 

REQ_ID  Wska

ź

nik identyfikuj

ą

cy dane w stacji odbiorczej. 

SD 

Wska

ź

nik do przestrzeni pami

ę

ci, z której maj

ą

 by

ć

 pobrane dane do wysłania. 

RET_VAL  Je

ś

li pojawia si

ę

 bł

ą

d podczas wywołania funkcji zmienna zawiera jego kod. 

BUSY 

BUSY=1: Wysyłanie nie zostało zako

ń

czone. 

BUSY=0: Wysyłanie zostało zako

ń

czone. 

Rys. 6 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

6

   

3.7    Wchodzimy  do  wcze

ś

niej  utworzonego  bloku  danych  DB1  aby  zdefiniowa

ć

  potrzebne 

obszary  pami

ę

ci.  W  tym  celu  w  głównym  oknie  projektu  dwukrotnie  klikamy  symbol  DB1 

(Rys. 7). 
 

 

 

 

 
 

 

 
3.8  Poni

Ŝ

ej przedstawiona jest zawarto

ść

 bloku danych DB1 (Rys. 8). 

 

 

 
 
 
Parametr SD nale

Ŝ

y zdefiniowa

ć

 jako wska

ź

niki do interesuj

ą

cego nas obszaru pami

ę

ci w 

zwi

ą

zku z tym nie mo

Ŝ

na go zdefiniowa

ć

 w bloku danych. Trzeba to zrobi

ć

 bezpo

ś

rednio w 

głównym bloku programu OB1. 
 
 
 
 
 
 
 
 
 

Rys. 7 
 

Rys. 8 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

7

   

3.9 Wchodzimy do bloku OB1 i  przypisujemy zdefiniowane zmienne odpowiednim 
parametrom funkcji X_SEND (Rys. 9). 
 

 

 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Rys. 9 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

8

   

3.10 Poni

Ŝ

ej pokazany jest sparametryzowany blok SFC65  (Rys. 10). 

 

 

 

 

 
 
 
 
 
3.11 Powtarzamy kroki przedstawione w punktach 3.1 – 3.10 w celu wywołania i 
sparametryzowania funkcji X_RCV (SFC66) w stacji docelowej. Podobnie jak dla stacji 
wysyłaj

ą

cej tak

Ŝ

e tutaj umieszczamy blok danych, w którym b

ę

d

ą

 zdefiniowane parametry 

funkcji X_RCV (Rys. 11).  
 
 

Rys. 10 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

9

   

 

 
 
 
 
3.12 Wchodzimy do bloku OB1 i wywołujemy w nim funkcj

ę

 X_RCV wybieraj

ą

c z listy 

elementów programu blok oznaczony jako SFC66 (Rys. 12). 
 

 

 
 
 
 

Rys. 12 

 

Rys. 11 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

10

   

Poni

Ŝ

ej został umieszczony opis parametrów funkcji X_RCV. 

 

X_RCV (SFC66) 

Parametr 

Opis 

EN_DT 

EN_DT=0: Sprawdza czy jakie

ś

 dane czekaj

ą

 na zapis do przestrzeni 

zdefiniowanej przez parametr  RD. 
EN_DT=1: Kopiuje najstarszy element kolejki danych czekaj

ą

cych na zapis do 

przestrzeni zdefiniowanej przez parametr RD 

RET_VAL 

Przy bezbł

ę

dnej transmisji pokazuje długo

ść

 otrzymanego bloku danych. W 

przypadku wyst

ą

pienia bł

ę

du pokazuje jego kod. 

REQ_ID 

Wska

ź

nik roboczy bloku X_SEND, którego dane s

ą

 pierwsze w kolejce do 

zapisania (najstarsze dane w kolejce). Warto

ść

 0 oznacza brak danych do 

zapisania. 

NDA 

NDA=0: Nie ma 

Ŝ

adnych danych w kolejce do zapisania 

NDA=1: Je

ś

li EN_DT=0 parametr oznacza, 

Ŝ

e w kolejce znajduje si

ę

 co najmniej 

jeden blok danych. 
Je

ś

li EN_DT=1 parametr oznacza, 

Ŝ

e najstarszy blok danych z kolejki 

został skopiowany do programu u

Ŝ

ytkownika 

 

RD 

Wska

ź

nik do przestrzeni pami

ę

ci, w której maj

ą

 by

ć

 zapisane otrzymane dane. 

 
 
3.13 W bloku DB1 definiujemy parametry funkcji X_RCV. Poni

Ŝ

ej przedstawiona jest 

zawarto

ść

 wypełnionego bloku DB1 (Rys. 13). 

 

 

 
 
 
Parametr RD nale

Ŝ

y zdefiniowa

ć

 jako wska

ź

niki do interesuj

ą

cego nas obszaru pami

ę

ci w 

zwi

ą

zku z tym nie mo

Ŝ

na go zdefiniowa

ć

 w bloku danych. Trzeba to zrobi

ć

 bezpo

ś

rednio w 

głównym bloku programu OB1. 
 
 
 
 
 
 
 
 
 
 

Rys. 13 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

11

   

3.14 Wchodzimy do bloku OB1 i  przypisujemy zdefiniowane zmienne odpowiednim 
parametrom funkcji X_RCV. Poni

Ŝ

ej pokazana jest sparametryzowana funkcja X_RCV   

(Rys. 14). 
 

 

 
 
 
 
 

Rys. 14 

 

background image

s

s

s

s

 

 

 

 

FAQ: 00000019/PL     Data: 14/04/2008 

Komunikacja w protokole MPI za pomoc

ą

 funkcji X_SEND/X_RCV  pomi

ę

dzy sterownikami S7-300 

 

www.siemens.pl/simatic  
Doradztwo techniczne: simatic.pl@siemens.com 

 

12

   

3.15 Nast

ę

pnie nale

Ŝ

y załadowa

ć

 program do wszystkich CPU w systemach, których 

wywoływali

ś

my blok SFC67 i/lub SFC68. W tym celu wracamy do głównego okna projektu 

SIMATIC Managera i w oknie struktury projektu zaznaczamy jednostk

ę

, do której chcemy 

załadowa

ć

 program. Nast

ę

pnie naciskamy przycisk Download na pasku narz

ę

dzi           

(Rys. 15a, 15b). Identycznie post

ę

pujemy dla innych jednostek zawartych w projekcie. 

 

 

 
 
 
 

 

 
 

Rys. 15a 

 

Rys. 15b