Instrucciones: Este artículo muestra la utilización de la función estándar "AXC_SetFilter()" para ajustar los siguientes filtros de avisos en modo Runtime dentro de un WinCC Alarm Control. Con ayuda de un filtro de avisos, sólo se deben mostrar aquellos avisos que:
- estén asignados a las clases de aviso "Alarma", "Advertencia" o "Avisos de control de procesos AS".
- contengan la cadena de caracteres "TI4711" en el bloque de textos de usuario tb1 ("Origen").
- contengan la cadena de caracteres "area1" en el bloque de textos de usuario tb2 ("Zona").
- no se oculten por medio de la opción "Alarm Hiding (ocultar alarmas)" (La opción "Alarm Hiding" está disponible a partir del WinCC V6.2).
La siguiente imagen muestra el Script correspondiente.
  Figura 01
El Script está disponible para su descarga en forma de archivo de texto y de acción exportable.
WinCC_AXC_SetFilter.zip ( 3 KB )
En la siguiente tabla se explican la partes de programación más importantes.
| Nº |
Descripción |
| 1 |
"memset(&scSelect , 0, sizeof(scSelect));" Con ayuda de la función interna de C "memset()", se resetea la estructura del filtro. La memoria ocupada por la estructura del filtro se rellena con 0.
"memset(&scError , 0, sizeof(scError));" Con ayuda de la función interna de C "memset()", se resetea la estructura del filtro. La memoria ocupada por la estructura del filtro se rellena con 0. |
| 2 |
"strcpy (scSelect.szFilterName, "MySelection");" Con ayuda de la función "strcmp()", el elemento "szFilterName" de la estructura de filtro se asigna con el nombre "MySelection". Este nombre se elige libremente y no tiene ninguna influencia en la propia funcionalidad del filtro. |
| 3 |
"scSelect.dwFilter = MSG_FILTER_CLASS | MSG_FILTER_TEXT | MSG_FILTER_VISIBLEONLY ;" Las constantes "MSG_FILTER_CLASS", "MSG_FILTER_TEXT" y "MSG_FILTER_VISIBLEONLY" se conectan bit a bit con una "OR" y se asignan al elemento de estructura "dwFilter". Este elemento de estructura contiene la información que se debe filtrar respecto las clases de aviso y los bloques de texto de usuario. Con ayuda de la constante "MSG_FILTER_VISIBLEONLY", sólo se muestrean los avisos que no estén ocultos por medio de la opción "Alarm Hiding".
Advertencias:
- "MSG_FILTER_HIDDENONLY" und "MSG_FILTER_VISIBLEONLY"
- Se puede utilizar la constante "MSG_FILTER_HIDDENONLY" para sólo mostrar los avisos que están ocultos con la opción "Alarm Hiding".
- Las constantes "MSG_FILTER_HIDDENONLY" y "MSG_FILTER_VISIBLEONLY" están disponibles a partir del WinCC V6.2.
- Si no se utiliza ni la constante "MSG_FILTER_HIDDENONLY" ni la constante "MSG_FILTER_VISIBLEONLY", se muestran tanto los textos activados como los desactivados.
- "MSG_FILTER_TEXT_EQUAL"
Adicionalmente, se puede utilizar la constante "MSG_FILTER_TEXT_EQUAL" para comprobar la igualdad exacta de todos los bloques de textos de usuario utilizados. |
| 4 |
"scSelect.dwMsgClass = 0x0001 | 0x0002 | 0x0008 ;" La valencia de las clases de aviso se conecta bit a bit con una "OR" y se asigna con el elemento de estructura "dwMsgClass". Este elemento de estructura contiene la información que se debe filtrar respecto las clases de aviso "Clase 1" ("Alarma"), "Clase 2" ("Advertencia") y "Clase 4" ("Avisos de control de procesos AS").
Advertencias:
- Las clases de aviso están codificadas bit a bit. Esto significa que cada clase de aviso está asignado a un bit exacto en el elemento de estructura "dwMsgClass".Si el bit está activado, significa que en el WinCC Alarm Control se muestran los avisos de esta clase de avisos. El número de la clase de avisos se corresponde con el número de bit en el elemento de estructura "dwMsgClass". Tenga en cuenta que los números de las clases de aviso comienzan a contar en 1 y los números de los bits comienzan a contar en 0.
- Para averiguar el número de bit de una clase de aviso, se puede proceder de la siguiente manera:
- Abra el editor del Alarm Logging.
- Con el botón derecho del ratón, seleccione el menú contextual para una clase de aviso, cuyo número se quiere averiguar. Elija la opción del menú "Propiedades".
Ahora se abre el diálogo "Configurar las clases de avisos".
  Figura 02
