El bloque de funciones FB_MqttSubscribe permite gestionar la suscripción a un tema específico en el Servidor MQTT.
Se admiten las funciones siguientes:
Suscripción al tema especificado
Cancelación de la suscripción al tema especificado
Lectura de los datos en función del tema suscrito
El bloque de funciones utiliza la conexión con el Servidor MQTT establecida anteriormente mediante el FB_MqttClient.
Una vez activado el bloque de funciones, se enviará la suscripción al tema especificado al conectado Servidor MQTT. El estado de la suscripción y, con ello, la posibilidad de recibir datos, se indican mediante la salida q_xReady. Los nuevos datos recibidos se indican mediante la salida q_xNewMessage.
Al deshabilitar el bloque de funciones, se envía la cancelación de la suscripción al tema anteriormente suscrito. El estado de la cancelación de la suscripción se indica mediante la salida q_xActive. Solo se permitirá una nueva suscripción si se ajusta la salida q_xActive en FALSE.
Una vez suscrito correctamente al tema especificado, ya podrán leerse los datos recibidos sobre dicho tema; para ello, deberá ajustarse el comando i_xExecute en TRUE.
Nivel de suscripción |
Descripción |
---|---|
QoS 0 |
Pueden leerse los últimos datos relacionados con el tema suscrito. |
QoS 1 |
|
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_xEnable |
BOOL |
El bloque de funciones envía una suscripción al tema especificado al Servidor MQTT conectado en un flanco ascendente de esta entrada. Consulte Comportamiento de los bloques de funciones con las entradas i_xEnable, i_xExecute y i_xErrorQuit. |
i_stSubscribeTopic |
ST_SubscribeTopic |
Estructura en la que se especifica el tema al que desea suscribirse. |
i_xExecute |
BOOL |
El bloque de funciones lee el último mensaje de aplicación recibido sobre el tema suscrito en un flanco ascendente de la entrada. Consulte Comportamiento de los bloques de funciones con las entradas i_xEnable, i_xExecute y i_xErrorQuit. |
i_xErrorQuit |
BOOL |
El bloque de funciones confirma el error detectado indicado por q_xError en un flanco ascendente de esta entrada. Consulte Comportamiento de los bloques de funciones con las entradas i_xEnable, i_xExecute y i_xErrorQuit. |
i_pbyBuffer |
POINTER TO BYTE |
Puntero del búfer en el que se copia el mensaje recibido. |
i_udiBufferSize |
UDINT |
Tamaño del búfer en bytes.
NOTA: La longitud no deberá superar el tamaño de la variable a la que apunta i_pbyBuffer.
|
i_stTimeout |
ST_Timeout |
Estructura en la que se especifican los tiempos de espera. |
Entrada/salida |
Tipo de datos |
Descripción |
---|---|---|
iq_fbMqttClient |
FB_MqttClient |
Referencia al FB_MqttClient asociado empleado para el intercambio de datos con el Servidor MQTT. |
Salida |
Tipo de datos |
Descripción |
---|---|---|
q_xActive |
BOOL |
Indica que la ejecución del bloque de funciones permanece activa. Mientras la salida muestre TRUE, el bloque de funciones deberá ejecutarse de manera cíclica. |
q_xReady |
BOOL |
Indica que la suscripción al tema especificado se ha enviado correctamente al Servidor MQTT. |
q_xDone |
BOOL |
Indica que el último mensaje recibido de la aplicación se ha copiado correctamente en el búfer especificado con la entrada i_pbyBuffer. |
q_xBusy |
BOOL |
Indica que la suscripción está en curso. |
q_xError |
BOOL |
Indica que se ha detectado un error durante la ejecución del bloque de funciones. |
q_etResult |
ET_Result |
Proporciona información de diagnóstico y estado en forma de valor numérico. |
q_sResultMsg |
STRING [80] |
Proporciona información adicional de diagnóstico y estado en forma de mensaje de texto. |
q_xNewMessageAvailable |
BOOL |
Indica que hay disponible un nuevo mensaje de aplicación sobre el tema suscrito. |
q_udiMessageLength |
UDINT |
Indica el número de bytes copiados en el búfer que se ha especificado mediante la entrada . i_pbyBuffer. |
q_xTruncated |
BOOL |
Si esta salida se establece en TRUE, significa que se ha truncado el mensaje de aplicación copiado. |
Este bloque de funciones proporciona entradas o entradas y salidas de tipo POINTER TO… o REFENCE TO…. Al utilizar un puntero o una referencia de este tipo, el bloque de funciones accede al área de memoria dirigida. En el caso de un evento de cambio online, es posible que las áreas de memoria se desplacen hacia nuevas direcciones y que, en consecuencia, un puntero o una referencia pasen a ser no válidos. Para evitar la presencia de errores relacionados con punteros no válidos, las variables de tipo POINTER TO… o REFERENCE TO… deberán actualizarse de manera cíclica o, al menos, al principio del ciclo en el que se utilicen.
ATENCIÓN | |
---|---|
En el siguiente diagrama de secuencia de UML se ilustra la interacción con el bloque de funciones FB_MqttClient, el cual necesita ejecutarse de manera cíclica para procesar los mensajes recibidos y detectar una posible interrupción de la comunicación con el servidor.