Escribir memoria EEPROM desde Ethenet con Visual C#

  • 1 Respuestas
  • 1055 Vistas

VictorR

  • Novato
  • *
  • Mensajes: 19
Escribir memoria EEPROM desde Ethenet con Visual C#
« : junio 06, 2014, 19:52:02 pm »
Hola, estoy teniendo problemas para grabar en la memoria, me podes dar una mano?

En c#:

enviarComando3(5,100, 15);
enviarComando3(5,200, 15);


etc...

Código: [Seleccionar]
       private void enviarComando3(int comando, int posMemoria, int
contenido)
        {

                UdpRxCmdStat OnUdpRxStat = UdpRxCmdStat.OK;

                Application.DoEvents();
                SendStat CmdStat = SendStat.Success;

                Thread.Sleep(500);


               byte[] DataBytes = new byte[3];

                DataBytes[0] = (byte)comando;
                DataBytes[1] = (byte)posMemoria;
                DataBytes[2] = (byte)contenido;


                Placa.Cmd.Udp.Send(DataBytes, out OnUdpRxStat);


        }

En placa:

Código: [Seleccionar]
PlcMain()
{


Stx570_Init(0)
Stx570_Init(1)
Stx570_Init(2)
Stx570_Init(3)

UdpRxBufFlush()
UdpRxSetEvent()


while(1) {
sleep(200)


EepromReadByte(100, var1)
DelayMS(100)
EepromReadByte(200, var2)
DelayMS(100)
EepromReadByte(300, var3)
DelayMS(100)
EepromReadByte(400, var4)
DelayMS(100)
EepromReadByte(500, lunes)
DelayMS(100)
EepromReadByte(600, martes)
DelayMS(100)
EepromReadByte(700, miercoles)
DelayMS(100)
EepromReadByte(800, jueves)
DelayMS(100)
EepromReadByte(900, viernes)
DelayMS(100)
EepromReadByte(1000, sabado)
DelayMS(100)
EepromReadByte(1100, domingo)
DelayMS(100)



LcdClear()
LcdPrintf(0, 0,
"%d%d%d%d%d%d%d",lunes,martes,miercoles,jueves,viernes,sabado,domingo)
LcdPrintf(0, 1, "%d:%d %d:%d %d:%d",var1,var2,var3,var4,var1,var2)

}
}



// Función del evento @OnUdpRx().
@OnUdpRx()
{

UdpRxDataRead(RxData, 0, 3, false)
UdpRxBufFlush()

if(RxData[0] == 5)
{
EepromWriteByte(RxData[1],RxData[2])
}

}


El problema es que no guarda los datos, a veces si.
« Última Modificación: junio 06, 2014, 20:09:46 pm por Soporte »

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1722
  • Soporte Técnico
Re: Escribir memoria EEPROM desde Ethenet con Visual C#
« Respuesta #1 : junio 06, 2014, 19:56:41 pm »
Buenas tardes Victor,

En los archivos adjuntos, te paso un programa en C# que te permite enviar un array
de bytes al PLC via Ethernet para escribir en memoria EEPROM (ver PlcEepromWrite-v1-Visual.zip).

Y un proyecto en StxLadder (basado en tu código) para el PLC que recibe los datos
vía Ethernet y los graba en memoria EEPROM (ver EepromRmi-v1.zip).

Respecto a tu código en C#, estas enviando la dirección como un "byte", por lo tanto el
rango de valores que podes enviar es de 0 a 255. En el PLC estas leyendo posiciones
de memoria arriba de 255. Por lo tanto no las vas a leer, ya que no las estas grabando.


También debes comprobar los retornos en C# para saber si no tenes problemas en la
conexión, fíjate en el archivo de ejemplo que te paso.

En cuanto al codigo del PLC, fíjate como leo la memoria EEPROM.

Si EepromBusy() == 0, realizo la lectura. De esta forma evito leer la memoria EEPROM
cuando esta ocupada en un ciclo de escritura (recorda que la memoria puede tardar varios milisegundos
en grabar el dato después de llamar a EepromWriteByte() ).

Mira el código que adjunto para StxLadder.

Finalmente, recorda cuando tengas errores, ver los códigos de errores retornados
por las funciones (ya sea en Pawn o Visual C#) ya que te pueden guiar en la
resolución del problema.

Te recomiendo leer la descripciones de las funciones en el manual de programación Pawn también.

Quedo a disposición.
« Última Modificación: septiembre 21, 2014, 22:14:25 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com