RECEIVESMS
TYPE KRATKY_STRING : STRING[160]; END_TYPE
PROGRAM TEST_RECEIVESMS
VAR_OUTPUT
SMSRES : INT := 0;
SMS_RECEIVE : BOOL := FALSE;
SMS_CHANNEL : ARRAY[0..9] OF STRING;
SMS_SENDER : ARRAY[0..9] OF KRATKY_STRING;
SMS_MESSAGE : ARRAY[0..9] OF STRING;
RECEIVE_TIME : ARRAY[0..9] OF DT;
RESULT : ARRAY[0..9] OF INT;
I : INT := 0;
END_VAR
IF SMS_RECEIVE THEN
FOR i := 0 TO 9 DO
RESULT[I] := MESSAGING.RECEIVESMS(CHANNEL =>
SMS_CHANNEL[I], SENDER => SMS_SENDER[I], MESSAGE =>
SMS_MESSAGE[I], RECEIVETIME => RECEIVE_TIME[I]);
END_FOR;
SMS_RECEIVE := FALSE;
END_IF;
MESSAGING.SENDSMS();
END_PROGRAM
MESSAGING
V1.0
Volaná funkce se dotazuje připojených modemů na přijaté SMS zprávy v každém výpočetním cyklu PLC. Tato funkce je určena pouze pro ST kód, tak aby funkce byla volaná pouze tehdy, když chceme zjistit stav příchozích zpráv.
Výstup | Typ | Význam |
---|---|---|
=> | INT | číselný status; výsledek kontroly nastavení systému |
CHANNEL | STRING | kanál, na kterém je připojen modem, který obdržel zprávu |
SENDER | STRING | odesílatel |
MESSAGE | STRING | přijatá SMS zpráva (základní ASCII znaky) |
RECEIVETIME | DT | čas, kdy byla SMS zpráva přijata |
Při každém volání funkce receivesms v programu se funkce doptává připojených modemů na přijaté SMS zprávy. Výstupem je název kanálu channel, ze kterého byla SMS zpráva vyčtena, odesílatel sender, čas přijetí zprávy receivetime, samotná SMS zpráva message a výsledek čtení z daného místa.
Proměnná channel odkazuje na definované komunikační spojení. To je třeba vytvořit v možnostech PLC: Dvojklikem na PLC zobrazte jeho nabídku a vyberte záložku Definice hlášení a pravým kliknutím zobrazíte nabídku, ve které vyberete Přidat alarmový kanál.
Nyní definujete název, který je vstupem proměnné channel. Dále definujete typ spojení GSM. Kliknutím vyberete kanál a v jeho vlastnostech nastavíte port, na kterém bude RT komunikovat s modemem. Dále se definují komunikační vlastnosti kanálu. V případě zabezpečené SIM karty je třeba zadat PIN kód. Nakonec potvrdíte všechny změny klinutím na OK v červeně označeném dialogu.
V případě použití některého ze standardně dodávaných modemů (Siemens TC-35, Wavecom), je možné vybrat v Nastavení AT příkazů předdefinované příkazy pro nastavení modemu. Následně klikněte na tlačítko Použít. Potřebné AT příkazy se následně doplní do tabulky. Zmáčkněte tlačítko Zavřít a potvrďte změny klinutím na OK v červeně označeném dialogu. V případě jiného typu modemu, je třeba nastavit modem jeho příslušnými AT příkazy. (V případě problému s nastavením jiného typu modemu kontaktujte technickou podporu Domat Control System.)
Výstupní proměnná result hlásí výsledek kontroly nastavení systému.
Číselný status | Význam |
---|---|
0 | OK |
16 | Neznámý kanál |
24 | Chyba - hodnota číselného statusu nelze určit |
25 | Nemožnost otevřít port nebo inicializovat GSM modem (např. chybně zadané číslo portu) |
26 | Timeout při provádění AT příkazu (default 2 s) |
31 | Není k dispozici žádná zpráva |
42 | Chyba GSM kanálu (např. špatný PIN, nedostupnost sítě, …) |
jiné | Interní chyba - kontaktujte technickou podporu Domat Control System |
Tato funkce může být použita k zadání řetězce (string) do PLC pomocí SMS zprávy. Příklad viz výše Volání v ST. Je zde použit standardní počet 10 úložných míst, ze kterých se vyčítají aktuální přijaté SMS zprávy. Všechny odpovídající místa v polích sms_receive, sms_channel, sms_sender, sms_message, receive_time a result jsou parametry jedné SMS zprávy. Aktuálně vyčtené zprávy mají na odpovídajícím místě v results číslo 0. V případě jiného čísla na některé z pozic results nedošlo k vyčtení SMS zprávy z tohoto místa a na odpovídající pozici v ostatních polích sms_receive, sms_channel, sms_sender, sms_message a receive_time je buď prázdné místo, nebo poslední zpráva, která byla na toto místo uložena. Velikost přijaté zprávy je omezena na 160 znaků.