- El nombre del primer registro contiene el número de la clase de aviso. De la figura 02, se puede ver que la clase de aviso "Avisos de control de procesos AS" representa la "clase 4". Esta clase 4 está asignada al bit 3. El bit 3 se representa por medio del valor hexadecimal 0x0008.
|
| 5 |
"scSelect.dwMsgType[0] = 0x00000001 | 0x00000002 ;" La valencia de los tipos de aviso se conecta bit a bit con una "OR" y se asigna con el primer elemento del elemento de estructura "dwMsgType". Este primer elemento contiene la información que se debe mostrar los tipos de aviso "1" y "2" de la clase de aviso "Clase 1".
Advertencia:
- El elemento de estructura "dwMsgType" tiene el tipo de datos de campo. En cada elemento de campo, los tipos de aviso se ajustan exactamente a una clase de aviso que se debe mostrar. La secuencia de los elementos de campo se corresponde con la numeración consecutiva de las clases de aviso. Tenga en cuenta la sintaxis del lenguaje de programación "C", que los elementos de campo empiezan a contar con "0". La clase de aviso 1 se direcciona por tanto con el elemento de campo "[0]".
- Los tipos de aviso se codifican bit a bit, es decir cada tipo de aviso de una clase de aviso se asigna exactamente a un bit del elemento de estructura "dwMsgType". Si el bit correspondientes está activado, se muestran en el WinCC Alarm Control los avisos de esta clase y tipo de aviso. Los bits del elemento de estructura "dwMsgType" representan un máximo de 16 tipos de aviso diferentes para cada elemento de campo (cada clase de aviso). El bit 0 siempre se asigna al primer tipo de aviso que está disponible para cada clase de aviso. El bit 15 siempre se asigna al 16º (último) tipo de aviso que está disponible para cada clase de aviso.
Atención:
Tenga en cuenta que la numeración de los tipos de aviso en el WinCC Alarm Logging se realiza consecutivamente "de forma ascendente" en función de todas las clases de aviso. Esto exige un trabajo adicional para poder determinar la posición de un determinado bit del elemento de estructura "dwMsgType", a partir de los números consecutivos de una clase de aviso. Al final de este artículo, se dispone de una tabla con cuya ayuda se puede averiguar la posición exacta de un bit dentro del elemento de estructura "dwMsgType" para cada tipo de aviso.
- En el elemento de estructura "dwMsgType", hay que activar las posiciones de bit correspondientes a cada tipo de aviso que se debe mostrar por medio del filtro de avisos. En cuanto se defina como filtro un tipo de aviso de una clase de aviso por lo menos, los tipos de aviso para el resto de clases de aviso se debe indicar de forma explícita. Sólo en caso de que los tipos de aviso no se utilicen como criterio de filtro, es cuando no hace falta asignar ningún valor al elemento de estructura "dwMsgType", para obtener le mismo resultado. Sin embargo, tenga en cuenta que el filtro de aviso activo actualmente sólo se puede mostrar con el diálogo de selección en caso de también se hayan indicado los tipos de aviso como filtro.
- Para averiguar el número de bit de un tipo de aviso, se puede proceder de la siguiente manera:
- Abra el editor del Alarm Logging.
- Con el botón derecho del ratón, seleccione el menú contextual para un tipo de aviso, cuyo número se quiere averiguar. Elija la opción del menú "Propiedades" para abrir el diálogo "Tipo".
Ahora se abre el diálogo "Configurar las clases de avisos".
  Figura 03
- El nombre del registro contiene el número consecutivo del tipo de aviso. En la figura 03, se puede ver que el tipo de aviso "Alarma alta" representa el "tipo 1". Este tipo 1 está asignado al bit 0. El bit 0 se representa por medio del valor hexadecimal 0x0001. Debido a que el tipo de aviso "1" está asignado a la primera clase de aviso "1", en este caso no hay que hacer ningún cálculo particular.
|
| 6 |
"scSelect.dwMsgType[1] = 0x04 | 0x08 ;" La valncia de los tipos de aviso se conecta bit a bit con una "OR" y se asigna con el segundo elemento del elemento de estructura "dwMsgType". Este segundo elemento informa que se deben mostrar los tipos de aviso "19" y "20" de la clase de aviso "Clase 2".
Advertencia:
La posición de cada bit en los tipos de aviso se puede ver en la tabla mostrada al final de esta tabla. |
| 7 |
"scSelect.dwMsgType[3] = 0x40 |0x80 ;" La valencia de los tipos de aviso se conecta bit a bit con una "OR" y se asigna con el cuarto elemento del elemento de estructura "dwMsgType". Este cuarto elemento contiene la información que se debe mostrar los tipos de aviso "55" y "56" de la clase de aviso "Clase 4".
Advertencia:
La posición de cada bit en los tipos de aviso se puede ver en la tabla mostrada al final de esta tabla. |
| 8 |
"scSelect.dwTB = 0x0001 | 0x0002 ;" La valencia de los bloques de texto de usuario se conecta bit a bit con una "OR" y se asigna con elemento estructura "dwTB". Este elemento contiene la información que se utilizan los bloques de texto de usuario "tb1" y "tb2" para realizar la selección. |
| 9 |
"strcpy (scSelect.szTB[0], "TI4711");" El primer elemento de campo de la estructura "szTB" se asigna con la cadena de caracteres "TI4711". Esto significa que sólo se deben mostrar en el Alarm Control aquellos avisos que contengan esta cadena de caracteres dentro del bloque de textos de usuario "tb1". |
| 10 |
"strcpy (scSelect.szTB[1], "area1");" El segundoelemento de campo de la estructura "szTB" se asigna con la cadena de caracteres "area1". Esto significa que sólo se deben mostrar en el Alarm Control aquellos avisos que contengan esta cadena de caracteres dentro del bloque de textos de usuario "tb2". |
| 11 |
"bOK = AXC_SetFilter(lpszPictureName,"Control1",&scSelect,&scError);" La función "AXC_SetFilter()" ejecuta el criterio de filtro definido en la estructura "scSelect". |
La siguiente tabla muestra la relación entre la numeración consecutiva de los tipos de avisos y las posiciones de los bits dentro del elemento de estructura "dwMsgType".
WinCC_AXC_SetFilter_dwMsgType_e.pdf ( 13 KB )
Advertencia: Tenga también en cuenta la información dada en la pagina del Customer Support con número ID 25288354. Aquí se dispone de un resumen general sobre las diferentes posibilidades para realizar el filtrado de avisos en el WinCC Alarm Control.
Aquí también se dispone de los datos del path para el sistema de información del WinCC.
|