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 - Mariano

Páginas: [1] 2 3
1
SH-300 / Display encendido permanentemente
« : enero 20, 2017, 17:22:46 pm »
Que tal Boris,

El panel junto al plc opera perfecto según lo previsto.
Muy fácil de configurar.

Tal vez sea una consulta algo básica, pero en el manual original del SH300
no lo veo especificado y quiero salir de dudas.

¿Se puede dejar el display encendido en forma permanente sin que ello disminuya su vida útil?

Saludos

2
STX8091 - Familia PLC Cube / Re:Dos consultas sobre C#
« : junio 06, 2016, 22:24:25 pm »
Buenas noches Boris,

Efectivamente, desactivando la opción Intellitrace como me indicaste funciona sin problemas la opción debug.
Habilité el puerto 4950 en el router y anduvo sin problemas.
El paso siguiente será intentar la comunicación usando TCP como recomendás.

Muchas gracias por la inmejorable asistencia

Saludos cordiales

3
STX8091 - Familia PLC Cube / Re:Dos consultas sobre C#
« : junio 06, 2016, 12:22:49 pm »
Buenos dias Boris,
La intencion es implementar un sistema scada. Quiero arrancar por una aplicacion para windows. La version vs que tengo es la ultimate 2010.... Es posible que sea la version del c#... cual es la ud utilizan?.... Esa es toda la info que me da Boris.... una excepcion por desbordamiento de la pila....
Para usar la libreria sockets TCP cliente debo iniciar webserber en el PLC?....
Lo que quiero implementar es una aplicacion puntual en c# que pueda comunicar una PC (o un celular) via internet con uno o varios PLC remotos.....

Enviado desde mi SM-J110M mediante Tapatalk


4
STX8091 - Familia PLC Cube / Dos consultas sobre C#
« : junio 05, 2016, 14:54:39 pm »
Que tal Boris,

Te paso dos consultas…
*******************************************************************
1- Iniciándome en Visual C# me aparece un error al incluír la línea de programa:

PioBoard = new Stx8xxx("192.168.1.81", 0, Stx8xxxId.STX8081);

Realizando lo indicado en la AN001, recién al incluír esta línea mencionada el Visual Studio me da un error al querer correr el programa; mediante el botón Start Debug…

Te adjunto los archivos como Zip, y las imágenes que me aparecen en el error.
Al PLC le cargué el proyecto adjunto en la nota de aplicación Udp.RX.

La aplicación en Windows luego del error queda corriendo y activa/desactiva correctamente la salida 1 en el PLC.

Además, si en Visual le genero la solución (como aplicación terminada)… el programa completo de prueba funciona sin errores aparentes activando/desactivando el relé del PLC.

(Imágen 1 en word adjunto)

Si yo le doy a “No”… el programa corre y funciona (al parecer normalmente)….

(Imágen 2 en word adjunto)

El problema aparece al cerrarlo para tratar de volver al entorno de Visual… lo cierro con la clásica X… pero el entorno queda como “colgado”….

Te paso los códigos para que los pruebes a ver si te suceden los mismos errores… al parecer queda algo “colgado” o un bucle infinito que no permite retornar el control al entorno…

Con un programa de prueba sencillo en C# no se me producen errores… es decir, corro mediante Start debug y al cerrarlo el entorno vuelve a responder normalmente…


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

Si en la imagen 1, le doy a “si” para depurar se me abre un aplicativo IntelliTrace en el que me informa luego que el error correponde a un desbordamiento de la pila….

No obstante el entorno también queda como en un bucle infinito..... cómo podría evitarse este error?

*******************************************************************
2- En la sentencia:

PioBoard = new Stx8xxx("192.168.1.81", 0, Stx8xxxId.STX8081);

Cómo sería la sintaxis para agregar una IP remota (no en LAN) ? por ejemplo

186.190.175.158:83

Esto sería para direccional un PLC fuera de la LAN, es decir conectado a un router o modem que realiza un fordwarding mediante el puerto 83...

El código PAWN del PLC también debería cambiar?

Te adjunto un word donde estan las imágenes y los codigos de programa...

Saludos

5
STX8091 - Familia PLC Cube / Re:Guardar en EEPROM Fecha y Hora
« : mayo 17, 2016, 22:26:59 pm »
Eso esta buenisimo Boris.... en mi proyecro va a ser muy util... apenas pueda probarlo te compartire los resultados

