Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cs:sw:01-mervis:sending-sms-hidden [2021/08/31 11:47]
avsetula
cs:sw:01-mervis:sending-sms-hidden [2021/09/02 07:52] (current)
avsetula
Line 4: Line 4:
 </​div></​html>​ </​div></​html>​
  
-/* FIXME - změna nadpisu */ 
 ====== Příjem/​odesílání SMS zpráv ====== ====== Příjem/​odesílání SMS zpráv ======
 <WRAP group> <WRAP group>
-<WRAP half column ​81%>+<WRAP half column ​80%>
 [[https://​www.unipi.technology/​cs/​unipi-neuron-s103-g-p107|Některé modely našich PLC]] jsou vybaveny GSM modulem, kterým lze přijímat a odesílat SMS zprávy. Následující návod se věnuje konfiguraci modemu a příjmu/​odesílání SMS pomocí funkčních bloků v Mervis IDE. [[https://​www.unipi.technology/​cs/​unipi-neuron-s103-g-p107|Některé modely našich PLC]] jsou vybaveny GSM modulem, kterým lze přijímat a odesílat SMS zprávy. Následující návod se věnuje konfiguraci modemu a příjmu/​odesílání SMS pomocí funkčních bloků v Mervis IDE.
 </​WRAP>​ </​WRAP>​
-<WRAP half column ​15%>+<WRAP half column ​16%>
 ;;# ;;#
 <​html><​span class="​dev-tag dev-neuron">​Neuron&​nbspS103-G</​span></​html>​ <​html><​span class="​dev-tag dev-neuron">​Neuron&​nbspS103-G</​span></​html>​
Line 17: Line 16:
 </​WRAP>​ </​WRAP>​
  
-/* FIXME - doplněn nadpis, upraven začátek první věty */+
 ===== Konfigurace modemu ===== ===== Konfigurace modemu =====
 Nejprve je třeba nastavit komunikaci s modemem, k tomu slouží **Alarmový kanál**. Dvojitě klikněte na **PLC** v **levém panelu**. Vyberte záložku **Definice hlášení**,​ klikněte pravým tlačítkem myši na prázdný seznam kanálů a v kontextovém menu vyberte možnost **Přidat alarmový kanál**: ​ Nejprve je třeba nastavit komunikaci s modemem, k tomu slouží **Alarmový kanál**. Dvojitě klikněte na **PLC** v **levém panelu**. Vyberte záložku **Definice hlášení**,​ klikněte pravým tlačítkem myši na prázdný seznam kanálů a v kontextovém menu vyberte možnost **Přidat alarmový kanál**: ​
  
 {{ :​cs:​sw:​01-mervis:​sms-gsm1.png?​direct |}} {{ :​cs:​sw:​01-mervis:​sms-gsm1.png?​direct |}}
 +
 +----
  
 Objeví se nový alarmový kanál. Ve výchozím stavu je nastaven pro odesílání e-mailových zpráv. Klikněte na **Typ** (nyní předvyplněn "​Smtp"​) a změňte jej na **Gsm**: ​ Objeví se nový alarmový kanál. Ve výchozím stavu je nastaven pro odesílání e-mailových zpráv. Klikněte na **Typ** (nyní předvyplněn "​Smtp"​) a změňte jej na **Gsm**: ​
  
 {{ :​cs:​sw:​01-mervis:​sms-gsm2.png?​direct |}} {{ :​cs:​sw:​01-mervis:​sms-gsm2.png?​direct |}}
 +
 +----
  
 Nyní se přesuňte do vlastností kanálu a změňte **Číslo portu** na **COM1 (TTL)**: Nyní se přesuňte do vlastností kanálu a změňte **Číslo portu** na **COM1 (TTL)**:
  
 {{ :​cs:​sw:​01-mervis:​sms-gsm3.png?​direct |}} {{ :​cs:​sw:​01-mervis:​sms-gsm3.png?​direct |}}
 +
 +----
  
 Pokud je SIM karta chráněna PIN kódem, zadejte jej do příslušné kolonky. Pokud ne, ponechte ji prázdnou: ​ Pokud je SIM karta chráněna PIN kódem, zadejte jej do příslušné kolonky. Pokud ne, ponechte ji prázdnou: ​
Line 35: Line 40:
 {{ :​cs:​sw:​01-mervis:​sms-gsm4.png?​direct |}} {{ :​cs:​sw:​01-mervis:​sms-gsm4.png?​direct |}}
  
-Většina modemů, včetně těch použitých v Unipi kontrolérech, vyžaduje inicializační příkazy. Klikněte na ikonu {{:​files:​dialog-open_button_2.png?​nolink|}} vedle **Nastavení AT příkazů**. Objeví se následující dialogové okno: +---- 
 + 
 +Většina modemů, včetně těch použitých v Unipi jednotkách, vyžaduje inicializační příkazy. Klikněte na ikonu {{:​files:​dialog-open_button_2.png?​nolink|}} vedle **Nastavení AT příkazů**. Objeví se následující dialogové okno: 
  
 {{ :​cs:​sw:​01-mervis:​sms-gsm5.png?​direct |}} {{ :​cs:​sw:​01-mervis:​sms-gsm5.png?​direct |}}
 +
 +----
  
 V rozbalovacím menu následně vyberte správný modem. Pro jednotky Unipi Neuron se jedná o **Unipi Neuron GSM - G510**: ​ V rozbalovacím menu následně vyberte správný modem. Pro jednotky Unipi Neuron se jedná o **Unipi Neuron GSM - G510**: ​
  
 {{ :​cs:​sw:​01-mervis:​sms-gsm6.png?​direct |}} {{ :​cs:​sw:​01-mervis:​sms-gsm6.png?​direct |}}
 +
 +----
  
 Nezapomeňte tento výběr uložit kliknutím na **Použít** a uzavřením dialogového okna:  Nezapomeňte tento výběr uložit kliknutím na **Použít** a uzavřením dialogového okna: 
  
 {{ :​cs:​sw:​01-mervis:​sms-gsm7.png?​direct |}} {{ :​cs:​sw:​01-mervis:​sms-gsm7.png?​direct |}}
 +
 +----
  
 Kanál je nastaven. Změny je nyní nutné uložit kliknutím na **OK** v červené liště: Kanál je nastaven. Změny je nyní nutné uložit kliknutím na **OK** v červené liště:
Line 52: Line 65:
  
  
-/* FIXME - přidán nadpis a upravena první věta */ +====== ====== 
-===== Odesílání SMS ===== +/* Odeslání ​SMS */ 
-Pro odesílání SMS zpráv vyhledejte funkční blok "​**SendSMS Triggered**"​ a umístěte jej do prostoru programu:  +{{page>​cs:​sw:​01-mervis:​send-sms-hidden}}
- +
-{{:​cs:​sw:​01-mervis:​sms_ide9.png?​direct|}} +
- +
-/* FIXME - upraveno pár detailů v následujícím odstavci */ +
-Tento funkční blok vyžaduje 4 vstupní proměnné. Pro pohodlnější ladění vytvoříme pomocné proměnné. Jako první vytvoříme vstup **channel**. Vytvořte proměnnou typu **string** a jako její počáteční hodnotu zadejte jméno vytvořeného alarmového kanálu. Ve výchozím stavu je nazván jako **alrchannel**:​  +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide10.png?​direct|}} +
- +
-**Stejný proces zopakujeme i u zbytku proměnných:​**  +
- +
-  * **recipient:​** proměnná typu string, obsahuje telefonní číslo v mezinárodním formátu (tj. např. 00420777666555) +
-  * **message:​** proměnná typu string, obsahuje text samotné ​SMS zprávy +
-  * **trigger:​** proměnná typu bool, která zprávu odešle při detekci **náběžné hrany**.  +
- +
-/* FIXME - upraven detail v následující větě ​*/ +
-Výsledek by měl vypadat přibližně takto:  +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide11.png?​direct|}} +
- +
-Nyní sestavu nahrajte a spusťte ladění. Při každé změně hodnoty proměnné **trigger** z **False** na **True** se na zadané číslo odešle SMS zpráva.  +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide12.png?​direct|}} +
- +
-Pokud je odeslání SMS úspěšné,​ výstup **Result** bude mít hodnotu **0**. Pokud ne, zobrazí se chybový kód; v takovém případě určete příčinu problému prostudováním nápovědy k danému funkčnímu bloku (klávesa F1). +
- +
- +
-===== Příjem SMS ===== +
-Funkční blok **receiveSMS** v základu **není určen pro** použití ve **FBD**, jelikož by se na zprávy dotazoval v každém cyklu programu. S patřičnou úpravou jej však ve FBD použít lze. +
- +
-Tento funkční blok nemá žádné vstupní proměnné, ale obsahuje 5 výstupů:​ +
-  * **channel:​** proměnná typu string, obsahuje označení alarmového kanálu na kterém byl SMS přijata (pro případ více modemů) +
-  * **sender:** proměnná typu string, obsahuje telefonní číslo v mezinárodním formátu (tj. např. +420777666555) +
-  * **message:​** proměnná typu string, obsahuje text samotné SMS zprávy +
-  * **receivetime:​** proměnná typu DT, obsahuje čas, kdy byla zpráva přijata +
- +
-Posledním výstupem je výstup bez označení, který je typu integer a obsahuje číselný status s výsledkem operace, více je popsno níže v textu. +
- +
----- +
- +
-<WRAP center round important 95%> +
-Jelikož je blok určen pouze pro použití v ST, je nutné pro jeho použití vytvořit vlastní funkční blok psaný v ST. To je možné pouze v **Plném módu** sestavy. Postup pro přepnutí do plného módu naleznete [[cs:​sw:​01-mervis:​creating-new-project-hidden#​prepnuti_do_plneho_modu|zde v úvodním článku]]. +
-</​WRAP>​ +
- +
-Pro příjem SMS vytvořte funkční blok kliknutím pravým tlačítkem myši na projekt (např. ve spustitelných projektech). +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide13.png?​direct|}} +
- +
-Zobrazí se dialogové okno, zde vyberte/​vložte:​ +
-  * **Název:** ReceiveSMS_fbd +
-  * **Typ:** FunctionBlock +
-  * **Jazyk:** st +
-  * **Jmenný prostor:** v0_0 +
- +
-a potvďte kliknutím na OK. +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide14.png?​nolink|}} +
- +
-Otevře se Vám okno se základní kostrou funkčního bloku. Veškerý obsah bloku smažte a nahraďtě následujícím kódem: +
- +
-<code | ReceiveSMS_fbd.st>​ +
-NAMESPACE v0_0  +
-FUNCTION_BLOCK ReceiveSMS_fbd +
- +
- VAR +
- trigger : R_TRIG; +
- readPulse : bool := 0; +
- END_VAR +
- VAR_INPUT +
- readSMS : bool := 0; +
- END_VAR +
- VAR_OUTPUT +
- result : int := 31; +
-  +
- sms_channel : string := "";​ +
- sender : string := "";​ +
- message : string := "";​ +
- receive_time : dt := dt#​0001-01-01-00:​00:​00;​ +
- END_VAR +
- +
- trigger(CLK:​=readSMS,​Q=>​readPulse);​ +
-  +
- IF readPulse THEN +
- result := MESSAGING.RECEIVESMS( +
- CHANNEL => sms_channel,​ +
- SENDER => sender, +
- MESSAGE => message, +
- RECEIVETIME => receive_time +
- ); +
- END_IF; +
- +
-END_FUNCTION_BLOCK +
-END_NAMESPACE +
-</​code>​ +
- +
-Výsledek by měl vypadat následovně:​ +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide15.png?​direct|}} +
- +
-Okno funkčního bloku nyní můžete zavřít, následně sestavu uložte a kompilujte.  +
- +
-Nyní otevřete **main.program.fbd** a klikněte pravým talčítkém myši do prázdného prostoru a z kontextové nabídky zvolte: **Přidat blok knihovny -> Přidat blok knihovny**. +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide16.png?​direct|}} +
- +
-Otevře se dialogové okno pro vyhledávání funkcí a funkčních bloků. Do pole **Název** zadejte název bloku: //​ReceiveSMS_fbd//,​ označte jej a klikněte na OK.  +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide17.png?​direct|}} +
- +
-Tím se blok vloží do prostoru programu: +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide18.png?​direct|}} +
- +
-Nyní je třeba vytvořit několik testovacích proměnných. Nejprve vytvořte vstupní proměnnou **trigger** typu bool a jako její počáteční hodnotu zadejte **False**. Proměnnou propojte se vstupem **readSMS** bloku: +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide19.png?​direct|}} +
- +
-Následně vytvořte výstupní proměnné **channel**,​ **sender** a **message**,​ všechny jsou typu string. Jako poslední vytvořte proměnnou **receivetime** typu DT. Jelikož jsou všechny proměnné výstupní, není nutné nastavovat jejich počáteční hodnoty. Na závěr je propojte s blokem. +
- +
-Výsledek by měl vypadat přibližně takto:  +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide20.png?​direct|}} +
- +
-Nyní sestavu nahrajte a spusťte ladění. Při každé změně hodnoty proměnné **trigger** z **False** na **True** se přečte jedna zpráva z paměti SIM karty. +
- +
-{{:​cs:​sw:​01-mervis:​sms_ide21.png?​direct|}} +
- +
-Výstup **result** bude mít hodnotu **0**, pokud přečtění zprávy proběhlo v pořádku a hodnotu **31**, pokud není k dispozici žádná zpráva. Ostatní hodnoty indikují chybu, více se dozvíte v nápovědě k funkčnímu bloku **receivesms** (klávesa F1). +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
  
  
 +====== ======
 +/* Příjem SMS */
 +{{page>​cs:​sw:​01-mervis:​receive-sms-hidden}}