El problema se manifiesta así: al compilar el programa (ya con el nuevo entorno), me tira el siguiente error:
Error de Memoria: Insuficiente memoria RAM: El proyecto requiere 19668 bytes y el dispositivo tiene disponible 16384 bytes. Disminuya variables globales, variables locales inicializadas, comparta/reutilice variables globales, utilice packed strings, agrupe datos, etc.
Hola Pablo.
En las últimas versiones de firmware y StxLadder, se hace una correcta comprobación de memoria RAM utilizada antes de cargar el proyecto al PLC. Por lo tanto, quiere decir que tu código utilizaba más memoria de la permitida.
Esto en general no causa problemas porque es probable que justo no interacciones con otros sectores de RAM utilizado por el sistema operativo, pero si llegara a pasar, se te cuelga el PLC.
La solución en general es bajar la memoria RAM utilizada, que en tu caso, seguramente es por utilizar muchas cadenas/strings, ya que cada carácter consume 4 bytes en Pawn.
Lo que te aconsejo, es cargar la última versión de firmware y StxLadder, y compilar con la opción:
"
Packed literal strings" , que se encuentra en "
Proyecto > Propiedades > Compilador (pestaña)".

Seguramente, el porcentaje de RAM utilizada se te va reducir bastante, y te va a dar "
Compilación correcta".
Sí lo compila (muy probable), tenés seguridad de que el PLC sea más estable respecto a la memoria utilizada RAM en tu proyecto.
La opción "
Packed literal strings" hace que se agrupen "4" carácteres de una cadena, en una celda de 32-bits, ya que si esta opción se utiliza un carácter por celda, lo que es un desperdicio de memoria, porque 3 bytes quedan libres sin utilizar.
En general no necesitarias otro tipo de cambio en tu código, a menos que indexes en algún lugar una cadena, caracter por caracter, por ejemplo:
new String[]="Hola"
if(String[0]='H')
{
// Letra H
}
Pero si solo operas con cadenas de forma normal, utilizando las funciones, no hay problemas (si debes actualizar firmware).
Sí utilizas la función
StrFormat(), el tercer argumento debe ser "
true" o "
PACKED":
StrFormat(..., ..., true, "...", ...)StrFormat(..., ..., PACKED, "...", ...)
En el link abajo, paso el
POST donde se muestra el por qué de esta nueva característica de StxLadder, ya que en previas versiones había un calculo erróneo sobre la estimación de RAM utilizada por el proyecto y podía sobrepasar los límites admitidos.
http://foro.slicetex.com/index.php?topic=335.msg1805#msg1805Además te da tips para disminuir uso de memoria RAM y utilizar "packed strings" .
Cualquier duda, avísame.
Saludos!