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 - Boris Estudiez

Páginas: [1]
1
STX8081 / Re: Q
« : abril 25, 2012, 14:00:30 pm »
La parte del while() no es problema, ya que el codigo se bloquea al enviar cada comando para esperar su
respuesta. Por lo tanto, el comando siguiente se realiza cuando termino el primero.

Como prueba, realize el siguiente codigo que envia 1000 veces 8 comandos para cerrar los
relays (sin delay), y no da problemas:

        private void button1_Click(object sender, EventArgs e)
        {
            SendStat CmdStat = SendStat.Success;

            MessageBox.Show("INICIO: Puede tardar unos segundos...");

            for (int i = 0; i < 1000; i++)
            {
                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay1)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay2)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay3)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay4)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay5)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay6)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay7)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                if ((CmdStat = PioBoard.Cmd.Relay.Close(Relays.Relay8)) != SendStat.Success)
                {
                    MessageBox.Show(CmdStat.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            MessageBox.Show("FIN");
        }
    }

Fijate desabilitando todo codigo que (excepto la parte de los reles) y comproba si continua el error.

Si podes, enviame el proyecto completo a mi email (solo el programa que da error), asi lo pruebo y
analizo mejor.

Saludos, Boris.-



2
STX8081 / Re: Q
« : abril 25, 2012, 12:56:47 pm »
Buenas Matias,

Ese error suele ocurrir cuando hay dos o mas instancias del programa tratando de acceder
al mismo tiempo a una conexion a la placa.

Tambien puede ocurrir que tengas abierto otra aplicacion que este haciendo
uso de la conexion mientras envias los comandos.

Podes confirmarme si desde otra parte del programa no estas realizando una
conexion o enviando un comando a la placa cuando ejecutas estas rutinas ?.

Saludos

3
STX8081 / Re: Frecuencia de señal con contadores - Resetear
« : marzo 19, 2012, 00:53:24 am »
Buenas Jose,

Fijate colocar la funcion Count1Reset() luego de tomar "fb".

fb = Count1GetEventFreq_I()
Count1Reset()

Eso debería resetear los registros del contador,
que en este caso devuelve la frecuencia de los
dos últimos pulsos contados. Al resetear el contador
en cada lectura, cuando no hay pulsos, el retorno
es cero.

Otra cosa, para optimizar memoria y velocidad,
podes hacer lo siguiente para filtrar las muestras:

new i, sp   // declarar antes del while(true)

// ... codigo ...

// Filtro
sp = 0
for(i=0; i<40; i++)
{
   // Obtener 40 muestras
   sp += Vin1Read()
}

// Promediar.
sp = sp / 40


Saludos, Boris.-

--

Slicetex Electronics
www.slicetex.com.ar

4
STX8081 / Re: Memoria EEPROM y Registro de Hora
« : febrero 13, 2012, 15:28:31 pm »
Hola Martin,

Una forma simple y eficiente de registrar fecha y hora es utilizando "timestamp".

Un "timestamp" es un numero, que representa los segundos transcurridos
desde el 01/01/1970 a una fecha determinada.

La ventaja de un "timestamp", es la de permitirte guardar
la fecha y hora en una sola variable.

Para obtener el timestamp de la fecha y hora actual, podes
utilizar la funcion RtcGetTimestamp().

Luego con la funcion TimeConvertTimestamp() podes
convertir un "timestamp" a fecha y hora leibles por un
humano.

Luego con EepromWriteCells() podes ir guradando cada
timestamp en la memoria EEPROM.

Un ejemplo de "timestamp" esta incluido en el SDK y
es el siguiente:

main()
{
   // Variables que almacenara el TimeStamp y fecha/hora.
   new TimeStamp, Day, Month, Year, Hour, Min, Sec

   LcdClear()

   // Loop principal.
   while(true)
   {
      // Obtener timestamp actual y almacernarlo en una variable.
      TimeStamp = RtcGetTimestamp()

      // Convertir TimeStamp a fecha y hora.
      TimeConvertTimestamp(TimeStamp, Day, Month, Year, Hour, Min, Sec)

      // Imprimir fecha y hora del reloj en display LCD.
      LcdPrintf(0, 0, "%02d/%02d/%d", Day, Month, Year)
      LcdPrintf(0, 1, "%02d:%02d:%02d", Hour, Min, Sec)

      // Esperar 1 segundo.
      DelayS(1)

      // Conmutar led D1 "DEBUG".
      LedToggle()
   }
}


Saludos, Boris.-

www.slicetex.com.ar


5
STX8081 / Re: Transmitir datos Ethernet
« : noviembre 17, 2011, 12:39:57 pm »
Hola Pablo,

Si, es posible transmitir datos via ethernet. Si conoces la direccion
IP de la computadora de destino, podes utilizar la siguiente funcion:

UdpSend(A0, A1, A2, A3, Port, Size, Data[], Packed)

