¿Buscas alguna otra cosa?
Titan y Titan-mini, a partir de la versión 1.06, permiten la edición de los denominados “Titan Scripts”. Los “Titan Scripts” le permiten configurar el equipo de forma sencilla para realizar acciones ante condiciones dadas. Por el momento los “Titan Scripts” están muy orientados a aplicaciones con dispositivos modbus.
Puede crear un script para que si un registro modbus de un dispositivo A tiene un determinado valor, el Titan escriba otro en un registro modbus de un dispositivo B. O que en el caso de que un registro modbus de un dispositivo A tenga un determinado valor, pues que el Titan envíe un SMS, conmute un relé, etc.
Los “Titan Scripts” al ser editables por el usuario le permiten realizar infinidad de aplicaciones diferentes con muy poco esfuerzo. A continuación dispone de una guía de cómo es la sintaxis de los “Titan Scripts” junto con los comandos disponibles, pero como aprenderá mejor a utilizarlos y como verá toda la potencia que tienen es entendiendo los ejemplos que encontrará al final de este mismo apartado.
Table of Contents
Estructura de los “Titan Scripts”
Los routers Titan le permiten introducir hasta 10 Scripts diferentes. Los 10 posibles scripts tienen la
misma estructura, con tres casillas de texto y es la siguiente:
La primera caja de texto (IF) indica la condición, es decir, el Titan evalua dicha expresión lógica. La
segunda caja de texto (action1) es la acción que se ejecutará en el caso de que la condición (IF) sea
cierta. La tercera caja de texto (action2) es la acción que se ejecutará en el caso de que la condición (IF) no sea cierta.
Es decir, en lenguaje pseudocódigo sería algo así:
Si es cierto lo que indica la primera caja de texto
Ejecutar acción de la segunda caja de texto
Si no es cierto lo que indica la primera caja de texto
Ejecutar la acción de la tercera caja de texto
Aunque todavía no conoce los comandos disponibles, veamos un ejemplo:
El ejemplo anterior se interpreta así:
Si la suma de [el registro 10 del dispositivo modbus con dirección 1] más [el registro 11 del
dispositivo modbus con dirección 1] es mayor que 100
Escribir [el valor 1 en el registro 20 del dispositivo modbus con dirección 1]
Si la suma de [el registro 10 del dispositivo modbus con dirección 1] más [el registro 11 del
dispositivo modbus con dirección 1] no es mayor que 100
Escribir [el valor 0 en el registro 20 del dispositivo modbus con dirección 1]
Comandos soportados por los “Titan Scripts”
A continuación dispone de los comandos actualmente soportados, lo que le dará una idea de lo que
puede realizar. Pero como entenderá realmente el funcionamiento de éstos es a través de los ejemplos de este capítulo del manual.
Comando “Modbus Read”
- Sintasix: MR[modbusAddress,modbusRegister]
- Descripción: realiza la lectura de un registro de un equipo modbus RTU ó modbus TCP. Puede usarse tanto en el campo IF, como en ACTION1, como en ACTION2
- Parámetross:
- modbusAddress: dirección del equipo modbus
- modbusRegister: dirección del registro modbus a leer
- Ejemplos:
-
- MR[1,10]: realiza la lectura del registro 10 del dispositivo modbus RTU con dirección 1
- MR[192.168.1.20:502,10]: realiza la lectura del registro 10 del dispositivo modbus TCP
con dirección IP 192.168.1.20 y puerto TCP 502
Comando “Modbus Write”
- Sintasix: MW[modbusAddress, modbusRegister,registerValue,commandWrite]
- Descripción: realiza la escritura de un registro de un equipo modbus RTU o modbus TCP. Puede usarse en el campo ACTION1 y en ACTION2
- Parámetros:
- modbusAddress: dirección del equipo modbus
- modbusRegister: dirección del registro modbus a escribir
- registerValue: valor a escribir en el registro
- commandWrite: PARÁMETRO OPCIONAL. Puede usarse el comando modbus de escritura 3 ó 4. En caso de no indicarse se usa el comando modbus 3
- Ejemplos:
-
- MW[1,10,100]: escribe el valor 100 en el registro 10 del dispositivo modbus RTU con
dirección 1 usando el comando modbus de escritura 3 - MW[1,10,100,4]: escribe el valor 100 en el registro 10 del dispositivo modbus RTU con
dirección 1 usando el comando modbus de escritura 4 - MW[192.168.1.20:502,10,100]: escribe el valor 100 en el registro 10 del dispositivo
modbus TCP con dirección 192.168.1.20 y puerto TCP 502 usando el comando modbus
de escritura 3 - MW[1,10,100,4]: escribe el valor 100 en el registro 10 del dispositivo modbus TCP con
dirección 192.168.1.20 y puerto TCP 502 usando el comando modbus de escritura 4
- MW[1,10,100]: escribe el valor 100 en el registro 10 del dispositivo modbus RTU con
Comando “SET RELAY”
- Sintasix: SR[idRelay, relayValue]
- Descripción: activa o desactiva un relé interno del propio Titan. Puede usarse en el campo ACTION1 y en ACTION2
- Parámetros:
- idRelay: valores posibles: 1 (Relé 1), 2 (Relé 2)
- relayValue: valores posibles: 0 (relé no activado), 1 (relé activado)
- Ejemplos:
-
- SR[1,1]: activa el Relé 1 del Titan
- SR[2,0]: desactiva el Relé 2 del Titan
Comando “SEND SMS”
- Sintasix: SS[telephoneNumber, message]
- Descripción: envía un mensaje SMS a un determinado número de teléfono
- Parámetros:
- telephoneNumber: número de teléfono al que enviar el SMS
- message: texto del mensaje a enviar
- Ejemplo:
-
- SS[666123456,Alarma activada]: envía un SMS al teléfono 666123455 con el texto
“Alarma activada”
- SS[666123456,Alarma activada]: envía un SMS al teléfono 666123455 con el texto
Comando “SEND EMAIL”
- Sintasix: SE[emailDestination, subject]
- Descripción: envía un correo electrónico a una dirección de email
- Parámetros:
-
- emailDestination: dirección de correo electrónico destino
- subject: asunto del email
- Ejemplo:
- SS[alarmas@gmail.com,Alarma activada]: envía un email a la dirección alarmas@gmail.com con el asunto“Alarma activada”
Comando “PAUSE”
- Sintasix: PA[seconds]
- Descripción: realiza una pausa en la gesión de los scripts del Titan
- Parámetros: seconds: número segundos de la pausa
- Ejemplo:
-
- PA[5]: genera una pausa de 5 segundos
Comando “DATE”
- Sintasix: DA[]
- Descripción: realiza una pausa en la gesión de los scripts del Titan
- Ejemplo:
-
- SS[666123456,Alarma activada DA[] ]: envía un SMS al teléfono 666123455 con el
texto “Alarma activada + fecha/hora” - Genera una pausa de 5 segundos
- SS[666123456,Alarma activada DA[] ]: envía un SMS al teléfono 666123455 con el
Sintaxis de los “Titan Scripts”
La sintaxis de los “Titan Scripts” es muy similar al java. En el campo “IF” de cada condición debe
especificarse una sentencia cuyo resultado sea TRUE o FALSE, para que pueda ejecutarse la acción
ACTION1 en caso que que el resultado de IF sea TRUE ó ACTION2 en caso de que el resultado de IF sea FALSE.
En el campo IF puede utilizar todos los operadores habituales en java para realizar la condición:
- &&: condición lógica AND
- ||: condición lógica OR
- + – * /: operadores suma, resta, multiplicación, división
- ==: condicional “igual”
- >: condicional “mayor que”
- <: condicional “menor que”
- >=: condicional “mayor o igual que”
- <=: condicional “menor o igual que”
- (): paréntesis para engloblar expresiones
En los campos ACTION1 y ACTION2 debe utilizar los comandos de acción MW, SR ó SS, aunque también puede utilizar MR para mayor flexibilidad (lo entenderá mejor en los ejemplos posteriores). También puede utilizar el operador && si quiere que ACTION1 o ACTION 2 realicen varias acciones. Por ejemplo, puede hacer que ACTION1 realice 2 acciones como escribir un registro modus y enviar un SMS.
- &&: concatenación de comandos ACTION
Modo de ejecución de los comandos Action
Los campos action tienen diferentes modos de ejecución. Por flanco (defecto), continuada (@) o sólo si hay cambios (#). Veámoslo con ejemplos.
- Ejecución por flanco (modo por defecto):
En este caso se ejecuta la acción MW[1,10,MR[2,3]] una sola vez tras cumplirse la condición
MR[2,2]>=18. Es decir, una vez ejecutada Action1, no se volverá a ejecutar la acción hasta que
MR[2,2]<18 y posteriormente se vuelva a dar la condición MR[2,2]>=18. Es muy útil esta forma de
trabajo si pretende enviar SMSs o Emails de alerta, pues evitará enviarlos de forma continuada.
- Ejecución continua (@):
En este caso se ejecuta la acción MW[1,10,MR[2,3]] siempre que se cumpla la condición MR[2,2]>=18. NO UTILICE esta opción si el campo Action va a ser usado para enviar SMS o Emails, pues los enviará de forma continuada.
- Ejecución por cambios (#):
En este caso se ejecuta la acción MW[1,10,MR[2,3]] siempre que haya un cambio en la acción a ejecutar respecto a la última vez que se ejecutó. El caso de este ejemplo sé ejecutará cada vez que cambie el valor MR[2,3].
Ejemplos de “Titan Scripts”
La mejor manera de comprender el funcionamiento de los “Titan Scripts” es a base de ejemplos. A
continuación dispone de un surtido de ellos:
EJEMPLO 1
Si [el registro 10 del dispositivo modbus con dirección 1] es mayor que 100
Escribir [el valor 1 en el registro 20 del dispositivo modbus con dirección 2]
En caso contrario
Escribir [el valor 0 en el registro 20 del dispositivo modbus con dirección 2]
EJEMPLO 2
Si [el registro 10 del dispositivo modbus con dirección 1] más [el registro 11 del dispositivo
modbus con dirección 1] es mayor que 100
Escribir [el valor 1 en el registro 20 del dispositivo modbus con dirección 1]
En caso contrario
Escribir [el valor 0 en el registro 20 del dispositivo modbus con dirección 1]
EJEMPLO 3
Si [el registro 5 del dispositivo modbus con dirección 1 tiene el valor 1] Ó [el registro 6 del
dispositivo modbus con dirección 1] es mayor que 10]
Escribir [en el registro 7 del dispositivo modbus con dirección 1 [el valor actual del
registro 1 del dispositivo modbus con dirección1]
En caso contrario
Escribir [en el registro 7 del dispositivo modbus con dirección 1 [el valor actual del
registro 2 del dispositivo modbus con dirección1]
EJEMPLO 4
Siempre (ya que la condición 1==1 se cumplirá siempre)
Escribir [en el registro 10 del dispositivo modbus con dirección 2 [el valor actual del
registro 11 del dispositivo modbus con dirección1]
EJEMPLO 5
Si [el registro 15 del dispositivo modbus con dirección 1] es mayor ó igual que 100
Activar el Relé 1 del Titan
En caso contrario
Desactivar el Relé 1 del Titan
EJEMPLO 6
Si (( [el registro 10 del dispositivo modbus con dirección 1] + [el registro 11 del dispositivo
modbus con dirección 1]) es mayor que 100) Ó si (( [el registro 12 del dispositivo modbus con
dirección 1] es mayor que [el registro 100 del dispositivo modbus con dirección 2])
Escribir [en el registro 20 del dispositivo modbus con dirección 1 [el valor actual del
registro 15 del dispositivo modbus con dirección 2 multiplicado por 3 más 1]]
En caso contrario
Escribir [en el registro 20 del dispositivo modbus con dirección 1 [el valor actual del
registro 15 del dispositivo modbus con dirección 2 multiplicado por 2 menos 1]]
EJEMPLO 7
Si [el registro 10 del dispositivo modbus con dirección 1] es igual a 1
Enviar un SMS con el texto “new alarm detected” al número de teléfono 666123456
EJEMPLO 8
Si [el registro 16 del dispositivo modbus con dirección 1] es mayor a 10
Enviar un SMS con el texto “new value: [valor leído del registro 16 del dispositivo modbus con dirección 1]” al número de teléfono 666123456 Y DESPUÉS Escribir [en el registro 17 del
dispositivo modbus con dirección 1 el valor 1]]
En caso contrario
Escribir [en el registro 17 del dispositivo modbus con dirección 1 el valor 0]]
EJEMPLO 9
Si [el registro 10 del dispositivo modbus con dirección 1] es igual a 1
Enviar un SMS con el texto “new alarm detected” al número de teléfono 666123456 Y
DESPUÉS Activar el Relé 1 interno del Titan
En caso contrario
Desactivar el Relé 1 interno del Titan
EJEMPLO 10
Si [el registro 15 del dispositivo modbus con dirección 1] es mayor que 10
[Activar el Relé 1 interno del Titan] Y DESPUÉS [pausa de 5 segundos] Y DESPUÉS
[Desactivar el Relé 1 interno del Titan]
EJEMPLO 11
Si [el registro 15 del dispositivo modbus con dirección 1] es mayor que 10
CONTINUAMENTE [Activar el Relé 1 interno del Titan] Y DESPUÉS [pausa de 5 segundos]
Y DESPUÉS [Desactivar el Relé 1 interno del Titan]
La diferencia entre el ejemplo 10 y 11 radica en la @. La @ indica que continuamente se ejecute una
acción. Es decir, en el ejemplo 10 se ejecuta ACTION1 una única vez en el momento de darse la condición IF. No se volverá a ejecutar hasta que ACTION1 sea diferente o se ejecute ACTION2. En el ejemplo 11 continuamente, siempre que se cumpla la condición IF, se está ejecutando ACTION1 (es decir, se está conmutando el relé continuamente).
EJEMPLO 12
Si [el registro 4 del dispositivo modbus con dirección 1] es mayor que 10
Enviar un email con el texto del asunto “New alarm detecte. Value [valor leído del registro
4 del dispositivo modbus con dirección 1]” a la dirección de correo electrónico jgallego@matrix.es
NOTAS ADICIONALES
- Recuerde que en caso de utilizar envío de emails mediante el comando SE[], debe configurar
previamente el dispositivo para ello en el menú “Other > Email configuration”