Vai al contenuto

Problemi con il blocco funzione MQTT CLient

Home Forum Programmazione IEC 61131 (LogicLab) Problemi con il blocco funzione MQTT CLient

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #64334
    johnnyba71
    Partecipante

    Stò facendo qualche test con il FB MQTTClient sul PLC della serie SlimLine. Ancora prima di dare il comando di Enable il valore Fault alterna valori di TRUE e FALSE. Analizzando con Toolly vedo questo errore:

    01:02:55.046133| MQTTClient:Er|Error:10067010, On Case:0, Back to:0

    E con la finestra di DEBUG:

    User program error:9941100
    U
    ser program error:10067010

    Ho fatto diversi tentativi ma non riesco a capire da cosa dipende.

    #64357
    Sergio Bertana
    Amministratore del forum

    Per gli errori di esecuzione occorre fare riferimento a questa pagina. E’ anche possibile accedere con un browser alle pagine web dello SlimLine e nella pagina Logs troverai l’indicazione dell’errore con il link diretto alla pagina di spiegazione.

    Errore 9941100 Blocco funzione eseguito in task diversa da Back  SysTCPClient
    Errore 10067010 FB eseguita in una task diversa dalla task di background MQTTClient

    In pratica hai eseguito il programma in una task diversa della back.

    Per testare l’MQTT ti consiglio di usare il programma ST_MQTTClient che trovi in questo articolo.

     

    #69323
    Chiara
    Partecipante

    Come si può sostiuire il valore del ClientID con l’hostname del PLC impostato da interfaccia web in  SYSTEM SETTINGS ?

    MQTT.ClientID:=ADR('Elsist'); //Client identifier
    #69326
    Sergio Bertana
    Amministratore del forum

    Le impostazioni da pagina web System settings, sono accessibili da programma utilizzando la funzione SysOSIDValue. Nel tuo caso per acquisire il valore impostato nel campo Device name devi riferirti al SYS_ID#OSID_DEVICE_NAME. Ecco un esempio di codice.

    PROGRAM MyProgram
    VAR
        i : BOOL; (* Auxiliary variable *)
        HostName : STRING[ 20 ]; (* Hostname *)
    END_VAR
        i:=SysOSIDValue(FALSE, SYS_ID#OSID_DEVICE_NAME, ADR(HostName));

    Nel tuo programma di gestione MQTT ti dovrai poi rifereire alla variabile HostName.

    MQTT.ClientID:=ADR(HostName); //Client identifier
Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.