Donde la direccion IP la especificas en A0.A1.A2.A3.
Port: es el puerto de destino.
Size: es la cantidad de datos a enviar en bytes.
Data: es un array con los datos a enviar.
Packed: Especifica si los datos estan empaquetados, ver manual.

Entonces, vamos a un ejemplo:

Para enviar 6 bytes, con el mensaje "Hola!", hacemos

   // Crear un array para almacenar los bytes a enviar.
   new Data[6]

   // Almacenar caracters ASCII a enviar...
   Data[0] = 'H'
   Data[1] = 'o'
   Data[2] = 'l'
   Data[3] = 'a'
   Data[4] = '!'

   // Sexto byte con un valor entre 0 y 255.
   Data[5] = 0

   // Enviar paquete UDP a dirección 192.168.1.11, puerto 4980.
   UdpSend(192,168,1,11, 4980, 6, Data, false)

Luego, con el programa PawnUdpRx que está incluido en el paquete de
software STX8081-SDK,  podes desde la computadora, ver la recepecion
de los bytes enviados desde el PLC.

Tenes un ejemplo completo en el manual del PLC:

http://www.slicetex.com.ar/hw/stx8081/docs/STX8081-UM-PLC-AX_CX.pdf

Y una nota de aplicacion sobre como crear aplicaciones Windows para
leer datos desde la computadora en:

http://www.slicetex.com.ar/hw/stx8081/docs/STX8081-AN_001.pdf

Saludos, Boris.-

--
Slicetex Electronics
www.slicetex.com.ar





6
STX8081 / Re: Display LCD y Control
« : abril 16, 2011, 03:21:51 am »
Hola Fede,

Para el control y lectura de señales analogicas, te recomiendo el PLC STX8081-C2:

http://www.slicetex.com.ar/hw/stx8081/stx8081-cx.html

Lo unico que tendrias que tener en cuenta, es adaptar
las señales de los sensores al rango de las entradas
analogicas del PLC, para aprovechar el maximo la
resolucion.

En cuanto a la apertura y cierre de valvulas, lo podes hacer
con los reles del PLC o con las salidas PWM, en caso de
que sean valvulas proporcionales.

Saludos, Boris.-


7
STX570 / Bienvenidos!
« : febrero 27, 2011, 01:05:35 am »
Hola,

En este foro puede hablar sobre asuntos relacionados a la placa STX570.

La placa STX570 le permite expandir las entradas y salidas discretas
a nuestra familia de PLC.

Espero sus comentarios y/o preguntas.

Saludos, Boris.-

--
Slicetex Electronics
www.slicetex.com.ar

8
STX8081 / Re: Display LCD y Control
« : noviembre 07, 2010, 23:19:51 pm »
Hola Pablo,

Los modelos de display LCD que soporta la placa, son varios (lineas x caracteres):

  • 2x16
  • 2x20
  • 4x20
  • Etc...

Por lo general, los mas utilizados son 2x16 y 4x20. Podes elejirlos al momento de
comprar la placa o agregarlos luego.

En cuanto a tu aplicacion, es perfectamente posible realizarla con la
STX8081 en modo PLC (modelos C1 o C2).

Solamente tenes que programar un pequeño script en PAWN
para utilizar los contadores en las entradas DIN7 o DIN8.
Luego agregas un evento "Match" para que te avise si la cuenta llego
a cierto numero.

Finalmente envias los datos por la red Ethernet a traves de los comandos UDP
suministrados por el PLC.

En tu PC, debes realizar un pequeño programa en Microsoft Visual C#,
para recibir los datos del PLC. Te recomiendo leer la nota de aplicacion
AN001 de la seccion de documentacion de la pagina. Es muy simple.

Para realizar tareas periodicas, por ejemplo, los Sabados a las 19 HS,
debes utilizar las alarmas del PLC.

Con las funciones de alarmas, programas la fecha y repeticion de un evento
del tipo "Alarma".

Cuando el evento ocurre, lees las entradas analogicas y controlas
los reles.

Cualquier duda avisame.

Saludos, Boris.-

---
Slicetex Electronics
www.slicetex.com.ar

9
Discusión General / Bienvenidos!
« : octubre 02, 2010, 21:14:45 pm »
Hola,

En este foro puede hablar sobre cualquier tema relacionado con la tecnología.

También, puede hablar sobre productos o servicios ofrecidos por Slicetex.

Saludos, Boris.-

--
Slicetex Electronics
www.slicetex.com.ar

10
STX8081 / Bienvenidos!
« : octubre 02, 2010, 21:10:47 pm »
Hola,

En este foro puede hablar sobre asuntos relacionados a la placa STX8081.

 - Preguntas en general.
 - Modo PLC.
 - Modo DAQ.
 - Programacion (Scripts PAWN, Microsoft Visual C#, etc).
 - Caracteristicas electronicas, etc.

Espero sus comentarios y/o preguntas.

Saludos, Boris.-

--
Slicetex Electronics
www.slicetex.com.ar

Páginas: [1]