Mostrar Mensajes

Esta sección te permite ver todos los mensajes hechos por este usuario, recuerda que solo puedes ver los mensajes en áreas en donde tu tienes acceso.


Mensajes - guille

Páginas: 1 [2]
16
STX8091 / Problema con @OnRtcSecond() ???
« : octubre 28, 2016, 11:36:33 am »
Estimados,

buenos dias! Algo raro sucede con el evento RTC cada 1 segundo. Lo estoy utilizando para contabilizar las "Horas de uso" del sistema.... Pero después de ingresar en la rutina principal del programa, donde se accionan diferentes actuadores por tiempos establecidos, cuando vuelvo el sistema tiene un "delay", hasta el segundero del RTC cambia cada 2 segs. Detecté que es el evento de RTC porque al borrarlo dicho problema no existe. Adjunto el código a ver si pueden ayudarme!

Gracias!!

17
STX8091 / Re:Error MODBUS - Solucionado
« : septiembre 30, 2016, 11:46:45 am »
Hola Boris,

Puedo darme cuenta de lo que me decis. Problema solucionado!

Gracias!

18
STX8091 / Re:Error MODBUS
« : septiembre 21, 2016, 12:16:15 pm »
Adjunto!

19
STX8091 / Re:Error MODBUS
« : septiembre 21, 2016, 12:08:41 pm »
Hola Boris,

gracias por tu pronta respuesta! Te adjunto el proyecto completo. Seguí ambas notas de aplicación (AN023 y 024) para programar el HMI. Esta tarde voy a probar directamente con los proyectos que me enviás.

El proceso de RESET se dio como indicado: presione ambos botones, solté RESET y al cabo de unos segundos parpadeaba PAUSE. Ahi aprete 5 veces DEFBOOT, todos los leds se encendieron y acto seguido quedaron prendidos RUN ERROR y RTC ERROR. Cuando configure el PLC, le puse la hora y le baje un programa, estos se apagaron y todo volvió a la normalidad.

Cuando cargue nuevamente mi programa, el error persistió.

Saludos,

Guillermo.

20
STX8091 / Error MODBUS - Solucionado
« : septiembre 20, 2016, 19:39:05 pm »
Hola Boris,

estoy programando en PAWN utilizando el HMI ARRAY SH300 y venia todo bien, hasta que en un momento empezó a titilar el Led DEBUG del PLC y el HMI ya no actualiza los valores que le envío, como los valores de RTC....

Después de buscar el problema me di cuenta de lo siguiente: yo inicio el servidor con el siguiente código, obtenido de de la AN023.pdf, a saber:

if(MbRtuServInit(1, 9600, SERIAL_8E1, MB_RTU_INTERFACE_RS232) < 0)
{
// Error, pausar programa en este punto.
while(true)
{
DelayMS(2000)
LedToggle()
}
}

Me di cuenta que la función estaba retornando un valor menor a 0 y el programa quedaba pausado ahí...

Modifique el código de modo de mostrar que retornaba dicha función de inicialización y observe que me devuelve -1, o sea, "Error, el servidor ya se encuentra inicializado"..... Venia programando normal, sin errores, y de la nada apareció esto. Obviamente solo invoco esa función una vez, por lo cual no se porque me dice esto! Probé restaurar los valores de fabrica del PLC, reseteando con la combinación "DEF/BOOT" y "RESET", como indicas aquí en el foro. El error persiste!!

Porque me dice que ya esta iniciado el servidor Modbus aunque solo invoque 1 vez dicha función? Puedo seguir utilizándolo aun con este valor de error?? Que se puede hacer para volver a la normalidad?

Adjunto el código (casi) completo por las dudas:

///////////////////////////////////////////////////////////////////////////////////////////////////

PlcMain()
{
   // Crear variables para almacenar información del reloj.
   new Day, Month, Year, Hour, Min, Sec, DOW
     
   //Inicia servidor ModBus
   
   new R = MbRtuServInit(1, 9600, SERIAL_8E1, MB_RTU_INTERFACE_RS232);
         if(R < 0)
         {
            MbRtuServLoadRegister(42017, R)         
            while(true)
            {
            DelayMS(2000)
            LedToggle()
            }
          }
         
   // Inicializar placa STX570, dirección 0, conectada al puerto de expansión.
   //Stx570_Init(0)
   
   //Evento RTC
   RtcOnSecondSetEvent()
   
   //Lee EEPROM Programa A, TiempoUsoHs
   EepromRead(1,9,A)
   MbRtuServLoadRegisters(42001,9, A)

   EepromReadByte(0,TiempoUsoHs)
   MbRtuServLoadRegister(42017, TiempoUsoHs)
   
   while(true)
   {
      // Obtener información del reloj.
      RtcGetAll(Day, Month, Year, Hour, Min, Sec, DOW) //Reg 42010 al 42015
           
      MbRtuServLoadRegister(42010, Day)
      MbRtuServLoadRegister(42011, Month)
      MbRtuServLoadRegister(42012, Year)
      MbRtuServLoadRegister(42013, Hour)
      MbRtuServLoadRegister(42014, Min)
      MbRtuServLoadRegister(42015, Sec)
      //MbRtuServLoadRegister(42017, TiempoUsoHs)

      //Elige programa
      MbRtuServGetRegister(42018, Programa)
     
      //Comprueba si se ha modificado un programa
      MbRtuServGetRegister(42019, Config)
     
      //Iniciar Programa
      MbRtuServGetRegister(42020, Start)
     
      //Guarda las modificaciones realizadas sobre el programa en EEPROM
      if(Config)
         {
               Config=0
               DelayS(2)
               MbRtuServLoadRegister(42019, Config)
               
               MbRtuServGetRegisters(42001,9,A)
               EepromWrite(1,9,A)
               
               MbRtuServLoadRegisters(42001,9, A)
         
         }
   // Retorno.
   
   return 0
   }
}
   

//Interrupcion cada 1 seg - RTC
  @OnRtcSecond()
{
      CountMinReset++
      MbRtuServLoadRegister(42016, CountMinReset)
     
      if(CountMinReset==59)
         {
            CountMinReset = 0
            TiempoUsoHs++
            MbRtuServLoadRegister(42017, TiempoUsoHs)
           
            //EepromWriteByte(0, TiempoUsoHs)
           
         }
}

Gracias !!

Páginas: 1 [2]