============================================== Title : STX8091 FIRMWARE Version : 235 Date : 10/Aug/2021 Author : Boris Estudiez Mail : devel@slicetex.com Website : www.slicetex.com (C) Copyright Slicetex Electronics 2001-2021 ============================================== DIRECTORIOS =========== ax/ : Firmware para modelos AX. bx/ : Firmware para modelos BX. cx/ : Firmware para modelos CX. dx/ : Firmware para modelos DX. DESCRIPCION =========== Firmware del dispositivo STX8091. Los archivos del firmware se distribuyen en el formato .SFF (Slicetex Firmware File). Para actualizar el firmware debe utilizar el entorno StxLadder desde el menu "PLC / Actualizar Firmware", ver documento STXLADDER-FU. Es posible tambien actualizar el firmware con la aplicacion AxBoot incluida en el paquete STX80XX-SDK (Software Development Kit), consulte la nota de aplicacion AN004. CAMBIOS ======= [Version 235] - Modelos AX/CX/DX: + Corrección en exactitud de tiempos para funciones: PauseS(), PauseMS() y PauseUS(). + Corrección interna para lectura en canales VIN (VinRead(), etc). + Agrega nuevas funciones para leer corriente en canales VIN: CinReadCurrent(), CinReadCurrentMA(), VinSetCurrentResistor(). Consultar ejemplos. + Correcciones internas en funciones para contadores rápidos y encoders. - Modelos AX/BX/CX/DX: + Al inicializar, espera de (4) segundos es configurada correctamente. [Version 234] - Modelos AX/CX/DX: + Requiere StxLadder 2.1.0 o superior para cargar nuevos proyectos al PLC. + Mejoras en sistema de archivo web y correcciones para servidor web. + Correcciones internas de puerto serie, ModBus RTU. + Funciones para obtener información de enlace Ethernet: EthernetGetLinkStatus(): 0 (UP), 1 (DOWN). EthernetGetLinkSpeed(): 0 (UNDEF), 1 (10MBPS), 2 (100MBPS). EthernetGetLinkDuplexMode(): 0 (UNDEF), 1 (HALF), 2 (FULL). + Corrección bug: Una función Pawn inexistente o más moderna que la soportada por el firmware actual del PLC no produce "cuelgue" o error en el sistema. + Soporta nuevo menú StxLadder: "PLC > Ver errores detectados". + En caso de que máquina virtual Pawn aborte o retorne por error, el PLC espera 10 minutos indicando led RUN ERROR, y luego reinicia automáticamente. - Modelos AX/BX/CX/DX: + Al inicializar, agrega cuatro (4) segundos de espera para evitar arranque con posible inestabilidad de alimentación externa. + Led PAUSE o PSE, es encendido mientras el dispositivo está inicializando. + Múltiples mejoras internas y optimización de código. + Mejoras en envio y manejo de datos UDP. + Agrega opción para aceptar paquetes Ethernet broadcast sin filtrado. + Mejora interna en manejo de comunicaciones Ethernet de bajo nivel. + Corrección interna para función ResolvLookUp() y resolución de nombres. + Correcciones en inicialización de PLL interno (mejora en cálculos de tiempo, retardos, operaciones de sincronización, baudrates, etc). [Version 233] - Modelos AX/CX/DX: + Mejora interna de manejo de conexiones para Servidor Web, Servidor TCP y servidor ModBus TCP. Soluciona error de rechazo de conexiones cuando el dispositivo opera por largos períodos activado y la conectividad es pobre (enlaces por telefónia móvil 3G/4G/GPRS/etc). [Version 232] - Modelos AX/CX/DX: + Agrega función ResolvClearCache() para limpiar tabla de caché de "resolver". + Agrega funciones de control y estado para servidor web WebServerAbortAll(), WebServerGetActiveConnNum() WebServerGetSlotStat(). [Version 230] - Modelos AX/CX/DX: + Función DoutGetState() retorna estado correcto de salidas PWM cuando se utilizan como salidas digitales DOUT9 y DOUT10. Aplica a lenguaje Ladder también para dichas salidas. [Version 229] - Modelos AX/CX/DX: + Cliente ModBus RTU: Correción interna al recibir tramas largas de más de 14 bytes, resultando en error para cliente MB_RTU_CL_STAT_ERR_FRAME_SIZE (-11) y MB_RTU_CL_STAT_ERR_CRC (-13). + Servidor ModBus RTU: Correción interna al recibir tramas largas de más de 14 bytes y que son rechazadas por el servidor. - Modelos AX/BX/CX/DX: + Librería "Counters" (contadores externos), mejora interna para cálculo de tiempo o período en función CounterGetEventPeriod() y funciones relacionadas como CounterGetEventFreq() y CounterGetEventRPM(). [Version 228] - Modelos AX/CX/DX: + Nuevas funciones para operaciones atómicas: SysEventsDisable() y SysEventsEnable(). + Mejora internas en el manejo de eventos. + Cliente ModBus RTU: Amplia código de estados de librería para especificar mejor tipo de errores ocurridos en respuesta de esclavos (error por tamaño de FRAME (-11), dirección retornada inválida (-12) y error de CRC (-13). + Cliente/Servidor ModBus RTU/Funciones Puerto Serie: Mejoras para detectar y descartar bytes recibidos con errores de paridad, frame, etc. Mejoras de rendimiento. + Cliente/Servidor ModBus RTU: Correcciones internas varias. + Nueva función DoutWriteVal() que permite escribir un valor variable a salida DOUT. + Nuevas funciones para bits: BitReadBool(), NBitReadBool(), aBitReadBool(). BitWrite(), NBitWrite(), aBitWrite(), aBoolWrite(), gBoolWrite(), lBoolWrite(). + Nueva función para manipulación de periféricos bool en Ladder: pBoolWrite(). + Macros de manipulación de bits pasan a ser funciones nativas (para garatizar operaciones atómicas en bits, que evitan problemas cuando eventos modifican o escriben variables (bool en Ladder) compartidas/globales con la lógica principal): BitSet, BitClr, BitToggle, BitRead, BitReadBool, NBitSet, NBitClr, NBitToggle, NBitRead, NBitReadBool, aBitSet, aBitClr, aBitToggle, aBitRead, aBitReadBool, xBitRead, xNBitRead, gBoolSet, gBoolClr, gBoolToggle, gBoolSet, gBoolClr, gBoolToggle, gBoolRead, lBoolSet, lBoolClr, lBoolToggle, lBoolRead, aBoolSet, aBoolClr, aBoolToggle, aBoolRead, DoutIsOn, DoutValue. No hay cambios funcionales ni modificaciones que realizar en código de usuario, solo actualizar firmware. + Nuevas funciones para Ladder SwitchPE() y SwitchNE(), que permiten optimizar componentes detectores de flanco positivo y negativo. [Version 227] - Modelos AX/CX/DX: + Alarmas de tiempo: Se incrementa de 5 a 10 el número de alarmas admitidas, funciones TimeAlarmxSetEvent(), TimeAlarmxClrEvent(), etc. [Version 226] - Modelos AX/BX/CX/DX: + Cambios para prevenir perdida de memoria de configuración y mejorar estabilidad. + Mejoras para inicializar el clock del procesador. + Mejoras internas para manejar errores frente a fallas de alimentación. + Cambio para utilizar contraseña por defecto (0) si no hay contraseña inicializada en memoria de configuración, para protocolo de comunicación de comandos (aplicaciones comunicando por UDP con librería STX8XXX.dll). [Version 225] - Modelos AX/CX/DX: + Corrige EepromWriteString(): La función ahora escribe en memoria el terminador de cadena ('\0') y devuelve el número de caracteres escritos. + Librería encoders: Comprueba si PPR es cero, y asigna 1 por defecto. Valor Match se puede especificar como Float. + Agrega límites para funciones PauseUS(), PauseMS() y PauseS(). + Envío de mails: Corrige error (-12) retornado al envíar un mail con éxito. [Version 224] - Modelos AX/CX/DX: + Eventos OnTimeAlarmX para Alarmas: Mejoras internas. + Salidas PWM: Corrección al configurar como digital. Mejoras internas. + Agrega funciones para leer encoder incrementales con señales A,B y Z. + Funciones para contadores rápidos de hardware mejoradas. + Nueva interfaz de funciones para contadores rápidos: CounterXXX(). + Posibilidad de preservar contraseña de dispositivo luego de restaurar memoria a valores de fábrica. [Version 223] - Modelos AX/CX/DX: + Servidor TCP: se aumenta de 2 a 4 conexiones simultáneas de clientes TCP. [Version 222] - Modelos AX/CX/DX: + Soporte de 8 canales para controlador PID (Proporcional-Integral-Derivativo). + Servidor web: Si en comando CGI "EepromRead Address Quantity" el argumento 'Quantity' es igual a 0, se lee la memoria EEPROM completa del dispositivo, independiente del modelo o tamaño. + Se agrega función: SysGetMillis() para retornar número de milisegundos desde último reset. + Se corrige función: SysGetTickCount() [Version 221] - Modelos AX/CX/DX: + Servidor web: Agrega comando CGI "EepromRead" para leer bloques de bytes de memoria EEPROM desde página dinámicas (extensiones .SHTML, .JSON y .BIN). Permite bajar memoria como archivo. + Soporte de nuevas funciones para manejo de memoria EEPROM. EepromCheckFail(): Comprueba funcionamiento correcto. EepromWriteCell(), EepromReadCell(): Escribe/Lee una sola celda o palabra de 32-bits. EepromWriteString(): Escribe un string con formato en memoria. EepromClearAll(): Incializa toda la memoria con un valor definido. Funciones para leer/escribir datos Floats en memoria: EepromWriteFloat(), EepromWriteFloats(), EepromReadFloat() y EepromReadFloats(). + Soporte de funciones para direccionar memoria EEPROM en palabras de 32-bits: EepromWriteWord32(), EepromWriteWords32(), EepromReadWord32(), EepromReadWords32(), EepromWriteFloat32(), EepromWriteFloats32(), EepromReadFloat32(), EepromReadsFloats32(). + Corrige bug en función EepromMemSet(). + Funciones agregadas para compatibilidad futura: SysResetHard(), SysTempRead() [Version 220] - Modelos AX/CX/DX: + Corrige bug de "evento que no se llama" al utilizar "samplers" para muestrear entradas analógicas y leer contenido al llenarse buffer interno. [Version 219] - Modelos AX/CX/DX: + Agrega función VoutWriteVolt() que permite especificar voltaje para salida analógica. + Agrega funcionalidad para utilizar puerto RS-485 con funciones de puerto serie existentes para crear protocolos arbitrarios: SerialRs485SelectTx(), SerialRs485SelectRx() y opción SERIAL_INTERFACE_RS485 para SerialInit(). [Version 218] - Modelos AX/CX/DX: + Agrega función SerialSendStr() para enviar cadenas por el puerto serie (con formato opcional). [Version 217] - Modelos AX/CX/DX: + Corrige bug en función UnpackBytes() + Agrega funciones StrPack() y StrUnpack() para realizar conversiones entre "strings packed" y "string unpacked". + Agrega función EepromMemSet() que permite inicializar un segmento de memoria EEPROM con un valor definido. + Corrige Bug cuando se intenta programar PLC mientras un Master ModBus RTU (ej: HMI SH-300, Kinco) esta conectado por RS232/485 y realiza múltiples peticiones en intervalos pequeños. + Corrige Bug cuando se realizan escrituras en memoria flash por configuración (ejemplo declaración de módulos, cambio de IP, etc) y hay un Master ModBus RTU (ej: HMI SH-300, Kinco) conectado por RS232/485. [Version 216] - Version preview, no oficial. [Version 215] - Modelos AX/CX/DX: + WebServer: Se procesan correctamente dos o más Query String enviados con diferentes formularios POST. Funciones relacionadas para procesar datos recibidos por metódo POST: WebServerCheckFieldValueStr(), WebServerGetFieldValueInt(), etc. + Función WebServerGetFieldValueStr() admite argumento "packed" para devolver string con formato packed o unpacked (valor por por defecto). + Funciones para memoria EEPROM: Corrige bug de límite de memoria 16KB para dispositivos con 32KB de memoria EEPROM. [Version 214] - Version preview, no oficial. [Version 213] - Version preview, no oficial. [Version 212] - Modelos AX/BX/CX/DX: + Corrige funciones para filtros de entradas analógicas (evita "error aleatorio de valor extremo"). + Minimo período de muestreo para filtros analógicos: 800 uS + Corrige bug "cuelgue" al intentar programar cuando sampler/filtros para entradas analógicas tiene frecuencia alta. - Modelos AX/CX/DX: + Servidor web: se amplia de 4 a 6 la cantidad de conexiones abiertas simultáneas. + Proceso de carga de programa a PLC mejorado. + Funciones SysGetDeviceName() y SysGetDevicePartNumber() admiten argumento "packed" para devolver string con formato packed o unpacked. [Version 211] - Modelos AX/BX/CX/DX: + Se verifica memoria RAM/ROM disponible en PLC antes de cargar programa (independiente de StxLadder) para evitar desborde de memoria. Se RECOMIENDA actualizar firmware a esta versión junto con StxLadder a versión 1.9.0 o superior. + Se amplia de 6 a 10 la cantidad de conexiones abiertas simultáneas TCP. + Se amplia de 12 a 20 la cantidad de puertos disponibles para escucha de paquetes TCP. + Se amplia de 2 a 4 la cantidad de conexiones abiertas simultáneas ModBus TCP (esto se conoce en documentación como parámetro "NumberMaxOfTransactions"). + Nueva función SysGetUptime() que devuelve el tiempo de actividad del sistema en segundos desde el último inicio/reset. + Nueva función SysGetPowerupTimestamp() que devuelve el timestamp del último inicio/reset. + Nueva función SysGetTickCount() que devuelve el contador de ticks del sistema operativo (frecuencia de cuenta definido por TICK_RATE_HZ). + Cambio interno para mejorar velocidad de puertos I/O. + Nuevas funciones SysGetScriptMemInfo(), SysGetTaskStackRemain(). [Version 210] - Version preview, no oficial. [Version 208] - Modelos AX/CX/DX: + Agrega soporte para actualizar RTC con hora/fecha de red utilizando servidores NTP. Funciones: NtpEnable(), NtpDisable(), NtpGetLibStatus(), NtpIsEnabled(), NtpIsRtcUpdated(). + Agrega funciones SysGetFirmInfo(), SysGetDeviceName(), SysGetDevicePartNumber() + Corrige retorno de función SysGetBoardVer() + Agrega funciones Int16ToInt(), PackBytesArrayToInt(), PackBytesToInt(), UnpackIntToByteArray(), UnpackFloatToInt16(), PackInt16ToFloat() + ModBus RTC y ModBus TCP en Modo Servidor / Esclavo: Se expande el número de "Holding Registers" a 64, nuevo rango de direcciones validas: ModBus TCP 40001 a 40064 (Modo Servidor / Esclavo) ModBus TCP 42001 a 42064 (Modo Servidor / Esclavo) - Modelos AX/BX/CX/DX: + Indicador de RTC ERROR o RTC FAIL, se limpia (vuelve a 0) correctamente, si se actualiza fecha/hora por cualquier medio disponible (comando, actualización por NTP, software StxLadder, etc). No es necesario volver a resetear al dispositivo. + Información "Uptime" calculada correctamente en modelos con RTC sin bateria. [Version 207] - Modelos AX/CX/DX: + Corrige bug en funcion TimeGetTimestamp(). + Correcciones internas en funciones de red que resuelven nombres de host (STMP, HTTP SEND). + Funcion ResolvLookUp() permite "forzar" resolver nombre con opcion RESOLV_OPT_FORCE en tercer argumento. + Correción para envio de mails con función SmtpSimple(), adaptado para mejorar calidad del mail y no ser considerado SPAM. + Mails enviados con funciones SMTP contienen encabezado "Reply-To". [Version 206] - Version preview, no oficial. [Version 205] - Modelos AX/CX/DX: + Cliente Web, funciones para realizar transacciones a servidor web, HTTP GET y POST. Funciones HttpSendGet(), HttpSendPost(), etc. + Funcion SmtpInitSimple() para enviar emails a traves de servidor SMTP configurado por el PLC. + Se agregan funciones para generar numeros aleatorios: Random(), RandomRange(), RandomSeed(), RandomR() y random(). + Mejora interna para funciones para modulo STX810. Manejo de argumentos fuera de escala. + Buffer de salida para cliente TCP se aumenta de 200 a 250 bytes. + Funciones que utilizan impresion de formato en cadena, aceptan un string de parametro de formato (%s)con longitud de hasta 200 caracteres. Ejemplo: StrFormat(), WebServerPrintStr(), xxx-Printf-xxx(), etc - Modelos AX/DX: + Importante: Solo lenguaje Ladder Correcta carga de valores de entradas DIN en memoria al inicializar el sistema. Se cargan valores inmediatos, para reflejar el estado actual por hardware de las entradas DIN. Versiones anteriores de firmware, partian de valores de memoria por defecto y la actualizacion inicial ocurria 10 mS despues. A menos que se utilizara el componente DinDelay, con argumento 0. [Version 204] - Version preview, no oficial. [Version 203] - Version preview, no oficial. - Modelos AX/CX/DX: + Funciones para controlar display LCD por I2C: dLcdPrintf(), dLcdSetSize(), dLcdClear(), etc [Version 202] - Modelos AX/CX/DX: + Importante: Restauracion de parametros de fabrica mediante boton DEF/BOOT, ahora requiere una secuencia para evitar una ejecucion indeseada. Ver hoja de datos actualizada del producto para procedimiento. + Protecciones contra borrado/escritura ocacional de memoria flash. + Mejoras internas en vectores ISR. + Corregido rango de valores de cuentas para Pawn de DinCounterGetValue(), limitado a 31 bits o valor 2147483647. + Corregido rango de valores de cuentas para Pawn de Count1GetEventCnt()y Count2GetEventCnt(), limitado a 31 bits o valor 2147483647. + El boton DEF/BOOT se puede leer como entrada DIN13, permite uso para proposito general con fines de prueba. + Otros cambios internos. [Version 201] - Modelos AX/CX/DX: + Funcion DinOnChangeSetEvent() acepta parametro SampleRate para especificar la velocidad de deteccion de cambios sobre entradas. + Nuevas funciones para utilizar todas las entradas DIN como contadores y medicion de frecuencia/RPM: DinCounterConfig(), DinCounterGetValue(), DinCounterGetFreq(), DinCounterGetRPM(), DinCounterClear(), DinCounterDisable(). [Version 200] - Modelos AX/CX/DX: + Soporte protocolo Wiegand 32 para Puerto de Expansion. + Corrige bug cuando se intenta programar PLC durante conexiones TCP/UDP activas que llaman eventos del PLC. + Servidor Web: soporte archivos JSON extension .json con contenido dinamico. [Version 199] - Modelos AX/CX/DX: + Corrige lectura de voltaje/corriente de canales VIN1, VIN2 y VIN3 cuando se utilizan funcines VinReadVolt() y VinToCurrent(). + Funcion Stx810_WriteChVolt() corregida en argumento voltaje. [Version 198] - Modelos AX/CX/DX: + Servidor Web: soporte para compresion de archivos. + Funcion TcpServerProcessId(), correcciones. + Funcion Stx810_WriteChVolt() mejorada, requiere StxLadder v1.7.4. [Version 197] - Modelos AX/CX/DX: + Soporte para modulo de expansion STX810 (salidas analogicas). Funciones Stx810_Init(), Stx810_WriteCh() y Stx810_WriteChVolt(). + Servidor ModBus TCP y ModBus RTU: Funcion MbServInit() y MbRtuServInit(), admite opcion ZERO ADDRESS OFFSET. Para mapear direcciones a partir de 0. + Servidor ModBus TCP y ModBus RTU: Se permiten leer bits con funciones ModBus (codigos 1, 2, 15) en bloques de hasta 32 bits para bobinas o entradas discretas. + Servidor Web: soporte archivos extension JavaScript (.js). + Funcion NetConfigOption() para configurar opciones de red, opcion disponible NET_OPT_SPLIT. + Nuevas funciones NetTcpSplitOff() y NetTcpSplitOn(). [Version 196] - Modelos AX/CX/DX: + Soporte para Servidor Web embebido. + Soporte para servidor TCP/IP de proposito general. + Soporte protocolo Wiegand 26 (para tarjetas) para Puerto de Expansion. + Mejor tiempo de respuesta en servidores TCP/IP. + Agrega funciones: SysGetIP(), SysGetDnsIP(), SysGetRouterIP() y SysGetSerialNumber(). + Nueva funcion Sqrt() para calcular raiz cuadrada. + Agrega funciones standard del lenguaje: numargs(), getarg(), setarg(), util para crear funciones Pawn que acepten argumentos variables. + Cliente TCP: ahora buffer de transmision permite 200 bytes. + Funcion StrFormat(): permite generar cadena de 400 caracteres. [Version 195] - Modelos AX/CX/DX: + Nueva opcion SMTP_OPT_NO_AUTH para SmtpInit(). Permite enviar mails sin autentificar en servidores habilitados. [Version 194] - Modelos AX/CX/DX: + Nueva funcion I2C: I2C0ForceStandardSpeed(). [Version 193] - Modelos AX/CX/DX: + Funcion UdpSendWakeOnLan(): Permite activar computadoras mendiante protocolo Wake-On-LAN. + Nueva funciones matematicas para logaritmos: LogN(), Log10(). + Funciones para utilizar bus I2C en puerto de expansion: I2C0MasterSend(), I2C0MasterReceive(), I2C0MasterSendProtocol(), I2C0MasterSendByte(), I2C0MasterReceiveByte(), I2C0Init(), I2C0SetSpeed(), etc [Version 192] - Modelos AX/CX/DX: + Funcion MbClGetRxData() para ModBus TCP, agrega nuevo argumento ByteOffset. + Soporte para "Modulos > Administracion de expansiones > STX570" desde StxLadder, lenguaje Ladder. [Version 191] - Modelos AX/CX/DX: + Nueva funcion PwmInit(Ch): Permite re-inicializar un canal PWM que fue inicializado como salida DOUT. + Nueva funcion VinToCurrent() para leer corriente utilizando un resistor como elemento de sensado. - Modelos AX/BX/CX/DX: + Se incrementa el requisito de firmware minimo a 191, lo que fuerza a actualizar StxLadder a version 1.6.4 o superior para usar este firmware. + Primera version comercial-final p/STX8091 liberada. [Version 190] Modelos AX/BC/CX/DX: + Version preview-beta p/STX8091 liberada. [EOF]