Las herramientas, área por área
Qué hace cada herramienta que un agente puede llamar, agrupadas por el interruptor de capacidad que las anuncia, y las herramientas de ayuda que no necesitan ninguno.
Los nombres de las herramientas son identificadores estables en snake_case. Los errores son
estructurados y accionables: una llamada fallida devuelve qué salió mal más una pista que
nombra la herramienta o el paso que lo arregla, para que un agente se corrija solo en lugar
de adivinar. El servidor les indica a todos los agentes que lean la ayuda con help_search
y help_read antes de contestar una pregunta sobre cómo funciona la aplicación y, cuando
el área Copias de seguridad (administración) está encendida, que creen una copia de
seguridad de la configuración antes de hacer cambios de configuración. Cuál de estas listas
ve realmente un agente es lo que abre cada área, más las herramientas de
ayuda, que no necesitan ninguna área.
Ayuda
Las dos herramientas de ayuda leen esta documentación tal como la lleva la instalación: los mismos artículos que abre el panel de ayuda, escritos para la versión instalada en la estación. Vienen con el endpoint siempre que el interruptor general está encendido, digan lo que digan los interruptores de las áreas, porque el texto es la documentación pública y no muestra nada de la estación. Las dos siguen funcionando con el runtime detenido.
| Herramienta | Qué hace |
|---|---|
help_search |
Encuentra artículos por las palabras de una pregunta y devuelve de cada uno el slug, el título, el resumen y las secciones que tocan esas palabras, primero la mejor coincidencia (10 de forma predeterminada, hasta 50). No distingue mayúsculas ni acentos. Sin consulta, lista todos los artículos. |
help_read |
Lee un artículo entero por su slug como texto plano: el título, el resumen, la lista de secciones y el cuerpo, con cada sección en una línea de encabezado y las tablas a una fila por línea, más los slugs de los artículos a los que enlaza. |
Las dos leen de forma predeterminada el idioma de la interfaz de la estación, así que las
páginas, los botones y los campos que nombra una respuesta son los que están en pantalla.
Cualquiera de ellas acepta un culture que nombra otro idioma que lleve la ayuda
instalada; un idioma que no lleva se rechaza con la lista de los que sí lleva, y ningún
otro idioma contesta en su lugar. Una instalación cuya ayuda falta o no se puede leer
contesta cada llamada con el motivo en lugar de artículos.
Connector, lectura
| Herramienta | Qué hace |
|---|---|
connector_browse |
Lista el árbol que dibuja la página Connector, con el estado de salud en vivo: todo driver agregado a la estación, también uno sin nada debajo, y un driver que tiene un dispositivo, una línea serie o un bróker siempre está agregado; Modbus RTU como driver, línea serie, dispositivo y tag; MQTT como driver, bróker (con el estado de su sesión), dispositivo y tag; todos los demás drivers como driver, dispositivo y tag, con la carpeta de cada dispositivo al lado. Generic serial and TCP lista sus líneas serie como Modbus RTU y sus dispositivos de red como cualquier otro driver, con el transporte de cada dispositivo. SCPI instruments lista del mismo modo sus líneas serie y sus demás dispositivos. Un dispositivo File lleva su carpeta, su nombre de archivo, cómo lee (un archivo o una carpeta de entrada) y su formato. Un dispositivo Database lleva su tipo de base de datos (databaseKind). Cada dispositivo lleva error, la única frase que muestra su página, en el idioma de la estación: una frase que señala su línea serie o su bróker cuando el error es de ese nivel, si no el error del propio dispositivo (no conecta, la conexión se rechaza, el driver avisa), si no el resumen de sus tags cuya lectura se rechaza, y el motivo de cada tag es el readFailure de tag_read. Es null cuando el dispositivo no tiene ninguno; la frase que da tag_read para un tag cuyo dispositivo no está conectado lleva hasta aquí. Revela los alias de tag (Driver.Carpetas….Dispositivo.Tag) que usan tag_read, tag_write y las expresiones de Logic. Los alias son nulos mientras Connector está detenido. |
tag_read |
Lee los valores en vivo de un tag por su alias: valueRaw, el valor del propio dispositivo antes de cualquier etapa, value, el valor de ingeniería después de todas las etapas de la cadena de conversión, la de Decimales incluida (un Double que el dispositivo reporta como 2.718281828459 lee 2.72 con Decimales en 2), la calidad, las dos marcas de tiempo y substitution, que dice si el valor es un sustituto configurado en lugar de lo que reportó el dispositivo: None (una medición, o ningún valor), NaNReplaced (la lectura fue NaN y el número declarado tomó su lugar), LastGoodHeld (la lectura falló y se mantiene la última lectura que aterrizó, con su valor crudo y sus marcas de tiempo) o ReadFailureReplaced (la lectura falló y se presenta el número declarado). Un sustituto cuenta como valor, así que la calidad sigue siendo buena a menos que se levante una falla de límite, pero nunca es una medición. communicating dice si el dispositivo sigue contestando: falso cuando la última lectura falló o todavía no se lee nada. Una lectura que superó el intervalo de sondeo del tag, más un pequeño margen, sin una nueva cuenta como una lectura fallida: el valor, la calidad y substitution responden como para una (sin valor y calidad mala de forma predeterminada, la lectura mantenida o el número declarado donde el tag lo pide), communicating es falso y las marcas de tiempo fechan la última lectura que llegó. Un valor fuera de los límites del tag no es una falla de conexión: la calidad pasa a mala mientras communicating sigue siendo verdadero. readFailure dice por qué una lectura no llegó, en la única frase que muestra el panel del tag, en el idioma de la estación: el motivo que dio el dispositivo o el driver cuando se rechazó la lectura del propio tag, o una frase que señala el dispositivo del tag cuando este no está conectado. Es null mientras el tag lee, y cuando una lectura que no llegó todavía no tiene motivo registrado. |
modbus_server_status |
Reporta el servidor Modbus propio de la estación: si está encendido (enabled), su port, su status (Off, Listening, PortInUse, Failed con las palabras del sistema en failure, o RuntimeStopped), los clientes conectados ahora (como máximo maximumClients a la vez) y cada fila del mapa de registros: su registerClass, el register contado desde 0 y el lastRegister, su tipo y su disposición, su access (ReadOnly o ReadAndWrite), su fuente (un tag o una variable, por dirección e id) y lo que un cliente lee ahí ahora, value y good, o el gap (NoSource, SourceRemoved, NoGoodValue, NotRepresentable) por el que un cliente recibe la excepción 04. Sigue funcionando con el runtime detenido. |
station_broker_status |
Informa del bróker MQTT propio de la estación, aquel en el que publican los dispositivos, nunca uno de los brókeres que lee la estación: si está encendido (enabled), su port, su status (Off, Listening, PortInUse, Failed con las palabras del sistema en failure, o RuntimeStopped), su authentication (Anonymous o UsernamePassword, con username y hasPassword, nunca la contraseña), los dispositivos conectados ahora (como máximo maximumClients a la vez) y thisStationEntry, el bróker Esta estación del driver MQTT por el que la estación lo lee. Sigue funcionando con el runtime detenido. |
mqtt_publish_list |
Lista lo que la estación publica en cada bróker MQTT que lee, la tarjeta Publicar de cada uno: el publishTopicPrefix del bróker y si publica, y cada fila con su fuente (por dirección, removed cuando la fuente se eliminó), su topic y su mensaje (value o alarm), con los dos mensajes descritos en payloads. Sigue funcionando con el runtime detenido. Una fila cuyo access es ReadAndWrite acepta valores en su writeTopic (su tópico seguido de /set), que se escriben en su fuente y quedan en el diario técnico como MQTT <nombre del bróker>; payloads.write dice qué acepta ese tópico. Cada bróker dice su publishFormat; un bróker en Sparkplug B añade sparkplug (su grupo, el ID del nodo de borde de la estación y sus dispositivos), cada una de sus filas dice el dispositivo y la métrica con los que se publica, y payloads.sparkplug dice cómo sale el Sparkplug B (Publicación en Sparkplug B). |
remote_access_devices |
Informa de quién abre los sinópticos de la estación por la red: los navegadores conectados desde otra computadora o tableta en este momento (dirección, navegador y sistema, página, usuario, desde cuándo, y el dispositivo configurado que es cada uno) y los dispositivos configurados con cómo se abre cada uno (sinóptico inicial, fijación, con quién inicia sesión, los minutos tras los que vuelve, solo lectura, y por qué se abre de otra manera cuando su usuario fijo o su sinóptico inicial cambió). Nunca lleva una clave ni su hash. Sigue funcionando con el runtime detenido. |
server_status |
Reporta el estado de salud del servidor OPC UA integrado: si está encendido (enabled), si está en marcha, su tiempo de actividad, la URL del endpoint y las sesiones de cliente conectadas, y el tamaño del espacio de direcciones configurado; available dice si el runtime de Connector lee, cosa que hace también mientras el servidor está apagado o detenido, y serverError por qué falló el último arranque del servidor. list es lo que sirve el servidor, y todo lo que sirve: una fila por tag, variable de Logic, alarma o comando de dispositivo, cada una con su access y el node con el que se configura un cliente; mientras está vacía, servesNothing es verdadero. |
Connector, configuración
| Herramienta | Qué hace |
|---|---|
driver_capabilities |
Lista todos los drivers que la aplicación puede servir, con los campos de conexión que necesita un dispositivo, el modelo de direccionamiento de tags (dirección de texto libre y campos tipados), el soporte y los parámetros de descubrimiento, los rangos de tiempos y los tipos de valor admitidos, con defaultPort, el puerto por el que se le marca a un dispositivo que no nombra ninguno. added dice si el driver está agregado a la estación, que es lo que lo dibuja en el árbol de Connector; crear un dispositivo, una línea serie o un bróker con device_upsert, serial_line_upsert o mqtt_broker_upsert agrega su driver. AVEVA PI y HTTP marcan el puerto del transporte que usa el dispositivo, así que dan además defaultPortByTransport: 443 sobre HTTPS, su transporte predeterminado, y 80 sin cifrar. Generic serial and TCP agrega genericSerialTcp: sus transportes, cómo se escriben los bytes, cómo terminan los mensajes, las sumas de verificación, los modos, filtros y extracciones de los tags, cómo se leen y escriben los valores, y dos ejemplos completos. Omron agrega omron: sus dos protocolos con los campos de dispositivo, las formas de dirección y los tipos de dato de cada uno, los transportes y los rangos FINS, las escrituras y el descubrimiento. SCPI instruments agrega scpi: sus transportes, si esta computadora tiene VISA (visa.installed), los terminadores, las confirmaciones de escritura, los comandos de preparación, cómo se escriben consultas y comandos de escritura y cómo se leen las respuestas, el descubrimiento y dos ejemplos completos. NI-DAQmx agrega niDaqmx: para cada medición, un canal de ejemplo, la unidad, sus campos y los tipos de dato y accesos que admite. Un driver cuyos dispositivos necesitan algo que el producto no puede incluir agrega prerequisite (Fluke NetDAQ: el runtime de Visual C++ 2005; OPC DA: los OPC Core Components, OpcEnum y el proxy y stub de OPC DA; NI-DAQmx: el NI-DAQmx de National Instruments; SCPI: un VISA de 64 bits, NI-VISA o Keysight IO Libraries Suite, solo para sus dispositivos VISA, con las dos páginas; Database: un driver ODBC de 64 bits o un origen de datos para un dispositivo ODBC, juzgado por dispositivo (perDevice true), de modo que installed queda en null y el error del propio dispositivo dice qué falta): si esta computadora lo tiene (installed, para un driver agregado a la estación), la página oficial de descarga, el archivo, cómo instalarlo, el tropiezo conocido y qué pasa después. SNMP agrega snmp: sus versiones y las credenciales que admite cada una, los niveles de seguridad y los protocolos SNMPv3, los tipos por clase de valor, cada objeto estándar que el driver conoce por su nombre con su OID, cómo se comportan lecturas y escrituras, el descubrimiento y dos ejemplos completos. File agrega file: el camino sencillo, la carpeta y el confinamiento a ella, las formas del nombre del archivo, un archivo o una carpeta de entrada, los formatos con su gramática de dirección, lo que lee un tag y sus tipos, los ajustes de texto, cómo se comportan lecturas y escrituras, el descubrimiento y tres ejemplos completos. Database agrega database: cada base de datos con sus campos y su puerto propio, el cifrado, las dos maneras en que lee un tag y las dos en que escribe, la regla de que un valor solo entra en una instrucción como @value o @now, los tiempos de espera, el consejo sobre el usuario de la base de datos, el descubrimiento y cuatro ejemplos completos. El mapa que lee un agente antes de device_upsert o tag_upsert. |
serial_line_list |
Lista todas las líneas serie guardadas, incluidas las desactivadas y las vacías, con su id estable y su driver; una línea Modbus RTU además con su modo y sus valores de tiempo configurado, automático y efectivo. |
serial_line_upsert |
Crea una línea serie o actualiza una por su id estable. driver nombra el driver al que pertenece, ModbusRtu (el predeterminado), GenericSerialTcp, Scpi u Omron, fijo al crearla; una línea del driver genérico, del driver SCPI o del driver Omron rechaza mode, responseTimeoutMs y minimumTransactionIntervalMs. El nombre y el estado de activación cambian en cualquier momento; el intervalo mínimo entre transacciones cambia también mientras está activada; el puerto serie, la velocidad, el formato serie, el modo de transmisión y el tiempo de espera de respuesta cambian solo mientras la línea guardada está desactivada. |
serial_line_delete |
Elimina una línea por su id estable. Una línea que todavía contiene dispositivos se rechaza salvo que la llamada autorice explícitamente eliminar todos los dispositivos y tags hijos. |
mqtt_broker_list |
Lista todos los brókeres MQTT guardados, incluidos los desactivados y los vacíos, con su id estable, dónde responde, su transporte, su nombre de usuario, su ID de cliente, su keep-alive, su prefijo de tópico y su número de dispositivos. Dice si hay una contraseña guardada y nunca la devuelve. También muestra el formato de la publicación (publishFormat) y el grupo Sparkplug B (sparkplugGroupId). |
mqtt_broker_upsert |
Crea un bróker MQTT o actualiza uno por su id estable: nombre, estado de activación, host (una dirección mqtt:// o mqtts:// completa se descompone), puerto, TLS, nombre de usuario, contraseña, ID de cliente, keep-alive y el prefijo bajo el que su tarjeta Publicar propone tópicos (publishTopicPrefix, una cadena vacía vuelve al valor por defecto). Solo cambian los parámetros indicados; un bróker solo se activa con host, y se rechaza un ID de cliente que use otro bróker. Un cambio guardado de la conexión reconecta la sesión que comparten todos los dispositivos del bróker. publishFormat (Json o SparkplugB) elige cómo sale la tarjeta Publicar, y sparkplugGroupId el grupo Sparkplug B del nodo de borde de la estación (una cadena vacía vuelve a GanterLab; un grupo con /, + o # se rechaza). |
mqtt_broker_delete |
Elimina un bróker por su id estable. Un bróker que todavía contiene dispositivos se rechaza salvo que la llamada autorice explícitamente eliminar todos los dispositivos y tags hijos. |
mqtt_publish_upsert |
Crea una fila de la tarjeta Publicar de un bróker (brokerId y source: un tag, Connector. y su alias, una variable, Variables. y su ruta, o una alarma, Alarms. y su ruta) o edita una por id. topic es opcional: si se omite, la fila recibe el propuesto a partir del nombre de la fuente bajo el prefijo del bróker, y una cadena vacía lo vuelve a tomar. Un bróker publica una fuente una vez y un tópico una vez; un tópico no lleva + ni # y no empieza por $. Una fila nunca cambia de bróker. access es ReadOnly, el valor por defecto, o ReadAndWrite, que solo acepta un tag con acceso de escritura en un driver que escribe, o una variable de memoria: la estación escribe entonces lo que se publica en el tópico de la fila seguido de /set (Escritura de vuelta). El tópico de una fila no puede ser el tópico de otra seguido de /set. En un bróker en Sparkplug B la fila se publica como una métrica (row.sparkplug), y ReadAndWrite acepta los valores que le envían los comandos Sparkplug B. |
mqtt_publish_delete |
Elimina una fila de una tarjeta Publicar por id. La estación deja de publicarla; el tag, la variable o la alarma no se toca. |
device_upsert |
Crea o actualiza un dispositivo por driver más nombre (el driver es inmutable después de crearlo). Solo cambian los parámetros entregados; los campos de conexión son por driver; mover un dispositivo a una carpeta reescribe todas las referencias a las direcciones anteriores de sus tags. Un dispositivo de Generic serial and TCP admite transport y los campos de sus tarjetas Mensajes y Suma de verificación, y serialLineId solo de una línea de su propio driver; un dispositivo de línea rechaza host, puerto y carpeta. Un dispositivo Omron acepta omronProtocol (Fins o NjNx) y, por FINS, los campos fins* de su tarjeta FINS; un dispositivo leído por nombre de tag rechaza un puerto. Un dispositivo SCPI acepta transport (Tcp, Visa, o SerialLine con el serialLineId de una línea de su propio driver), visaResource, terminator, responseTimeoutMs, writeCheck y setupCommands. Un dispositivo NI-DAQmx acepta daqmxDevice, el nombre que NI MAX le da. Un dispositivo SNMP acepta snmpVersion, snmpCommunity (SNMPv1, SNMPv2c), username, password, snmpSecurityLevel, snmpAuthProtocol, snmpPrivacyProtocol y snmpPrivacyPassword (SNMPv3), responseTimeoutMs y snmpRetries; devuelve si cada secreto está puesto, nunca el secreto. Un dispositivo File admite fileFolder, fileName, fileMode (SingleFile o Inbox), fileFormat, fileEncoding, fileSeparator, fileDecimal, fileHeaderRow y fileWrites, con fileHeaderText y fileLineEnd cuando la escritura está activada; devuelve file.fileStatus, el archivo que lee el driver en marcha y lo que leyó de él. Un dispositivo Database admite databaseKind, y para un servidor host, port y databaseName (en SQL Server también databaseInstance, databaseWindowsSignIn y databaseEncryption), databaseFile para SQLite u databaseOdbc para ODBC, con username y password; devuelve database, la dirección y si el dispositivo aún espera su usuario, nunca la contraseña. Un puerto fuera del rango de 0 a 65535 se rechaza; 0 es el puerto que usa el driver. El cambio se concilia de inmediato dentro del servidor en marcha. |
device_delete |
Elimina un dispositivo y todos sus tags; se concilia de inmediato dentro del servidor en marcha. |
tag_upsert |
Crea o actualiza un tag en un dispositivo. El direccionamiento es propio de cada driver (dirección de texto libre y campos tipados; en Generic serial and TCP, el modo de lectura, la solicitud, el filtro, la extracción y los campos de escritura; en SCPI instruments, la consulta como address, valueField y writeTemplate; en NI-DAQmx, el canal físico como address y los campos daqmx* de su medición; en SNMP, el OID como address, en números o por su nombre estándar; en File, la columna o la ruta como address, fileSource, fileRow y sus campos, fileWriteMode y fileLineTemplate, un valor de texto libre con los campos value* del driver genérico, y un tag nuevo que nace de solo lectura; para Database la columna del valor como address, databaseSource, databaseTable, databaseRow y sus campos o databaseQuery, y cuando el tag escribe databaseWriteMode y databaseCommand, con un tag nuevo que también nace de solo lectura); la respuesta repite la dirección de bus armada y el alias para tag_read. Incluye las etapas de lectura no válida: la acción de NaN para los tags numéricos, y la presentación de una lectura fallida para todo tag que lee la estación, donde solo Replace se limita a los tags numéricos y booleanos. Un Replace ya guardado que el nuevo tipo del tag no acepta se guarda como el predeterminado: la acción de NaN pasa a PassThrough cuando el tipo deja de ser numérico, y la presentación de una lectura fallida pasa a ShowError cuando el tipo es String, DateTime, Guid o ByteString. |
tag_delete |
Elimina un tag; se concilia de inmediato. |
server_start |
Enciende el servidor OPC UA integrado y lo arranca, como hace Activar en su fila: sirve su lista, y sigue encendido a través de los reinicios hasta server_stop. No hace nada cuando ya está en marcha; cuando el propio Connector no está en marcha, se arranca primero y materializa la configuración actual. |
server_stop |
Apaga el servidor y lo detiene con orden, como hace Desactivar: los clientes OPC UA se desconectan y no se publica nada hasta que server_start lo vuelva a encender. Connector sigue leyendo, y las lecturas de tags, Logic y las grabaciones siguen. |
server_restart |
Detener y luego arrancar solo el servidor, mientras está encendido; Connector lee todo el tiempo. Un servidor apagado se rechaza, ya que es server_start lo que lo enciende. Los cambios de dispositivos y tags se aplican con connector_refresh. |
server_list_upsert |
Crea una fila de la lista del servidor OPC UA, o actualiza una por su id. source nombra un tag (Connector. y su alias), una variable (Variables. y su ruta), una alarma (Alarms. y su ruta) o un comando de dispositivo (la dirección del dispositivo, un punto, el nombre del comando y ()); una fuente figura una sola vez en la lista. access es ReadOnly, el valor predeterminado de toda fila nueva, o ReadAndWrite, que solo admiten un tag con acceso de escritura o una variable de memoria; la escritura de un cliente pasa entonces por el embudo de escritura de Logic y queda en el diario técnico con la sesión del cliente. La respuesta trae la fila con su node. |
server_list_delete |
Elimina una fila de la lista por su id. Un cliente deja de encontrar su nodo; la fuente que servía no se toca. |
modbus_server_configure |
Enciende o apaga el servidor Modbus (enabled) o lo mueve a otro port, de 1 a 65535, como hace su página. Se rechazan el puerto del servidor web, del acceso de agente o del servidor OPC UA, y un puerto que retiene otro programa; el Firewall de Windows nunca se toca. Encendido, deja que cualquier equipo que llegue al puerto lea lo que sirve el mapa. Responde con el servidor completo, como modbus_server_status. |
station_broker_configure |
Enciende o apaga el bróker MQTT propio de la estación (enabled), lo mueve a otro port y cambia su authentication, su username y su password, como hace su página, en este orden: puerto, autenticación, y luego encendido o apagado. Se rechazan el puerto del servidor web, del acceso de agente, del servidor OPC UA o del servidor Modbus, y un puerto que ocupa otro programa; el Firewall de Windows nunca se cambia. Encendido, agrega el bróker Esta estación al driver MQTT. Responde con el bróker entero, como station_broker_status. |
modbus_map_upsert |
Crea una fila del mapa de registros del servidor Modbus, o actualiza una por su id. source nombra un tag por su dirección (Connector. y su alias, como lo lista connector_browse) una variable (Variables. y su ruta) o una alarma (Alarms. y su ruta, siempre ReadOnly, que sirve el estado que indica alarmValue: Active, Acked o State); registerClass (HoldingRegister de forma predeterminada), register (desde 0), type (Float de forma predeterminada, Boolean en una bobina o una entrada discreta), length para un String, mostSignificantByte y mostSignificantWord toman los campos y las reglas de un tag Modbus. access es ReadOnly, el valor predeterminado de toda fila nueva, o ReadAndWrite, que solo admiten un registro de retención o una bobina, con una fuente que acepte escrituras (un tag con acceso de escritura, una variable de memoria). Una fila nueva necesita su register y su source; una fila que el mapa rechaza recibe como respuesta el motivo y una pista. |
modbus_map_delete |
Elimina una fila del mapa de registros por su id. Un cliente que lee sus registros recibe la excepción 02 a partir de entonces; el tag o la variable que servía no se toca. |
remote_access_device_update |
Cambia el nombre de un dispositivo configurado, su sinóptico inicial (un panel de control por id o por nombre, o vacío para quitarlo, lo que también lo libera), la fijación, los minutos sin uso (0 para nunca) y el modo de solo lectura, como hace su fila en la página Acceso remoto. Con quién inicia sesión el dispositivo no se cambia aquí: eso requiere una persona con Gestionar los usuarios locales. Un dispositivo se configura y se olvida en la pantalla de la estación, nunca con una herramienta. Responde con el dispositivo tal como lo lista remote_access_devices. |
Connector, operación
| Herramienta | Qué hace |
|---|---|
connector_refresh |
Concilia de forma incremental el servidor en marcha con los dispositivos configurados (agrega, quita, vuelve a crear) sin un reinicio completo; la manera más ligera de aplicar los cambios. |
device_discover |
Corre el escaneo de descubrimiento de dispositivos de un driver y devuelve los candidatos con sus tags, sin guardar nada. Solo participan los drivers cuyo protocolo admite un escaneo de verdad; los candidatos que ya existen se marcan como tales. Un escaneo SNMP recorre o bien target con snmpCommunity, o bien snmpDevice, un dispositivo configurado, que es como se escanea un agente SNMPv3. Un escaneo File lee o bien fileDevice, un dispositivo configurado, o bien fileFolder, fileName, fileMode y fileFormat escritos para el escaneo. Un escaneo Database lee databaseDevice, un dispositivo configurado, y opcionalmente databaseTables, un nombre de tabla o un patrón con *. Un target que la tarjeta Alcance del escaneo del driver rechazaría, o ninguno donde el escaneo lo necesita, se rechaza diciendo lo que tiene que ser. Un escaneo Database, File o SNMP detenido en su límite de valores, tablas u objetos lo dice en cut, con lo que hay que pasar para ver el resto; una lista completa no tiene cut. |
Logic, lectura
| Herramienta | Qué hace |
|---|---|
logic_browse |
Explora el espacio de direcciones de Logic con raíz, el mismo árbol de puntos que lee cada expresión: System, Server, Connector, Variables, Alarms, Process y Assets. Las carpetas del operador son niveles de dirección de verdad; los puntos hijos incluyen su valor en vivo y su calidad, y un punto de tag de Connector lleva además substitution y communicating, tal como los reporta logic_read. |
logic_read |
Lee un punto por su dirección con puntos (por ejemplo Variables.Setpoint) y devuelve el valor en vivo y la calidad. Un punto de tag de Connector lleva además substitution y communicating, tal como los reporta tag_read, que es lo que distingue un sustituto, o la lectura de un dispositivo que dejó de contestar, de una medición en vivo; los demás puntos no llevan ninguno de los dos. Una lectura que enmudeció se lee ahí como una lectura fallida. |
Logic, configuración
Las altas y modificaciones son parciales (los parámetros omitidos conservan su valor) y cada borrador combinado pasa la misma validación que aplican los editores de Logic; un borrador no válido se rechaza y nada queda aplicado a medias.
| Herramienta | Qué hace |
|---|---|
variable_upsert |
Crea o actualiza una variable: de expresión (una sola expresión JavaScript de solo lectura sobre el espacio de direcciones) o de memoria (un valor escribible, opcionalmente retentivo). El nombre es la clave y, higienizado, la dirección; el parámetro de carpeta la archiva, y reescribe todas las referencias a la dirección anterior. |
variable_delete |
Elimina una variable por su ruta, con su valor retenido incluido. Los canales vinculados a ella pierden su fuente. |
action_upsert |
Crea o actualiza una acción: un bloque de sentencias JavaScript con exactamente dos verbos de escritura, la asignación a una variable de memoria y la escritura de ingeniería a un tag. Se valida de forma estática y nunca se ejecuta al guardar. |
action_delete |
Elimina una acción por su nombre. Los disparadores vinculados a ella quedan inactivos. |
trigger_upsert |
Crea o actualiza un disparador por intervalo: cada intervalMs (mínimo 100) la acción vinculada se lanza en el carril de acciones; un tick durante una ejecución pendiente se omite. El vínculo con la acción es flojo y por nombre. |
trigger_delete |
Elimina un disparador; la acción vinculada no se toca. |
alarm_upsert |
Crea o actualiza una alarma: una expresión de condición booleana, la prioridad (Crítica, Alta, Media o Baja), los retardos a la activación y a la desactivación, si se exige el reconocimiento, y el estilo del anuncio. Guardar una condición o unos tiempos cambiados reinicia la máquina de estados en marcha. |
alarm_delete |
Elimina una alarma por su ruta; un anuncio activo se limpia primero. |
logic_folder_upsert |
Crea, renombra o vuelve a archivar una carpeta organizadora de una sección (Variables, Alarms, Actions, Triggers; tres niveles como máximo). Para Variables y Alarms, la ruta de la carpeta es parte de la dirección, así que los cambios de nombre y los movimientos reescriben todas las expresiones, los scripts, las condiciones y los vínculos de panel de control que haya debajo. |
logic_folder_delete |
Elimina una carpeta. Nada de lo que contenía se destruye: los elementos y las subcarpetas se vuelven a archivar un nivel arriba y las referencias se reescriben; un choque de nombre en el destino rechaza la eliminación. |
Logic, operación
Todas estas viajan por el mismo embudo de escritura de la Lógica por el que viajan las páginas y se registran con el origen MCP. Una escritura sale de la Lógica hacia la cola de entrega del propio dispositivo, y quien espera la respuesta es la llamada de la herramienta, así que lo que regresa es en qué acabó el valor y no solamente que se envió.
| Herramienta | Qué hace |
|---|---|
variable_write |
Escribe un valor en una variable de memoria (forzado a su tipo de salida, y retenido cuando es retentiva). Las variables de expresión se calculan y rechazan las escrituras. |
tag_write |
Escribe un valor de ingeniería en un tag escribible: se deshace por la cadena de conversión del tag, se fuerza al tipo del dispositivo y se escribe en el equipo. La respuesta lleva lo que presenta el tag una vez hecha la escritura: el valor, la calidad, substitution y communicating, tal como los reporta tag_read, así que un dispositivo que aceptó la escritura pero dejó de contestar a las lecturas no se confunde con uno que sigue contestando. Los tags de solo lectura y los drivers de solo lectura se rechazan con el motivo. |
action_run |
Ejecuta una acción en el carril de acciones y devuelve su resultado y su duración. Una acción desactivada falla sin ejecutarse. |
alarm_ack |
Reconoce una alarma, la respuesta del operador; no hace nada cuando no hay nada pendiente. |
alarm_ack_all |
Reconoce todas las alarmas que esperan una respuesta, como un solo elemento de la cola de la lógica y con cada transición registrada. |
Diario técnico, lectura
| Herramienta | Qué hace |
|---|---|
logs_read |
Lee el flujo de registro en vivo de todo el programa (el mismo de la consola de Eventos), filtrado por gravedad mínima (Debug, Information, Warning o Error; Information al inicio), por área (App, Server, Connector, Logic, Process, Dashboard, Agent o Licensing), por componente y por un fragmento de texto contextual; devuelve las coincidencias más nuevas (100 al inicio, 500 como máximo). Las acciones de agente se registran bajo el área Agent. |
event_history_read |
Lee la cronología permanente de eventos de operación, que sobrevive a los reinicios: las transiciones de alarma, las de ocurrencia y las de enclavamiento. Se filtra por clase (Alarm, Occurrence o Interlock), por un periodo UTC inclusivo y por un nivel (la prioridad de la alarma, la gravedad de la ocurrencia o la transición del enclavamiento); las más nuevas primero, 100 al inicio y 500 como máximo. Estrictamente de solo lectura: nada puede limpiar ni eliminar entradas del registro. |
Process, lectura
| Herramienta | Qué hace |
|---|---|
process_models |
Lista completos los modelos de Process: los canales, los grupos compartidos, las unidades con su cableado resuelto y su estado de marcha, los procedimientos, los paneles, las recetas, las evaluaciones y las ocurrencias, más la biblioteca global de plantillas de reporte. El mapa que lee un agente antes de arrancar cualquier cosa. |
process_runs |
Lista las corridas, de la más reciente a la más antigua: id, nombre, estado, veredicto, qué corrió, quién la arrancó (Estación, Usuario, Automatización o Agente), tiempos y avance de ciclos. Se puede restringir a las corridas activas, buscar por una parte del nombre o de cualquier valor de los metadatos (un número de serie, un lote) y acotar (50 al inicio). |
process_run |
Lee el registro congelado completo de una corrida por su id: la instantánea, los metadatos, los criterios juzgados con sus conteos de muestras, los episodios y los eventos de ocurrencia, las escrituras de receta tal como se ejecutaron, los comentarios, y los artefactos congelados de reporte y de etiqueta con sus intentos de impresión. Opcionalmente calcula el conteo de filas y el rango de tiempo del datalog. |
process_samples |
Lee las muestras que registró una corrida, mientras registra o después de terminar. Un tramo de hasta 500 muestras llega tal como se registró: un punto por muestra, con un valor por canal. Uno más largo llega resumido: su duración se divide en 500 intervalos iguales y cada intervalo lleva el mínimo, el máximo y el promedio de cada canal, de modo que un pico se conserva en el máximo. La respuesta dice cuál de los dos casos es y, si está resumida, cuánto dura cada intervalo y cuántas muestras reúne. fromUtc y toUtc acotan el tramo, y uno lo bastante angosto regresa tal como se registró; channels lee solo los canales que nombra. |
unit_status |
Reporta el estado en vivo de una unidad: si está en marcha (con la corrida activa) y el valor de ingeniería actual detrás de cada canal, leído sin registrar nada. |
Process, configuración
| Herramienta | Qué hace |
|---|---|
process_view_configure |
Configura exactamente un panel de un modelo: el icono que se dibuja a su lado y si aparece en la página View. Nada más del agregado de Process se puede escribir por MCP; el resto se edita en la página Process. |
Process, operación
Las corridas que un agente arranca, termina o comenta registran a Agente como el actor, nunca al operador que resulte estar con la sesión iniciada en el banco de pruebas.
| Herramienta | Qué hace |
|---|---|
process_snapshot |
Captura una fila de datalog en una unidad, fuera de un procedimiento. Cada llamada crea una corrida instantánea nueva y ya completada en Históricos, sin ninguna evaluación (veredicto None). |
process_evaluate |
Captura una fila de datalog y la juzga con una evaluación; crea una corrida instantánea completada y devuelve su veredicto. |
process_recipe_apply |
Aplica una receta instantánea una vez a una unidad, a través del punto único de escritura de Process y de sus bloqueos de fuente. Manda al equipo; no crea ninguna corrida (las escrituras sí se registran). Las recetas temporizadas se rechazan. |
process_start |
Arranca una corrida de procedimiento en una unidad, con un objeto JSON para los campos de metadatos que pide el procedimiento. Todo valor enviado queda registrado, o no arranca nada: un campo que el procedimiento no pide, un valor para un campo secuencial (la aplicación lo compone al arrancar) o un campo nombrado dos veces rechazan el arranque, igual que unos metadatos obligatorios ausentes o no válidos, una unidad que ya está en marcha o un conflicto de bloqueo de canal compartido. Devuelve el id de la corrida nueva. |
process_stop |
Detiene una corrida en marcha: el bloque de finalización, la instantánea congelada del histórico y el veredicto calculado. |
process_hold |
Pausa el perfil temporizado de una corrida en la última consigna; el datalog sigue registrando. |
process_resume |
Reanuda el perfil temporizado de una corrida en pausa. |
process_abort |
Aborta una corrida desde En marcha o En pausa: se ejecuta la finalización, se escribe la instantánea, el estado pasa a Abortada y el veredicto a NOK. |
process_comment |
Agrega un comentario con marca de tiempo al archivo de una corrida: una nota de cronología mientras está activa, y una nota posterior después. |
process_report |
Genera (o vuelve a generar) el reporte en PDF de una corrida terminada y devuelve su ruta de archivo. Una plantilla nombrada de la biblioteca global invalida la que el procedimiento tenga configurada; sin ninguna de las dos, se aplica el diseño predeterminado con todas las secciones. Se rechaza mientras la corrida está activa. |
process_run_delete |
Elimina de forma permanente una corrida grabada: su apuntador en el índice del histórico y el archivo de base de datos de esa corrida. Se rechaza mientras está activa; la configuración no se toca. |
Paneles de control, configuración
Los nombres de rol que estas herramientas leen y regresan están en inglés en cualquier
estación: Not signed in, Viewer, Operator, Maintainer y Developer, sin importar
qué palabras lea el operador en la pantalla. Admin no se puede listar: siempre ve todos
los paneles de control. Un rol que el administrador renombró lleva el nombre que tecleó.
| Herramienta | Qué hace |
|---|---|
dashboard_list |
Lista los paneles de control (o, al nombrar un modelo, los sinópticos de ese modelo): el tamaño de la cuadrícula, la carpeta, el icono, la marca de arranque, la visibilidad por rol y todos los componentes con su posición, su capa y su JSON de propiedades, más todas las redes de conexión guardadas. Devuelve además el catálogo de clases de componente, con el tamaño inicial y el juego de propiedades inicial de cada clase. |
dashboard_upsert |
Crea o actualiza un panel de control por su nombre: el tamaño de la cuadrícula (una reducción que dejaría huérfano a un componente se rechaza), la carpeta y el icono de la columna Visualización de la página View, la marca de arranque, la visibilidad de la barra de estado a pantalla completa, y la visibilidad por rol. Al nombrar un modelo se direccionan los sinópticos de ese modelo. Las páginas de panel de control abiertas reflejan el cambio en vivo. |
dashboard_delete |
Elimina un panel de control y sus componentes por su nombre; al nombrar un modelo se elimina el sinóptico de ese modelo. |
component_upsert |
Agrega un componente por su clase (colocado en la primera celda libre con el tamaño inicial de la clase, salvo que se indique otra cosa) o actualiza uno por su id. La colocación tiene que caer dentro de la cuadrícula; el traslape se permite y la capa z decide el orden de dibujo; el JSON de propiedades es el juego tipado de esa clase. Al nombrar un modelo se direccionan los sinópticos de ese modelo, así que un sinóptico creado ahí se puede acomodar aquí. |
component_delete |
Quita un componente por su id; al nombrar un modelo se direccionan los sinópticos de ese modelo. |
connection_upsert |
Conecta dos bornes de símbolo con una red de conexión tipada, resolviendo el tipo, el rol y la orientación desde el catálogo de símbolos exactamente como lo hace el editor del lienzo. Los extremos que resuelven a tipos distintos fallan salvo que se permita explícitamente una conexión sin definir; un anclaje que ya lleva una conexión se rechaza. Al nombrar un modelo se direccionan los sinópticos de ese modelo. |
connection_delete |
Quita una red de conexión por su id y la revisión esperada, para que una eliminación vieja se rechace en lugar de aplastar una edición más nueva; al nombrar un modelo se direccionan los sinópticos de ese modelo. |
Interfaz, automatización
Estas herramientas manejan la ventana real de la aplicación; existen para que un agente
pueda verificar la interfaz que ve el operador, no una simulación de ella. Las
interacciones se despachan al shell en vivo, así que la conducta prevista es seguir cada
gesto con ui_screenshot y observar el efecto, y las coincidencias ambiguas regresan como
listas de candidatos en lugar de como un clic adivinado.
| Herramienta | Qué hace |
|---|---|
ui_state |
Reporta el estado del shell: la página activa, las páginas disponibles, el tema, el tamaño y la visibilidad de la ventana, y la dirección de loopback en la que esta instancia sirve su interfaz. La llamada de orientación antes que cualquier otra cosa. |
ui_navigate |
Activa una página del shell por su nombre estable, que está en inglés en toda estación: View, Process, Logic, Connector, Users, Validation, Events, Agent, Settings, Account. También se acepta el rótulo que la barra de navegación muestra en el idioma de la estación. |
ui_screenshot |
Captura la ventana tal como se muestra en pantalla dentro de un archivo PNG y devuelve su ruta absoluta; restaura primero la ventana cuando está escondida en el área de notificación. Puede capturar una región nombrada del sinóptico (un área data-doc-region única y visible) en lugar de la ventana entera, y una región ausente, escondida o ambigua falla con las regiones visibles listadas, en lugar de caer en silencio a una captura completa. |
ui_scroll |
Desplaza la región de desplazamiento principal de la página activa hasta arriba, hasta abajo o por páginas de ventana, y devuelve los desplazamientos para que se pueda barrer una página larga. |
ui_set_theme |
Aplica el tema de la estación (Sistema, Claro u Oscuro): el tema con el que dibuja la ventana de la estación y que sigue cada navegador que no ha elegido el suyo; un navegador que eligió el suyo se queda con él. Se guarda exactamente igual que una elección hecha con las teclas de tema en la ventana de la estación, así que un agente que se porta bien restaura el valor original al terminar. |
ui_resize |
Cambia el tamaño de la ventana restaurada en unidades independientes del dispositivo, recortado al mínimo de la ventana; útil para auditar las disposiciones compactas. |
ui_click |
Hace clic en el botón, el hipervínculo, la casilla o el conmutador visible cuyo texto coincida; las casillas y los conmutadores se encuentran por el rótulo de su campo y el resultado reporta el estado en el que aterrizó. Una ambigüedad devuelve los candidatos en lugar de elegir uno. |
ui_set_text |
Escribe un valor dentro de una caja de texto identificada por el rótulo de su campo, y confirma el vínculo igual que si se hubiera escrito a mano. |
ui_select |
Selecciona un elemento por su texto visible: una ruta separada por diagonales recorre un árbol y lo va desplegando; un solo segmento coincide además con elementos de lista, de pestaña, de desplegable y con filas de cuadrícula de la página actual. |
Copias de seguridad, administración
| Herramienta | Qué hace |
|---|---|
backup_create |
Crea una instantánea en línea de la base de datos de configuración dentro de la carpeta de copias de seguridad, con una nota opcional. Las corridas grabadas viven fuera de la configuración y ni la copia ni la restauración las tocan nunca. |
backup_list |
Lista las copias de seguridad de la configuración (nombre de archivo, hora de creación, tamaño y nota) más cualquier restauración ya programada. |
A propósito no hay ninguna herramienta para eliminar copias de seguridad: la retención es solo del operador, en la página Copias de seguridad.
Copias de seguridad, restauración
| Herramienta | Qué hace |
|---|---|
backup_restore |
Programa una copia de seguridad para que reemplace la configuración actual en el siguiente arranque de la aplicación. Nada cambia en la aplicación en marcha y la herramienta nunca la reinicia; la configuración que se va a reemplazar se guarda antes en una instantánea automática, y el operador puede cancelar la restauración pendiente desde Ajustes hasta el reinicio. Se rechaza mientras hay una grabación activa. |
Ajustes, administración
| Herramienta | Qué hace |
|---|---|
settings_read |
Lee las preferencias de presentación y de ciclo de vida de la estación: los formatos de fecha, de hora y de número, las posiciones decimales, el tema, y las marcas de cerrar al área de notificación y de reporte de falla. |
localization_set |
Actualiza las preferencias de presentación (parcial: los parámetros omitidos se quedan). Solo de presentación: el almacenamiento, la entrada y salida de los drivers y las grabaciones usan siempre el formato invariante. |
asset_list |
Lista los recursos del usuario (imágenes, iconos y colores) con sus ids, sus valores y sus rutas. |
asset_import |
Importa un PNG o un JPG desde una ruta de archivo local a la biblioteca de recursos que posee la aplicación y devuelve el id del recurso nuevo. Los bytes se copian, así que el archivo de origen se puede mover después. |
symbol_validate |
Valida contenido de símbolo en línea (SVG crudo o un paquete v2) sin guardar nada: un ensayo de la importación exacta, que devuelve los errores, las advertencias del higienizador y un resumen de lo que se reconoció. La descripción de la herramienta lleva el contrato completo del símbolo portable. |
symbol_import |
Importa contenido de símbolo en línea como un recurso de símbolo de usuario nuevo y devuelve su id y su referencia user:<guid>. Siempre crea un recurso nuevo; un nombre que choca recibe un sufijo automático. |
Avisos, redacción
| Herramienta | Qué hace |
|---|---|
report_draft |
Abre el formulario de avisos en la ventana de la estación, ya llenado con lo que escribió el agente: kind (DriverRequest, Bug o Suggestion), summary (una línea de 120 caracteres como máximo; una más larga se rechaza, no se recorta) y details (opcional). Como el botón Reportar de la barra de título, primero captura la ventana y ofrece la captura con el aviso, marcada. Contesta de inmediato que el formulario está abierto y que no se mandó nada. |
La herramienta nunca manda nada. La persona en la estación lee el aviso, lo corrige si quiere y presiona Enviar; el desenlace aparece en la barra de estado de la estación y no regresa al agente. Mientras esta área está encendida, el servidor le pide a cada agente que ofrezca un aviso cuando la persona necesita un driver que Ganter Lab no tiene, cuando una llamada falla de una manera que parece un defecto del programa o cuando la persona pide una mejora, y las descripciones de driver_capabilities, device_upsert y device_discover dicen lo mismo.
Se niega con un reason, y entonces no abre ni captura nada:
reason |
Cuándo |
|---|---|
not_permitted |
El rol con la sesión iniciada en la estación no tiene Mandar avisos a Ganter. |
no_station_window |
La estación no tiene ventana propia donde abrir el formulario: un host que sirve sus páginas solo a navegadores. |
no_credential |
La sesión no puede mandar: el perfil de demostración, con la sesión iniciada o no, o una sesión de la cuenta Ganter de la estación que no guarda ninguna credencial. |
form_busy |
El formulario de avisos está abierto en la estación, o se está capturando o mandando un aviso. |
draft_in_progress |
El formulario tiene un aviso que una persona está escribiendo. En cambio, un borrador anterior del agente que nadie cambió se reemplaza. |
Una estación sin sesión iniciada en ninguna cuenta Ganter no se rechaza: el formulario se abre y dice que el aviso sale sin cuenta, así que Ganter no puede responderle.
Como toda herramienta que cambia algo, contesta Runtime stopped mientras el runtime está detenido.