Příklad je umístěn ve složce:
/Pm/Examples/Commun/Socket_Racom.
Příklad slouží jako ukázka Soket (Ethernet) komunikace přes zařízení: Morse Aplikační Server (MAS) protokolem MORSE od firmy RACOM.
Z hlediska systému PROMOTIC je to příklad na komunikaci přes sokety typu UDP bez PROMOTIC hlavičky. Z hlediska aplikace je to příklad na přenos dat v Modbus podobě. Tato data koncové RACOM zařízení převádí na sériovou linku a komunikuje s PLC například typu Modicon. Obecný popis Soket komunikace viz Přenos dat v síti přes Sokety.
PC na kterém běží aplikace PROMOTIC muselo mít nastavenou TCP/IP adresu na hodnotu
192.168.100.32. TCP/IP adresa
MAS serveru byla
192.168.100.7.
Popis aplikace: Celý příklad je vytvořen v objektu
"SocketRacom". Jediná věc, kterou je důležité nastavit mimo tento objekt je nastavení v objektu
PmRoot v záložce
Sokety. Zde je potřeba nakonfigurovat dvě soket skupiny:
1.serverová soket skupina:
Název: racom_server (může být i jiné)
Číslo portu: 8888 (může být i jiné, závisí na nastavení MAS)
2.klientská soket skupina:
Název: racom_client (může být i jiné)
Sítová adresa serveru: závisí na nastavení MAS (127.0.0.1 je adresa lokálního PC)
Číslo portu: 8888 (může být i jiné, závisí na nastavení MAS)
a zatrhnout položu Sokety povoleny.
Obraz Main objekt typu PmPanel: V tomto objektu jsou tlačítka (typu PmiButton), ze kterých v události onButtonUp je volána metoda Start objektu SocketRacom. Tato metoda přenáší zprávy pro objekty Data_ReadFce3 až Data_WriteFce6.
V objektu "SocketRacom" jsou objekty: -
Data_Zmeny: objekt typu
PmData. Tento objekt přijímá nevyžádaná (změnová) data. Je to podobné jako u
Data_ReadFce3 ale nemusí se posílat žádost.
-
Data_Error: objekt typu
PmData. Tento objekt přijímá jakékoli data, která nikdo nechce. Při správném režimu by data do tohoto objektu neměla chodit.
-
Data_Par: objekt typu
PmData. V datu
MAS_IPAddr je IPadresa
MAS serveru. V tomto příkladě je tam hodnota: 192.168.100.7.
-
Timeout: objekt typu
PmSequencer. Tento objekt zajištuje kontrolu prodlevy mezi příjmem a vysláním dané zprávy, tzn. mezi posláním dat objektem
Send a příjmem dat do objektu
Recv. Pokud do objektu
Recv do 10 sekund nepříjde odpověď, pak se vyvolá událost
onStep.
Důležité skripty: V objektu SocketRacom jsou metody (viz založka "Metody"):
-
Start: Metoda je volána z tlačítek obrazu
Main (typu
PmPanel) a spouští metodu
StartSend vnořených objektů
PmFolder.
-
DataAfterRecv: Tato metoda se vyvolá vždy po příjmu jakékoli zprávy. Tato metoda je volána v událostech
onEndOfTransfer datových objektů které příjímají.
-
DataAfterSend: Tato metoda se vyvolá vždy po zaslání jakékoli zprávy. Tato metoda je volána v událostech
onEndOfTransfer datových objektů které zasílají.
- OnError: Tato metoda se vyvolá vždy po jakékoli komunikační chybě.
Tvar dat v objektech
PmData:
Zařízení MAS komunikuje přes UDP sokety a je přesně stanoveno, jak má vypadat tvar zprávy. Pro tuto komunikaci tedy nelze použít standardní Promotic sokety, neboť tyto do dat přidávají Promotic hlavičku. V konfiguraci soketových skupin je proto nutno vybrat typ protokolu - Omezená délka dat bez PROMOTIC hlavičky
Pak data, která jsou nastavena v objektu PmData se přes sokety vyšlou přesně v takové podobě, v jaké je nastavil projektant. Jedinou výjimkou je, že data typu Integer a Long se vysílají v obráceném bajtovém pořadí než jak je zvykem na platformě PC. V tomto příkladě nám to však vyhovuje, protože přesně to vyžaduje protokol MORSE i protokol Modbus.
V objektech
PmData napojena na SocketKlient skupinu musí data pro
MORSE komunikaci vypadat následovně:
1. položka - název: MORSE_flag
- datový typ: Integer (2 bajty)
- hodnota: vždy 0
- význam: MORSE systémové bity
2. položka - název: MORSE_PT
- datový typ: Byte (1 bajt)
- hodnota: vždy 9
- význam: MORSE packet type
3. položka:
- název: MORSE_DRNo
- datový typ: Byte (1 bajt)
- hodnota: součet h1 + h2
h1: pro směr Promotic->MAS vždy 0, jinak vždy 128
h2: hodnota 0-8 využitelné například jako pořadové číslo paketu.
- význam: Směr zprávy a pořadové číslo
4. položka:
- název: MORSE_addr
- datový typ: Long (4 bajt)
- hodnota: číslo dodané správcem dané RACOM sítě
- význam: MORSE adresa cílové stanice
a další položky jsou již přenášená data
V objektech
PmData napojena na
SocketServer skupinu musí data vypadat následovně:
- Další položky jsou pak již stejné jako u klient dat.