Enviado desde mi SM-J110M mediante Tapatalk


6
STX8091 - Familia PLC Cube / Re:Guardar en EEPROM Fecha y Hora
« : mayo 17, 2016, 15:54:02 pm »
Gracias Boris... anduvo bárbaro...

Tenía errores de sintaxis en mi programa....
Existe algún documento de donde pueda consultar la sintaxis de todas las funciones Pawn disponibles?

Saludos

7
STX8091 - Familia PLC Cube / Re:Guardar en EEPROM Fecha y Hora
« : mayo 16, 2016, 16:11:46 pm »
Gracias Boris... y como puedo hacer para almacenar estas cadenas en un array....? ... Es decir: ¿Como declaro y cargo un array de cadenas?

Enviado desde mi SM-J110M mediante Tapatalk


8
STX8091 - Familia PLC Cube / Re:Guardar en EEPROM Fecha y Hora
« : mayo 12, 2016, 12:43:13 pm »
Que tal Boris,

Con respecto a este tema, decidí elaborar como primera prueba un muestreo de la variable vía web server.

El primer problema que tengo es al intentar "poner en hora" el RTC del PLC.
Ingreso mediante el menú PLC a la pestaña Fecha/Hora; la fecha la muestra bien (12-05-16) pero en los campos
hora / minutos / segundos muestra todos los valores en cero.... presionando el botón "actual" , levanta correctamente
la hora de la PC... luego le doy "enviar" y al parecer la actualiza (Según dice un cartel emergente) hasta ahí bárbaro.

Luego, al conectarme de nuevo con el PLC y darle click nuevamente sobre la pestaña Fecha/Hora, todos los valores se
encuentran en cero nuevamente... y por las pruebas en el programa que estoy haciendo aparentemente nunca se produce la actualización de la hora (Hora/minutos/segundos).
*****************************************************************
El segundo problema es el que sigue:

Para no leer todos los datos de la fecha (puesto que en primera medida sólo me interesa HHMMSS)
Uso el siguiente código
//////////////////////////////////////////////////////////////////////////////
   RtcGetTime(RtcData[0], RtcData[1], RtcData[2])
   //Hora_completa=RtcData[0]+':'+RtcData[1]+':'+RtcData[2];
   
   Hora_completa=RtcData[1];   // muestro sólo los minutos
   
   Hora[puntero_horas]=Hora_completa;
//////////////////////////////////////////////////////////////////////////////
En este código, sólo quedé mostrando los minutos (RtcData[1])... ya que no me funciona como creía la instrucción

   Hora_completa=RtcData[0]+':'+RtcData[1]+':'+RtcData[2]; // Intento concatenar subcadenas como en C++

Mi intención es armar una cadena o string con los valores de modo que quede HH:MM:SS...
para que este dato me quede en una sola variable.
Todas las variables están declaradas en forma global en PLC Main usando la reservada "new"... no sé
si deba declararla de otra forma...
Aguardo tus comentarios para aclarar estas dudas...


9
STX8091 - Familia PLC Cube / Guardar en EEPROM Fecha y Hora
« : mayo 05, 2016, 11:54:12 am »
Hola Boris,

Tendrás algún código de ejemplo para guardar en memoria EEPROM los datos de la fecha y la hora del RTC...?

Saludos

10
STX8091 - Familia PLC Cube / Re:Entrada Analógica 4-20ma
« : abril 24, 2016, 11:48:28 am »
Ok Boris gracias por tu tiempo.... Actualizare el firmware y lo voy a probar en la semana....

Saludos y suerte en esos negocios

Enviado desde mi SM-J110M mediante Tapatalk


11
STX8091 - Familia PLC Cube / Re:Entrada Analógica 4-20ma
« : abril 22, 2016, 15:39:23 pm »
Hola Boris...

Te informo como segui....

La solucion que encontre fue colocar una resistencia de 100 ohms externa cerrando el lazo a masa.... luego ingreso por vin 4 como tension.

Recien vin 4 me dio la caida de voltaje real... ni vin1, vin2 ni vin3... funcionan como lo esperaba.... todas escalan la lectura en la misma medida..... tanto con resistencia interna como externa.....

No me di cuenta de medir el valor de resistencia entre uno de los terminales del jumper y masa para verificar que fueran de 100 ohms....

Aguardo tus comentarios.

