Vai al contenuto

ModemSMSSend, sends a SMS message

Vai all indice del manuale di programmazione
Tipo: Blocco funzione
Libreria LogicLab: eLLabModemLib
Libreria Codesys: Non disponibile

Questo blocco funzione esegue l’invio di un messaggio SMS, per la gestione del modem si collega al FB ModemCore di cui occorre fornire l’indirizzo di istanza.

Su fronte attivazione ingresso di Send viene prenotato l’invio del messaggio, non appena sarà possibile il messaggio definito in Text verrà inviato al numero definito in Number. Terminato l’invio verrà attivata l’uscita Done. Disattivando Send si resetta Done ed alla riattivazione verrà inviato un nuovo messagio.

Descrizione

Send (BOOL) Il fronte di attivazione prenota l’invio del messaggio SMS che sarà inviato non appena il modem è libero per l’invio.
Modem (@ModemCore) Indirizzo dell’istanza FB ModemCore di gestione modem.
Number (@STRING) Pointer al numero di telefono a cui eseguire l’invio del messaggio.
Text (@STRING) Pointer testo messaggio da inviare.
Done (BOOL) Si attiva al termine dell’invio del messaggio SMS e rimane attiva fino alla disabilitazione di Send.
Fault (BOOL) Attivo per un loop se errore invio messaggio SMS.
Messages (UDINT) Contatore messaggi inviati.
Errors (UDINT) Contatore errori esecuzione.

Immagine FB_ModemSMSSend

Esempi

Come utilizzare gli esempi.
Nell’esempio attivando da debug SMSSend verrano inviati 3 messaggi SMS ai 3 numeri indicati. Al termine dell’invio verrà resettato SMSSend.

LogicLab (Ptp118, ST_ModemSMSSend)
PROGRAM ST_ModemSMSSend
VAR
    SMSSend : BOOL; (* SMS send command *)
    i : UDINT; (* Auxiliary variable *)
    TCPClient : SysTCPClient; (* TCPClient management *)
    Mdm : ModemCore; (* Modem core FB *)
    SMSTx : ARRAY[0..2] OF ModemSMSSend; (* Modem SMS send *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_ModemSMSSend"
// *****************************************************************************
// The program shows how to send multiple SMS.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATIONS
    // -------------------------------------------------------------------------
    // Program initializations.

    IF (SysFirstLoop) THEN

        // TCP Client initialization.

        TCPClient.PeerAdd:=ADR('192.168.0.184'); //Peer address
        TCPClient.PeerPort:=1000; //Peer port
        TCPClient.LocalAdd:=ADR('0.0.0.0'); //Local address
        TCPClient.LocalPort:=0; //Local port
        TCPClient.FlushTm:=50; //Flush time (mS)
        TCPClient.LifeTm:=60; //Life time (S)
        TCPClient.RxSize:=256; //Rx buffer size
        TCPClient.TxSize:=256; //Tx buffer size

        // FB Modem initialization.
        // TCheck must be set to a value less than TCPClient LifeTm.
        // TPower must be set to the time required to modem powering on.

        Mdm.Enable:=TRUE; //Enable
        Mdm.SpyOn:=TRUE; //Spy On
        Mdm.AutoHangUp:=TRUE; //Auto hangup
        Mdm.Type:=MODEM_TYPE#WLR220; //Modem WLink WL-R220
        Mdm.TCheck:=T#30s; //Check time
        Mdm.TPower:=T#60s; //Power time

        // Set SMS send parameters.

        SMSTx[0].Number:=ADR('12345678'); //Phone number
        SMSTx[0].Text:=ADR('Message Nr. 1'); //Text to send

        SMSTx[1].Number:=ADR('12345678'); //Phone number
        SMSTx[1].Text:=ADR('Message Nr. 2'); //Text to send

        SMSTx[2].Number:=ADR('12345678'); //Phone number
        SMSTx[2].Text:=ADR('Message Nr. 3'); //Text to send
    END_IF;

    // -------------------------------------------------------------------------
    // MODEM CORE MANAGEMENT
    // -------------------------------------------------------------------------
    // Modem core.management.

    TCPClient(Connect:=Mdm.Connect); //TCPClient management
    Mdm(File:=TCPClient.File); //Gestione modem core

    // SMS send management.

    FOR i:=0 TO 2 DO SMSTx[i](Modem:=ADR(Mdm));END_FOR;
    SMSTx[0].Send:=SMSSend; //SMS send command
    SMSTx[1].Send:=SMSTx[0].Done; //SMS send command
    SMSTx[2].Send:=SMSTx[1].Done; //SMS send command
    
    // When all messages are been sent the command is reset.

    IF (SMSTx[2].Done) THEN SMSSend:=FALSE; END_IF; 

// [End of file]
Was this article helpful?