Falla en codigo pawn con arrays

  • 4 Respuestas
  • 417 Vistas

Mariano Mazza

  • Aprendiz
  • **
  • Mensajes: 20
Falla en codigo pawn con arrays
« : agosto 17, 2016, 21:51:54 pm »

Que tal, estoy teniendo un error en el plc 8091 al ejecutar el programa en el PLc que no lo detecta el soft cuando lo estoy compilando

la falla se da en una linea especifica del pawn

El programa solo es una linea ladder compuesta de cuatro elementos en serie, un bloque pawn+timer ladder+contador ladder+pawn


el primer bloque es un script pawn donde declaro un array
  • [y] y le cargo algunos valores,


luego un timer ladder que se activa cada 1 seg

luego un sumador que lo uso para contar pasadas para que corte a las 30 pasadas

y por ultimo otro bloque insertado pawn (éste último es el del problema)

el bloque tiene dentro nuevamente el array
  • [y] con una posición libre en este caso la [6][0] que le cargo un valor entero cualquiera por ej =6


eventos[5][0] =  6 

esa linea especificamente genera en el PLC RUN ERROR.

No puedo hacer todo en un solo bloque pawn porque una rutina while o for me mantiene detenida la ejecución de otras lineas ladder
De la manera que lo implemente el timer ladder no me detiene la lectura de otras lineas




Aca detallo el contenido del primer bloque

new eventos [38][10]
eventos
  • [0]=12

eventos [1][0]=7
eventos [2][0]=1
eventos [3][0]=3
eventos [4][0]=5


el segundo bloque

eventos [5][0]=6
 

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1742
  • Soporte Técnico
Re:Falla en codigo pawn con arrays
« Respuesta #1 : agosto 18, 2016, 11:14:54 am »
Probablemente estes declarando el array en el lugar incorrecto.

Dentro del código insertado no debe definirse el array, ya que sera definido infinitamente debido a que Ladder ejecuta ciclicamente el diagrama Principal, lo cual solo puede ser detectado en tiempo de ejecución y no en la compilación.

Adjuntame el proyecto, y veo si es eso (podes hacer un .zip del proyecto completo desde "Archivo > Crear backup del proyecto").

Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 1 de enero al 25 de enero de 2018, cerramos por vacaciones.
Tenga en cuenta para sus pedidos y/o consultas.

Mariano Mazza

  • Aprendiz
  • **
  • Mensajes: 20
Re:Falla en codigo pawn con arrays
« Respuesta #2 : agosto 18, 2016, 13:21:09 pm »
Te adjunto programa con explicaion del mismo dentro del pawn

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1742
  • Soporte Técnico
Re:Falla en codigo pawn con arrays
« Respuesta #3 : agosto 18, 2016, 18:44:47 pm »
El error es declarar el array eventos dentro del "if()" en el primer componente que inserta código Pawn.

Código: (Pawn) [Seleccionar]
if(CurrentFlow)
{   
   // ....

   new eventos [38][10]  //tabla de valores

   // ....
 
}


El alcance o visibilidad del array  eventos será solo dentro del "if()" delimitado por los corchetes { } si lo haces de esa manera.

Cuando se trata de accederlo desde otro componente con código insertado, da error porque no se encuentra en memoria.

Lo que se puede hacer, es crear un archivo "encabezado" para Pawn en el proyecto, por ejemplo llamado "global.inc".
De esa manera, definís el array  eventos allí y el mismo tiene alcance global.

Te adjunto proyecto con la corrección.

Te puse una nota, para que tengas cuidado de no exceder los limites de la dimensión del array, ya que seria una posición ilegal de memoria.
Deberías comprobar la variable usada como "indice" si la incrementas desde otra parte.



Adjunto también otra versión, con el diagrama evento "OnRtcSecond" que se llama cada "1" segundo y realiza el muestro que realizas en paralelo.
Podes verlo como alternativa.



Tip: También podes hacer un proyecto completamente en lenguaje Pawn si te es mas fácil al emplear muchas funciones Pawn.


« Última Modificación: agosto 18, 2016, 18:48:09 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Atención: Desde el 1 de enero al 25 de enero de 2018, cerramos por vacaciones.
Tenga en cuenta para sus pedidos y/o consultas.

Mariano Mazza

  • Aprendiz
  • **
  • Mensajes: 20
Re:Falla en codigo pawn con arrays
« Respuesta #4 : agosto 19, 2016, 00:53:25 am »
Genial sos un capo gracias