Enviado desde mi SM-J110M mediante Tapatalk


12
STX8091 - Familia PLC Cube / Re:Entrada Analógica 4-20ma
« : abril 22, 2016, 10:02:51 am »
Boris,

Ahí te paso la dir IP....
En el código On print event
la línea

 WebServerPrintStr("%3.3f", Corriente/3)

leela como

WebServerPrintStr("%3.3f", Corriente)

La división por 3 la hice a modo de prueba...
La acabo de sacar... en definitiva el código completo quedó:

Código: (Pawn) [Seleccionar]

// --------------------------------------------------------------------------------
// Archivo     : OnPrintEvent.p
// Descripcion : Rutinas para procesar el evento @OnWebServerPrint().
// --------------------------------------------------------------------------------

// ********************************************************************************
// Funcion     : OnWebServerPrint()
// Descripcion : Evento llamado cuando el Web Server necesita imprimir una cadena
//               al cargarse una pagina dinamica.
//               Se deberia retornar lo antes posible de este evento, ya que
//               se procesa mientras la pagina se carga en el navegador.
// ********************************************************************************

@OnWebServerPrint()
{
//
// Obtener e imprimir el numero de cadena solicitada por el servidor.
//

switch(WebServerGetPrintNum())
{
//
// Procesar cadenas relacionadas a inputs.shtml
//

case 10:
WebServerPrintStr("%d", DinValue(DIN1))
case 11:
WebServerPrintStr("/l%d.gif", DinValue(DIN1))

// código agregado por mi para prueba
case 30:
//WebServerPrintStr("%3.3f", Corriente*12558)// Así lo muestra con 3 decimales
//WebServerPrintStr("%3.0f", Corriente*12558000)// Así lo muestra sin decimales
         WebServerPrintStr("%3.3f", Corriente)// Así lo muestra sin decimales en miles de litros
         //WebServerPrintStr("%3.0f", Corriente*12558)// Sensor nuevo FMK
case 31:
//{
WebServerPrintStr("%3.1f", V_alim_sens*12.25) //%f muestra un float con 1 decimales por defecto. Pág 67 de AN030
//cont_prom=1;
//V_alim_prom=0;
//V_alim_sens=0;
//}

//
// Procesar cadenas relacionadas a outputs.shtml
//

//         Bomba 1
case 20:
if(DoutValue(DOUT1) == 0)
{
WebServerPrintStr("checked")
}
case 21:
if(DoutValue(DOUT1) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 2
case 22:
if(DoutValue(DOUT2) == 0)
{
WebServerPrintStr("checked")
}
case 23:
if(DoutValue(DOUT2) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 3
case 24:
if(DoutValue(DOUT3) == 0)
{
WebServerPrintStr("checked")
}
case 25:
if(DoutValue(DOUT3) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 4
case 26:
if(DoutValue(DOUT4) == 0)
{
WebServerPrintStr("checked")
}
case 27:
if(DoutValue(DOUT4) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 5
case 28:
if(DoutValue(DOUT5) == 0)
{
WebServerPrintStr("checked")
}
case 29:
if(DoutValue(DOUT5) == 1)
{
WebServerPrintStr("checked")
}

case 40:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT1))
case 41:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT2))
case 42:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT3))
case 43:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT4))
case 44:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT5))
}
}

// --------------------------------------------------------------------------------
// EOF
// ------------------------------


13
STX8091 - Familia PLC Cube / Entrada Analógica 4-20ma
« : abril 22, 2016, 09:56:12 am »
Estimado Boris,

Instalé otro PLC para suplir el funcionamiento del que daño la tormenta.
Le cargué el mismo código de programa y tengo un problema con el valor de corriente que me muestra al acceder al servidor del plc.

Dicha corriente es de 13ma. Mediante osciloscopio se ve que la señal no presenta ningún tipo de ruido.

El problema es que el server me muestra un valor de 33 ma....

Te paso el codigo de PLC main y del evento postprint.

Seguro es un error de programa pero no me doy cuenta cual... Te comento que el jumper 3 está colocado.

Por mail voy a pasarte la dirección IP actual de acceso para que pruebes.

En este momento estoy tratando de solucionarlo.
Re-leí de nuevo el manual Pawn en esta parte pero no encuentro el problema.

Probé desactivar el filtro pero sigue dando lectura de 33ma en lugar de 13ma (que es lo que mido).

