Protokol
S7-TCP/IP je také známy jako
"RFC1006" nebo
"ISO on top of TCP". PLC automaty tímto protokolem obvykle komunikují přes
PROFINET konektor (konektor pro napojení na Ethernet síť).
Tímto protokolem lze komunikovat například s následujícími typy PLC automatů:
-
Siemens Simatic:
- S7-200 přes modul CP243-Ethernet
-
S7-300 přes modul
CP343-Ethernet, přes převodník
NETLink PRO ETH nebo s procesorem s integrovaným Ethernet rozhraním
-
S7-400 přes modul
CP443-Ethernet, přes převodník
NETLink PRO ETH nebo s procesorem s integrovaným Ethernet rozhraním
- S7-1200 (má integrované Ethernet rozhraní)
- S7-1500 (má integrované Ethernet rozhraní)
Upozornění: Pro správné nastavení
Simatic viz
Důležitá nastavení komunikace v PLC Simatic pomocí software TIA portal.
- ET-200S, ET-200SP (CPU1512) (má integrované Ethernet rozhraní)
- IPC + WinAC (softwarový PLC automat)
-
VIPA (řídicí systém
300S,
SLIO, ...)
- BERTHEL
Před použitím tohoto ovladače v aplikaci PROMOTIC je vhodné shlédnout "
PROMOTIC video kurz 4 - Komunikační ovladače".
Základní vlastnosti ovladače:
- Použití tohoto ovladače vyžaduje zakoupení
licence PmS7. Při vývoji aplikace ve freeware módu
PmFree nebo s
vývojovou licencí a při jejím testování v runtime je tato komponenta vždy funkční.
- Komunikace je
pro Ethernet (aplikace PROMOTIC je klient). Pro komunikaci stačí běžná standardní Ethernet karta. Při použití převodníku
NETLink PRO ETH lze komunikovat i přes rozhraní
MPI,
PROFIBUS nebo
PPI.
- Ovladač nepotřebuje žádné speciální knihovny ani hardware.
- Aplikace PROMOTIC je z hlediska této komunikace vždy Master (to znamená, že dává podnět pro přenos dat).
- Ovladač optimalizuje fyzické přenosy datových zpráv s PLC automaty. Jednou zprávou mohou být přenášeny hodnoty z různých datových oblastí (datové bloky, vstupy, výstupy, ...) a proto komunikace je i při větším množství dat dostatečně rychlá. Tak lze v běžné Ethernet síti obnovovat data například s rychlostí 15x za sekundu.
Ovladač podporuje následující oblasti dat:
-
I = Input: Digitální vstupy (v němčině
E = Eingang). Bitové hodnoty (typ
X), které lze číst ale nelze do nich zapisovat.
Na tyto hodnoty lze přistupovat i jako na 1-bajt (8 bitů, typ
B), 2-bajty (16 bitů, typ
W) nebo 4-bajty (32 bitů, typ
DINT). Pak lze na jednotlivé bity přistupovat pomocí metod
PmVar.GetBit /
PmVar.SetBit nebo pomocí metod
Pm.GetBit /
SetBit.
-
Q = Output: Digitální výstupy (v němčině
A = Ausgang). Bitové hodnoty (typ
X), které lze číst i zapisovat.
Na tyto hodnoty lze přistupovat i jako na 1-bajt (8 bitů, typ
B), 2-bajty (16 bitů, typ
W) nebo 4-bajty (32 bitů, typ
DINT). Pak lze na jednotlivé bity přistupovat pomocí metod
PmVar.GetBit /
PmVar.SetBit nebo pomocí metod
Pm.GetBit /
SetBit.
- M = Memory, Marker, Flag: Paměť kterou lze číst i zapisovat. Na rozdíl od datových bloků nebývá tato paměť perzistentní, tzn. po vypnutí PLC se paměť resetuje.
Přistupovat k hodnotám v této paměti lze pomocí všech podporovaných datových typů (X, W, INT, STRING ...).
- DB = Data Block: Perzistentní paměť kterou lze číst i zapisovat.
Přistupovat k hodnotám v této paměti lze pomocí všech podporovaných datových typů (X, W, INT, STRING ...).
- T = Timer: Časovače (jen pro čtení). Hodnoty lze číst jako datové typy S5T(=přednastaveno), Wbcd a W.
- C = Counter: Čítače (německy Z = Zähler) (jen pro čtení). Hodnoty lze číst jako datové typy Wbcd(=přednastaveno) a W.
Ovladač podporuje následující S7 datové typy:
-
X:
Bit, Boolean - Bit daný adresou bajtu a číslem bitu.
V aplikaci PROMOTIC je reprezentován datovým typem
Boolean.
-
B:
Unsigned Byte - 1-bajt celé číslo (od
0 do
255).
V aplikaci PROMOTIC je reprezentován datovým typem
Byte.
-
W:
Unsigned Word - 2-bajt celé číslo (od
0 do
+65 535).
V aplikaci PROMOTIC je reprezentován datovým typem
Long.
-
INT:
Signed Word - 2-bajt celé číslo (od
-32 768 do
+32 767).
V aplikaci PROMOTIC je reprezentován datovým typem
Integer.
-
D:
Unsigned Double Word - 4-bajt celé číslo (od
0 do
+4 294 967 295).
Protože jazyk
VBScript nemá celočíselný datový typ pro unsigned 4-bajt hodnotu, je v systému PROMOTIC hodnota typu
Double.
-
DINT:
Signed Double Word - 4-bajt celé číslo (od
-2 147 483 648 do
+2 147 483 647).
V aplikaci PROMOTIC je reprezentován datovým typem
Long.
-
Bbcd:
Unsigned Byte in BCD code - 1-bajt celé číslo. V PLC automatu uloženo v BCD kódování (od
0 do
99).
V aplikaci PROMOTIC je reprezentován datovým typem
Byte.
-
Wbcd:
Unsigned Word in BCD code - 2-bajt celé číslo. V PLC automatu uloženo v BCD kódování (od
0 do
9999).
V aplikaci PROMOTIC je reprezentován datovým typem
Integer.
-
Dbcd:
Unsigned Word in BCD code - 4-bajt celé číslo. V PLC automatu uloženo v BCD kódování (od
0 do
99999999).
V aplikaci PROMOTIC je reprezentován datovým typem
Long.
-
REAL:
Real number, 4B IEEE - 4-bajt reálné číslo ve formátu
IEEE-754 (32-bit).
V aplikaci PROMOTIC je reprezentován datovým typem
Single.
-
LREAL:
Long Real number, 8B IEEE - 8-bajt reálné číslo ve formátu
IEEE-754 (64-bit).
Tento typ podporuje například
Simatic S7-1200. Není podporován staršími typy PLC automatů.
V aplikaci PROMOTIC je reprezentován datovým typem
Double.
-
CHAR:
Raw ASCII string - (1 znak = 1 bajt).
V PLC automatu je tento typ uložen bez informace o délce textu.
Pokud při zápisu do PLC automatu je posílaný text kratší než zadaný počet znaků, pak se doplní zbývající znaky hodnotou
0.
Upozornění! Je nutno správně zadat délku textu protože se podle toho určuje rozložení proměnných objektu
PmaCommGroup do jednotlivých zpráv pro čtení.
V aplikaci PROMOTIC je reprezentován datovým typem
String.
-
WCHAR:
Raw UTF-16 string - (1 znak = 2 bajty).
V PLC automatu je tento typ uložen bez informace o délce textu.
Pokud při zápisu do PLC automatu je posílaný text kratší než zadaný počet znaků, pak se doplní zbývající znaky hodnotou
0.
Upozornění! Je nutno správně zadat délku textu protože se podle toho určuje rozložení proměnných objektu
PmaCommGroup do jednotlivých zpráv pro čtení.
V aplikaci PROMOTIC je reprezentován datovým typem
String.
-
STRING:
S7 ASCII string - (1 znak = 1 bajt).
V PLC automatu je tento typ uložen navíc s hlavičkou, ve které je informace o aktuální délce textu.
Pokud při zápisu do PLC automatu je posílaný text kratší než zadaný počet znaků, pak se doplní zbývající znaky hodnotou
0.
Upozornění! Je nutno správně zadat délku textu protože se podle toho určuje rozložení proměnných objektu
PmaCommGroup do jednotlivých zpráv pro čtení.
V aplikaci PROMOTIC je reprezentován datovým typem
String.
-
WSTRING:
S7 UTF-16 string - (1 znak = 2 bajty).
V PLC automatu je tento typ uložen navíc s hlavičkou, ve které je informace o aktuální délce textu.
Pokud při zápisu do PLC automatu je posílaný text kratší než zadaný počet znaků, pak se doplní zbývající znaky hodnotou
0.
Upozornění! Je nutno správně zadat délku textu protože se podle toho určuje rozložení proměnných objektu
PmaCommGroup do jednotlivých zpráv pro čtení.
V aplikaci PROMOTIC je reprezentován datovým typem
String.
-
DTL:
Date and Time, 12B Bin format - Datum a čas.
V PLC automatu je uložen binárně na 12B. Tento typ podporuje například
Simatic S7-1200. Není podporován staršími typy PLC automatů.
V aplikaci PROMOTIC je reprezentován datovým typem
Date.
-
DT:
Date and Time, 8B BCD format - Datum a čas.
V PLC automatu je uložen v BCD kódu na 8B. Tento typ podporují starší typy PLC automatů. Rozsah roků je 1990-2089.
V aplikaci PROMOTIC je reprezentován datovým typem
Date.
-
TOD:
Time of day, 4B format. V PLC automatu je uložen binárně na 4B jako počet milisekund ve dni.
V aplikaci PROMOTIC je reprezentován datovým typem
Date (rok, měsíc a den mají hodnotu 0).
-
S5T:
S5TIME, Time Duration - Čas nebo doba trvání.
V PLC automatu je uložen v BCD kódu na 4B. Tento typ podporují starší typy PLC automatů. Obvykle se využívá v paměti typu
Timer.
V aplikaci PROMOTIC je reprezentován datovým typem
Long = počet milisekund.
-
Array: Ovladač přímo nepodporuje čtení/zápis pole přes jednu proměnnou (např. typu
Array). Avšak vzhledem k tomu, že v PLC automatu musí být vypnuto nastavení
"Optimized block access" (viz
DB optimized), tak se proměnné typu pole v PLC automatu chovají tak, jako by se jednalo o oblast jednotlivých proměnných. To znamená, že takové proměnné lze číst/zapisovat jako jednotlivé proměnné, kde každá má svou adresu v databloku.
Poznámka1: Datový typ TIME je v podstatě počet milisekund a hodnotu lze proto číst jako datový typ DINT. Proto samotný typ TIME není ovladačem podporován.
Doporučené hodnoty parametrů objektu PmaComm:
Číslo vzdáleného TCP/UDP portu | Číslo Ethernet portu. Toto číslo je určeno volbou typu S7 komunikace:
102 - Komunikuje se přímo s PLC automaty podporující S7 protokol (podporující Ethernet rozhraní).
|
Typ Ethernet přenosu | TCP |
Počet opakování při neúspěšném Master přenosu | Pokud druhá strana neodpoví, pak ovladač provede zavření portu a znovu začne navazovat spojení. Proto je pro tento konfigurátor doporučeno nastavit "bez opakování", tzn. hodnotu 0. |
Timeout přenosu jednoho paketu [ms] | Pokud "Typ komunikace = Ethernet ISOonTCP Standard" pak je nutno nastavit 4000 ms. V jiném případě stačí 2000 ms. |
Připojit až při prvním přenosu | NEzatrhnout (povinné) |
Zavřít spojení po každém přenosu | NEzatrhnout (povinné). Po každém navázání spojení je nutno přenést několik inicializačních zpráv a kdyby se spojení často uzavíralo tak by se velmi snížila rychlost komunikace. |
---|
Typ komunikace | Určuje typ komunikace se zařízením.
Ethernet ISOonTCP Standard - (for S7-300/400/1200/1500..)
Bude se komunikovat se zařízením, které podporuje Ethernet komunikaci protokolem S7 (podporuje PROFINET).
Ethernet ISOonTCP for CP243 - (for S7-200)
Bude se komunikovat se Simatic S7-200 přes modul CP243-Ethernet.
Pro Simatic S7-200 a pro daný modul však v tom případě dochází k přesměrování oblastí dat. Například oblast V není protokolem S7 podporována a proto je přesměrována na oblast DB1. Příklady:
- adresa "V103.4" je přesměrována na "DB1,X103.4"
- adresa "VD62:REAL" je přesměrována na "DB1,REAL62"
- adresa "VW78:INT" je přesměrována na "DB1,INT78"
Ethernet NETLink PRO ETH - (Helmholz, Softing, Accon)
Bude se komunikovat s převodníkem NETLink PRO ETH. |
Max. délka PDU | Zde lze zadat maximální možnou délku dat přenášených v jedné zprávě. Standardní délky jsou 240, 480 nebo 960. Obvykle lze zadat maximum, tzn. 960. Při inicializaci komunikace s PLC ovladač zjistí jakou délku podporuje PLC a pokud podporuje menší, pak tuto hodnotu automaticky zmenší.
V praxi se však zjistilo, že někdy PLC v jedné zprávě posílá menší počet dat (např. posílá pouze 240) i když při inicializaci sdělilo že může posílat větší počet dat (např. 480). Projeví se to tak, že po příjmu dat se v objektu PmaCommGroup naplní pouze část proměnných, zbytek proměnných nebude komunikován. Tehdy je nutno změnit hodnotu z délky 960 na délku 240. |
|
Rack | (0-7) Určuje číslo rack-u na kterém je umístěn procesor, se kterým se požaduje komunikovat. Obvykle je hodnota 0.
Zadává se pouze pokud Typ komunikace = "Ethernet ISOonTCP Standard" |
CPU Slot | (0-31) Určuje číslo slot-u na kterém je umístěn CPU procesor, se kterým se požaduje komunikovat. (Upozornění: NENÍ to slot komunikační karty!)
- Často je hodnota 2.
- Pro zabudovaná Ethernet rozhraní (např. S7-1200, S7-1500, CPU1512SP ...) je hodnota 1.
Příklad: Na slotu 1 obvykle bývá zdroj napětí a pokud je zdroj větší (např. pro S7-400), pak může zabírat i další sloty. Pokud tedy zdroj zabírá slot číslo 1 a 2 a na slotu 3 je například ventilátor (nebo je slot neobsazen), pak dáme procesor na slot 4. V tomto konfigurátoru tedy bude hodnota 4.
Zadává se pouze pokud Typ komunikace = "Ethernet ISOonTCP Standard" |
Local TSAP | (hex) Určuje adresu LocalTSAP (v hexadecimálním tvaru). Obvykle je hodnota 4d57 ('MW').
Zadává se pouze pokud Typ komunikace = "Ethernet ISOonTCP for CP243" |
Remote TSAP | (hex) Určuje adresu RemoteTSAP (v hexadecimálním tvaru). Obvykle je hodnota 4d57.
Zadává se pouze pokud Typ komunikace = "Ethernet ISOonTCP for CP243" |
MPI/DP address | (0-31) Určuje MPI nebo DP-PROFIBUS adresu procesoru, se kterým se požaduje komunikovat. Pro MPI je často hodnota 2.
Zadává se pouze pokud Typ komunikace = "Ethernet NETLink PRO ETH". |
Connection type | Typ připojení. V konfiguraci sítě lze nastavit maximální počet připojení pro daný typ.
Zadává se pouze pokud Typ komunikace = "Ethernet ISOonTCP Standard" nebo "Ethernet NETLink PRO ETH".
1 = PG-connection - Programovací zařízení
2 = OP-connection - Operátorský panel
3 = OTHER-connection - Jiný typ |
---|
Popis komunikace pomocí objektu PmaCommGroup
Pro tento ovladač lze použít objekty
PmaCommGroup.
Proměnné v objektu
PmaCommGroup (nebo ještě lépe proměnné v objektu
PmaData s datovým rozšířením
ExtComm) mohou být v libovolném množství, libovolného typu v libovolném pořadí. Ovladač sám optimálním způsobem vnitřně vytvořenými komunikačními zprávami vyčítá data ze zařízení.
Proměnné se vyčítají všechny (pokud konfigurátor "
Obnovování dat povoleno" je zatržen). Při zápisu do proměnné se posílá do zařízení pouze tato jedna proměnná (pokud konfigurátor "
Automaticky zasílat při zápisu do položky" je zatržen).
Popis konfigurátoru "ItemId":
ItemId je textový identifikátor položky, který slouží pro adresování položky v zařízení. Z konfigurátoru
ItemId ovladač pozná, jak se má hodnota položky přijímat nebo vysílat.
Text lze buď napsat ručně, nebo sestavit v okně, které se otevře tlačítkem vpravo od konfigurátoru.
Pro zadání lze použít
Makro výraz (vyhodnocuje se po spuštění aplikace).
Příklady tvaru identifikátoru:
- "I0.2" = Hodnota I=Input uložená na adrese 0 ve druhém bitu jako datový typ X=bit=přednastaveno.
- "Q0.2" = Hodnota Q=Output uložená na adrese 0 ve druhém bitu jako datový typ X=bit=přednastaveno.
- "QB0" = Hodnota Q=Output uložená na adrese 0 jako datový typ B=Byte=8 bitů.
- "MREAL30" = Hodnota M=Memory uložená na adrese 30 jako datový typ REAL=4-bajt reálné číslo.
- "MCHAR2.8" = Hodnota M=Memory uložená na adrese 2 jako datový typ CHAR s délkou textu 8 znaků.
- "MSTRING5.124" = Hodnota M=Memory uložená na adrese 5 jako datový typ STRING s délkou textu 124 znaků.
- "DB10,W83" = Hodnota DB=DataBlock č. 10 uložená na adrese 83 jako datový typ W=Unsigned Word.
- "DB3,Wbcd83" = Hodnota DB=DataBlock č. 3 uložená na adrese 83 jako datový typ Wbcd=Unsigned Word in BCD code.
- "DB24,CHAR0.12" = Hodnota DB=DataBlock č. 24 uložená od adresy 0 (na adrese 0,1,..11) jako 12 položek typu CHAR které se v systému PROMOTIC uloží do jedné hodnoty typu String.
- "DB25,STRING0.12" = Hodnota DB=DataBlock č. 25 uložená od adresy 0 jako datový typ S7 STRING, která se v systému PROMOTIC uloží do hodnoty typu String.
- "T15" = Hodnota T=Timer uložená na adrese 15 jako datový typ S5T, která se v systému PROMOTIC uloží do hodnoty typu Date.
- "TWbcd15" = Hodnota T=Timer uložená na adrese 15 jako datový typ Wbcd=Unsigned Word in BCD code.
- "C20" = Hodnota C=Counter uložená na adrese 20 jako datový typ Wbcd=Unsigned Word in BCD code.
- "CW20" = Hodnota C=Counter uložená na adrese 20 jako datový typ W=Unsigned Word.
Poznámka: Ovladač zatím nepodporuje v jedné proměnné s jedním
ItemId přenášet vektor hodnot (kromě vektoru znaků v typu
CHAR nebo
WCHAR).
Tento konfigurátor se pro daný ovladač nevyužívá.
Chybové kódy PduErrCodes
Pokud se některé proměnné nedaří přenášet, pak PLC automat vrací kód chyby
PduErrCode.
Hodnota tohoto kódu lze například zjistit v INFO systému v kartě "
/COMM/Ovladač/Log".
Význam hodnot kódu chyby (hodnoty jsou v hexadecimálním tvaru):
0000 - NoError.
0001 - There is no peripheral at given address.
0003 - A piece of data is not available, e.g. when trying to read a bit block (with a length other than 1) or a non existing DB (200 family).
0005 - The data address exceeds the address range.
0006 - Can not read a bit block with a length other than 1.
0007 - Write data size does not fit item size.
000A - A piece of data is not available, e.g. when trying to read a non existing DB.
8000 - Function already occupied.
8001 - Not allowed in current operating status.
8101 - Hardware fault.
8103 - Object access not allowed.
8105 - Invalid address.
8106 - Data type not supported.
8107 - Data type not consistent.
810A - Object does not exist.
8301 - Insufficient CPU memory.
8402 - CPU already in RUN or already in STOP.
8404 - Severe error.
8500 - Incorrect PDU size.
Asi je nutno zmenšit hodnotu v konfigurátoru "
Max. délka PDU".
8702 - Address invalid.
D002 - Step7:variant of command is illegal.
D004 - Step7:status for this command is illegal.
D0A1 - Step7:function is not allowed in the current protection level.
D201 - Block name syntax error.
D202 - Syntax error function parameter.
D203 - Syntax error block type.
D204 - No linked block in storage medium.
D205 - Object already exists.
D206 - Object already exists.
D207 - Block exists in EPROM.
D209 - Block does not exist/could not be found.
D20E - No block present.
D210 - Block number too big.
D240 - Unfinished block transfer in progress?
D240 - Coordination rules were violated. Multiple functions tried to manipulate the same object. Example: a block could not be copied, because it is already present in the target system.
D241 - Operation not permitted in current protection level.
D242 - Protection violation while processing F-blocks. F-blocks can only be processed after password input.
D401 - Invalid SZL ID.
D402 - Invalid SZL index.
D406 - Diagnosis: info not available.
D409 - Diagnosis: DP error.
DC01 - Invalid BCD code or Invalid time format?
Komunikace s převodníkem NETLink PRO ETH
Převodník
NETLink PRO ETH převádí Ethernet protokol
S7 na fyzické rozhraní
MPI,
PROFIBUS nebo
PPI. Pokud převodník je připojen do
MPI/
PROFIBUS sítě, pak v této síti může být napojeno i více procesorů se kterými se požaduje komunikovat (každý bude mít jinou
MPI/
DP adresu). Jeden objekt
PmaComm komunikuje jen s jedním procesorem. Lze mít současně více objektů
PmaComm se stejnou IP adresou převodníku ale s jinou hodnotou
"MPI/DP address".
Převodník
NETLink PRO ETH dodává například:
- Převodníky jiných firem (např. IBH NETLink, NETLink Kepware ...). Není vyzkoušeno, zda s těmito jinými převodníky lze komunikovat pomocí ovladače PmS7.
Důležitá nastavení komunikace v PLC Simatic pomocí software TIA portal
Verze
Simatic-1200 a -1500 od roku
2014 vyžadují programování v software
TIA portal 13 nebo vyšší.
Upozornění: V roce 2015 pro nové verze PLC (např.
Simatic S7/1200 V.4.1.1 - 4.1.3) je nutno provést aktualizaci
TIA portal 13 SP1 na
Update 5 (9/2015).
V těchto software jsou implicitně nastaveny některé konfigurátory tak, že externí SCADA systémy (a tedy i systém PROMOTIC) s takto nastaveným PLC
nemohou komunikovat.
V
TIA portal je proto nutno změnit následující nastavení:
1) Protection & Security:
Vyberte
"CPU project" v levém panelu a stiskněte
Alt+Enter nebo v kontextovém menu vyberte
"Properties".
V položce
"Protection":
1) Vyberte konfigurátor "Full access".
2) Zatrhněte konfigurátor "Permit access with PUT/GET communication from remote partner".
V novějších verzích TIA portal (asi od verze 18) je potřeba také nastavit, aby komunikace neprobíhala šifrovaně.
Zrušte zatržení konfigurátoru "Only allow secure PG/PC and HMI communication".
Na obrázku jsou nastavení platná pro verzi TIA portal 18.
2) DB optimized:
Vyberte
"DB" v levem panelu pod
"Program blocks" a stiskněte
Alt+Enter nebo v kontextovém menu vyberte
"Properties".
Zrušte nastavení
"Optimized block access" (implicitně je zatrženo).
Další zajímavá nastavení, která ale obvykle není nutno měnit:
General > Communication load:
Operační systém CPU poskytuje maximální zadané procento z celkového procesního výkonu CPU pro komunikační úkoly. Komunikační zátěž lze nastavit ve
STEP 7 pro CPU řady
S7. Výchozí hodnota závisí na typu a verzi použitého CPU. Pokud výpočetní výkon není nutný pro komunikaci, pak je výpočetní výkon k dispozici operačnímu systému a uživatelskému programu.
Komunikaci je přidělen požadovaný výpočetní čas v krocích po 1 ms, s prioritou 15. Při 50% komunikační zátěži se pro komunikaci použije 500 μs každé 1 milisekundy.