cz
en

Posílání SMS GSM modemem

Jedna z nejčastějších chyb při posílání SMS alarmů přes GSM modem bývá chyba 26, Timeout při vykonávání AT příkazu:


Jako první můžete zkontrolovat že sim karta funguje a podporuje posílání sms (není pouze na data). Někdy operátor vyžaduje uskutečnit nějaký hovor, aby si kartu aktivoval v systému. Takže vyzkoušet sim v mobilu, poslat sms a když je to ok, pokračovat v modemu. Hlavní problém s GSM modemy na sériovém rozhraní RS232 je ten, že většinou očekávají signály řízení toku dat - RTS, CTS atd, zatímco některé PLC regulátory mívají (pro omezený počet pinů na procesoru) na konektorech Cannon9 vyvedeny pouze signály RX, TX a GND. Regulátory běžící na linuxu např. markMX, markMX2, mark320, atd. tyto signály mají a stačí pouze v IDE zvolit řízení toku RTS/CTS.

Takže jako první věc musíme sehnat správný modemový kabel.

Existují také nullmodemové kabely, v nichž se kříží signály Rx a Tx, a které jsou určeny k propojení dvou zařízení charakteru terminál (např. PLC s jiným PLC, PLC na převodník M-Bus atd.). Tyto kabely většinou pro spojení PLC a modemu nelze použít. Nejčastější tři typy nullmodemových kabelů jsou tyto:

Kabel s plným řízením toku, Full Handshake Null Modem, nejspíš obdržíme, když kupujeme hotový nullmodem kabel. Nullmodemové kabely mají obvykle na obou koncích female konektory (s dutinkami).

Pro připojení modemu k PLC ovšem potřebujeme modemový kabel. Standardní modemový kabel má konektory female (dutinky) a male (kolíky) a všechny piny jsou propojeny „1:1“ (tedy 1 na 1, 2 na 2, atd. – je to vlastně prodlužovací kabel). Tento kabel je obvykle k dostání spolu s modemem. Pro komunikaci ale postačí i jednoduchý třívodičový modemový kabel, který využívá pouze dva signálové vodiče a zem (2 – 2, 3 – 3, 5 – 5), a signály pro řízení toku dat u něj nejsou zapojeny.

Pro připojení modemu k podstanicím Wall .../COM PLCs (Wago) je nutné vyrobit speciální kabel s konektory male (kolíky) na obou koncích a zapojením 2-3, 3-2, 5-5:

I když použijeme standardní modemový kabel Cannon 9M - 9F s přímým propojením všech devíti pinů (1-1, 2-2, atd. ... 9-9), modem je nutné nakonfigurovat tak, aby nepoužíval řízení toku, neboť tyto signály na straně PLC chybí tak jako tak. Modem se konfiguruje pomocí AT příkazu AT\Q0. Pozor na to, že pro konfiguraci je nutné použít terminál (PC), podporující všechny – i řídicí – signály, jinak se s modemem (který je ve výchozím nastavení očekává) vůbec nedomluvíme. Obvykle vyhoví standardní kabel USB-RS232.

Otevřeme terminálový program, např. Hyperterminal ze starších verzí Windows, nebo libovolný jiný program, např. terminal.exe (dostupný na https://sites.google.com/site/terminalbpp/).

Nastavíme správné výchozí komunikační parametry, jako např. 115200,N,8,1. (Některé modemy mají tzv. funkci autobaud, což znamená, že přenosovou rychlost rozpoznají automaticky a odpoví bez nutnosti řešit výchozí hodnoty). Zkusme poslat příkaz "AT"+Enter, modem by měl odpovědět "OK". Pokud nevidíme místně psané znaky, v nastavení programu zaškrtneme Echo - Type characters entered locally.

Jakmile jsme se dostali až sem, pošleme příkaz AT&V pro výpis aktuálního nastavení:

U správně fungujícího modemu to bude vypadat nějak takto:

ACTIVE PROFILE:
E1 Q0 V1 X4 &C1 &D2 &S0 \Q0 \V1
S0:000 S3:013 S4:010 S5:008 S6:000 S7:060 S8:000 S10:002 S18:000
+CBST: 7,0,1
+CRLP: 61,61,78,6
+CR: 0
+FCLASS: 0
+IFC: 0,0
+ILRR: 0
+IPR: 9600
+CMEE: 1
^SCKS: 0,0
OK

Modem, který potřebuje přenastavit:

ACTIVE PROFILE:
E1 Q0 V1 X4 &C1 &D2 &S0 \Q3
S0:000 S3:013 S4:010 S5:008 S6:000 S7:060 S8:000 S10:002
+CBST: 7,0,1
+CRLP: 61,61,78,6
+CR: 0
+CRC: 0
+CMGF: 0
+CNMI: 1,0,0,0,0
+CMEE: 0
+CSMS: 0,1,1,1
+CREG: 0,1
+CLIP: 0,2
+COPS: 0,0,"T-Mobile CZ",0
+CGSMS: 1
+ICF: 3
OK

Rozdíl mezi nimi je zejména v hodnotě parametru \Q:

  • \Q3 (RTS/CTS) – toto je špatně, modem vyžaduje signály pro řízení toku dat,
  • \Q0 (no flow control) – toto je správně, bez kontroly řízení toku dat.

Nastavení změníme tak, že nejdřív uvedem modem do továrního nastavení

AT&F

načež zadáme

AT\Q

(totéž jako AT\Q0, bez řízení toku dat)

AT&W

(trvalý zápis všech aktuálních parametrů do paměti NVRAM)

Řádek vždy ukončíme Enterem. Pak připojíme modemový kabel a opět propojíme modem s PLC.

Doporučuje se vyzkoušet poslat SMS nejdříve manuálně z terminálu. K tomu je potřeba znát sadu AT příkazů pro konkrétní typ modemu; pro chipset Cinterion by mělo vyhovovat

AT+CMGF=1

stiskneme enter, mělo by vypsat OK

AT+CMGS="telefonní_číslo"

potvrdíme entrem

Zadáme text zprávy

potvrdíme entrem

stiskneme Ctrl-Z

potvrdíme entrem

V okně terminálu to vypadá nějak takto:

Pokud SMS dorazí na cílový telefon úspěšně, můžeme zkusit připojit PLC. Před nahráním programu ještě zkontrolujeme definici AT příkazů a pokud je to nutné, smažeme všechny příkazy kromě at+cmgf=1:


Nyní by SMS měly správně odcházet i z PLC.

Výborný nástroj pro diagnostiku chyb je sériový odposlech, který snadno získáme spojením tří konektorů CANNON 9:

  • Computer – sem připojíme PLC
  • Device – zde je tím myšlen GSM modem
  • Spy computer – monitorovací PC s kabelem USB - RS232

Zapojení funguje uspokojivě i s dvěma (LED) diodami místo diody a odporu, LED diody mohou být spíše po ruce než jiné součástky.

Na odposlechovém konektoru není nutné propojovat piny 4,6,1 a 7,8 – stačí použít piny 2 (RX, příjem dat)  a 5 (vztažný vodič). V počítači otevřete terminálový program a připojte příslušný COM port. Terminál vypisuje komunikaci mezi koncovým zařízením (PLC) a modemem. Tak je na první pohled vidět, jestli PLC posílá očekávané příkazy a jestli na ně modem správně reaguje.