Aguardo tu respuesta...

Te paso los códigos:

PLC MAIN::::

Código: (Pawn) [Seleccionar]

// --------------------------------------------------------------------------------
// Archivo      : PlcMain.p
// Titulo       : Script principal del PLC.
//
// Creado por   : StxLadder Version 1.7.2.
// Fecha        : 29/01/2016 07:59:31
//
// Descripcion  :
//
// Aqui puede describir su proyecto.
//
// --------------------------------------------------------------------------------

//{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{

// --------------------------------------------------------------------------------
// Archivo      : PlcMain.p
// Titulo       : Servidor TCP/IP ejemplo Cooperativa Oliva.
//
// Creado por   : StxLadder Version 1.7.0.
// Fecha        : 24/12/2015 10:58:44
//
// Descripcion  :
//
// Este ejemplo configura el PLC como servidor TCP.
// El mismo acepta conexiones en el puerto 48000.
//
// Comprueba la recepcion de dos bytes y de acuerdo al valor
// de los mismos, activa las salidas DOUT1 a DOUT2.
//
// Cuando los bytes son recibidos, responde al cliente enviando
// dos bytes con el estado de las entradas digitales DIN1 y DIN2.
//
// --------------------------------------------------------------------------------

//}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}


// ********************************************************************************
// Funcion     : PlcMain()
// Descripcion : Punto de entrada principal del PLC.
// ********************************************************************************


//{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
// --------------------------------------------------------------------------------
// VARIABLES GLOBALES
// --------------------------------------------------------------------------------

// Buffer de recepcion.
new RxData[10]

// Buffer de transmision.
new TxData[5]
//}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}

// Crear variable para almacenar corriente.
new Float: Corriente = 0;
new Float: V_alim_sens = 0;
new Float: V_alim_prom=0;
new cont_prom=1;

PlcMain()
{

//{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
   // Inicializar TCP Server.
   // Puerto: 82
   // Timeout Idle: 30 segundos.
   
 //  TcpServerInit(82, 30)
   
   // Activar evento para recepcion de datos de cliente.
 //  TcpServerSetRxEvent()   
//}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}   

   // Inicializar Web Server.
  WebServerInitialize();   // a este lo sigo iniciando en el puerto 82
   

   // Configuro rango Vin1 de 0 a 5 volt
VinSetRange(1, VIN_RANGE_5V); /// ver bien esto
VinSetRange(8, VIN_RANGE_10V); /// ver bien esto
//VinSetRange(4, VIN_RANGE_10V); /// ver bien esto
//VinFilterAOn(200,1000);
// VinFilterAOn(200,2000);

   // Aqui puede escribir codigo PAWN y llamar a otras funciones.
   
   for(;;)
   {
      // Loop principal.
   
  // Leer corriente de VIN1 y almacenar en variable "Current".
// 1Utilizar un resistor de 100 ohms como sensor de corriente.

Corriente = Float: VinToCurrent(1, 100);
V_alim_sens= Float: VinReadVolt(8);

//VinFilterAOff();

/*while(cont_prom<201)
{
V_alim_sens= Float: VinReadVolt(8);
V_alim_prom=V_alim_prom+V_alim_sens;
PauseUS(500);
cont_prom++;
}
V_alim_prom=V_alim_prom/200;*/

      // Delay Led.
      DelayMS(200)
      LedToggle()

   }

   // Retorno.
   return 0;
}

@OnTcpServerRx()
{
new Id

//
// Obtener conexiones con datos sin leer.
//

while((Id=TcpServerGetUnreadId()) > 0)
{
// Leer datos y almacenar en RxData[].
TcpServerRead(Id, RxData, 10)

//
// Comprobar si debemos activar/desactivar salidas digitales DOUT1 a DOUT2.
//

if(RxData[0] == 0)
{
DoutSetOff(DOUT1)
}
if(RxData[0] == 1)
{
DoutSetOn(DOUT1)
}

if(RxData[1] == 0)
{
DoutSetOff(DOUT2)
}
if(RxData[1] == 1)
{
DoutSetOn(DOUT2)
}

//
// Obtener estado de entradas Digigitales DIN1 a DIN2.
//

TxData[0] = DinValue(DIN1)
TxData[1] = DinValue(DIN2)
   
   // Enviar estado de entradas digitales al cliente usando el Id de la conexion
   // que recibio los datos.
   TcpServerSend(Id, TxData, 2)
}
}

// --------------------------------------------------------------------------------
// EOF
// --------------------------------------------------------------------------------


Evento OnPrintEvent:::::::

Código: (Pawn) [Seleccionar]

// --------------------------------------------------------------------------------
// Archivo     : OnPrintEvent.p
// Descripcion : Rutinas para procesar el evento @OnWebServerPrint().
// --------------------------------------------------------------------------------

// ********************************************************************************
// Funcion     : OnWebServerPrint()
// Descripcion : Evento llamado cuando el Web Server necesita imprimir una cadena
//               al cargarse una pagina dinamica.
//               Se deberia retornar lo antes posible de este evento, ya que
//               se procesa mientras la pagina se carga en el navegador.
// ********************************************************************************

@OnWebServerPrint()
{
//
// Obtener e imprimir el numero de cadena solicitada por el servidor.
//

switch(WebServerGetPrintNum())
{
//
// Procesar cadenas relacionadas a inputs.shtml
//

case 10:
WebServerPrintStr("%d", DinValue(DIN1))
case 11:
WebServerPrintStr("/l%d.gif", DinValue(DIN1))

// código agregado por mi para prueba
case 30:
//WebServerPrintStr("%3.3f", Corriente*12558)// Así lo muestra con 3 decimales
//WebServerPrintStr("%3.0f", Corriente*12558000)// Así lo muestra sin decimales
         WebServerPrintStr("%3.3f", Corriente/3)// Así lo muestra sin decimales en miles de litros
         //WebServerPrintStr("%3.0f", Corriente*12558)// Sensor nuevo FMK
case 31:
//{
WebServerPrintStr("%3.1f", V_alim_sens*12.25) //%f muestra un float con 1 decimales por defecto. Pág 67 de AN030
//cont_prom=1;
//V_alim_prom=0;
//V_alim_sens=0;
//}

//
// Procesar cadenas relacionadas a outputs.shtml
//

//         Bomba 1
case 20:
if(DoutValue(DOUT1) == 0)
{
WebServerPrintStr("checked")
}
case 21:
if(DoutValue(DOUT1) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 2
case 22:
if(DoutValue(DOUT2) == 0)
{
WebServerPrintStr("checked")
}
case 23:
if(DoutValue(DOUT2) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 3
case 24:
if(DoutValue(DOUT3) == 0)
{
WebServerPrintStr("checked")
}
case 25:
if(DoutValue(DOUT3) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 4
case 26:
if(DoutValue(DOUT4) == 0)
{
WebServerPrintStr("checked")
}
case 27:
if(DoutValue(DOUT4) == 1)
{
WebServerPrintStr("checked")
}
//         Bomba 5
case 28:
if(DoutValue(DOUT5) == 0)
{
WebServerPrintStr("checked")
}
case 29:
if(DoutValue(DOUT5) == 1)
{
WebServerPrintStr("checked")
}

case 40:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT1))
case 41:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT2))
case 42:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT3))
case 43:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT4))
case 44:
WebServerPrintStr("/l%d.gif", DoutValue(DOUT5))
}
}

// --------------------------------------------------------------------------------
// EOF
// --------------------------------------------------------------------------------



Y por las dudas.... el código html de la página del server virtual::::::

Código: (HTML) [Seleccionar]

$!+ /header.html $

<h2>COSP Oliva - División Agua Corriente</h2>

<center>

<table id="t_VT">
<tr>Volumen en Tiempo Real </tr>
<th>Volúmen [Lt X 1000]</th>
<td>$! PrintStr 30 $</td>
<tr>
<th>Vcc_Sensor[V]</th>
<td>$! PrintStr 31 $</td>
</tr>
</table>

<br>
</center>
<meta http-equiv="Refresh" content="10">
<!-- Recarga automáticamente la página Vol_T cada 10 segundos-->

<center>
<h3>Volver a <a href="/">pagina principal</a>.</h3>
</center>

$!+ /footer.html $


14
Estimado Boris deje para que te enviaran el PLC para reparar. Si no salio hoy sera mañana.

Cuando tenga mas datos del envio te los paso.
Saludos.


Enviado desde mi SM-J110M mediante Tapatalk


15
Ok Boris... muchas gracias

Enviado desde mi SM-J110M mediante Tapatalk


Páginas: [1] 2 3