Opto 22 in Latin America

Started by rhernandez at 02-12-2008 2:31 PM. Topic has 18 replies.

Print Search
Sort Posts:    
   02-12-2008, 2:31 PM
rhernandez is not online. Last active: 11/12/2005 8:06:39 PM rhernandez

Top 10 Posts
Joined on 11-26-2003
Madrid - SPAIN
Posts 42
Re: Comunicacion M2MPower con OPTOGSM I/O
Pues yo no lo veo tan mal.

Vamos problema a problema:

Entradas: Probablemente estés utilizando un módulo G4IDC5. Estos módulos están diseñados para tensiones de 10 a 32 Vcc. Si lees la especificación verás que Opto garantiza la lectura de 0 (OFF) cuando la tensión está por debajo de 1 Vcc. La respuesta que se produce cuando la misma está entre 1 y 10 es impredecible. Utiliza 24V para alimentar el campo y verás como no tienes problemas.

AT+CPIN: Es irrelevante, debería funcionar todo sin SIM. De todas formas lo que dices es normal. Este es un típico dialogo de hyperterminal:
AT+CPIN?
+CPIN:SIM PIN
OK
AT+CPIN=1234
ERROR
AT+CPIN="1234"
OK
AT+CPIN?
+CPIN: READY
OK
AT+CPIN="1234"
ERROR


Contadores: No veo nada en tu código respecto a contadores. Lo ataco al final.

Salida: Si el módulo enciende su LED quiere decir que todo ha funcionado. Mi sentido arácnido me indica que no le estamos dando tiempo a la placa a hacer su trabajo. Vamos a meter una demora entre escritura y lectura. De todas formas, otro apunte, antes de tirarse de los pelos hay que verificar el valor de la variable nresult, pues ha podido haber algún error de comunicación (como podrás ver en el codigo no hay reintentos ni nada).

Vamos a retocar un poco tu código:

main()
{
int nresult;
int nstate;
int
nCounter0, nCounter1;

prs(0);
nresult = utc(1,3,0);
nresult = IOPowerUpClear();

/*Configuramos entrada digital*/
nresult=IOConfigDPoint(0,0);
prtf("\nPunto 0 ENTRADA -");
nresult=IOWriteDPoint(0,0);
nresult=IOReadDPoint(0,&nstate);
prtf("   Realmente es: %d",nstate);

/*Configuramos SALIDA digital*/
nresult=IOConfigDPoint(1,1);
prtf("\nPunto 1 SALIDA -");
nresult=IOWriteDPoint(1,1);
dlys(1);
nresult=IOReadDPoint(1,&nstate);
prtf("   Realmente es: %d",nstate);

/* un bucle infinito */
while(1)
{   nresult=nresult+IOReadDCounter(0,&nCounter0);
   
nresult=nresult+IOPulseOnPt(1, 1);
   
nresult=nresult+IOReadDCounter(1,&nCounter1);
    prtf("counter0=%d counter1=%d....estado=%d\n", nCounter0, nCounter1, nresult);
    dlys(2);
}


nresult = utc(0,0,0);

}

Prueba este código, energiza y desenergiza el punto 0, mira los contadores.



   Report 
   02-13-2008, 9:13 AM
devil_cdb is not online. Last active: 1/29/2008 9:21:23 PM devil_cdb

Top 25 Posts
Joined on 01-29-2008
Posts 9
Re: Comunicacion M2MPower con OPTOGSM I/O

Bueno,  ya he hecho todo lo que me has propuesto.  Vamos por pasos:

-  El módulo de entrada que estoy utilizando, como tú bien dices, es el G4IDC5.

-  He utilizado tu código, y la respuesta ha sido la siguiente:

Punto 0 ENTRADA - Realmente es: 0
Punto 1 SALIDA - Realmente es: 0

Counter0: 0   Counter1: 0   Estado: -1
Counter0: 0   Counter1: 0   Estado: -2
Counter0: 0   Counter1: 0   Estado: -3
Counter0: 0   Counter1: 0   Estado: -4
Counter0: 0   Counter1: 0   Estado: -5
Counter0: 0   Counter1: 0   Estado: -6
Counter0: 0   Counter1: 0   Estado: -7
Counter0: 0   Counter1: 0   Estado: -8
Counter0: 0   Counter1: 0   Estado: -9
Counter0: 0   Counter1: 0   Estado: -10
Counter0: 0   Counter1: 0   Estado: -11
  .
  .
  .

Malamente...  Para empezar, la variable nstate no me consigue alcanzar nunca el valor '1', ni aunque alimente a 24 ó 32 voltios, ni tampoco dejando aún más retardo entre la escritura y la lectura...

Los contadores no aumentan.  nCounter0 no sube de valor cuando realizo cambios de off a on ni viceversa;  nCounter1 no aumenta de valor ni aun cuando el módulo de salida sí que parpadea por la instrucción IOPulseOnPt.  Posteriormente tambien incluí la orden IOReadClearDCounter(0,&nCount0); y IOReadClearDCounter(1,&nCount1);  antes de entrar en el bucle infinito, para resetear los contadores, pero tampoco hubo diferencia ninguna en la respuesta.

Supongo yo que lo que hará que estas variables no adquieran sus valores correctos es que, aun llegando la descarga del script al 100%, me sigue dando error de Timeout.

No sé si, desde tu experiencia, te quedarán más recursos para intentar hacer funcionar a este cacharro, pero gracias por todos tus consejos rhernandez.  Saludos.

 


   Report 
   02-13-2008, 11:37 AM
rhernandez is not online. Last active: 11/12/2005 8:06:39 PM rhernandez

Top 10 Posts
Joined on 11-26-2003
Madrid - SPAIN
Posts 42
Re: Comunicacion M2MPower con OPTOGSM I/O
¡Ahora sí que alucino pepinillos!

Veo que nresult va decrementando su valor en el while. Eso quiere decir que de las 3 instrucciones de IO que hay en el mismo, una está mal (devuelve -1 en cada ciclo).
He revisado el código de la librería de Opto y, para mi asombro, descubro que IOReadDCounter devuelve 0 pase lo que pase. En cambio IOPulseOnPt devuelve lo que le diga IOdocmd quien a su vez devuelve -1 en caso de timeout o de recibir una "N". En resumidas cuentas la única función que funciona (el LED se enciende) resulta que devuelve error. Para mí que es un timeout lo que sucede.

Todo ello junto me sugiere que la placa de Opto puede escuchar al Sony y le obedece pero el sony no puede escuchar las respuestas de la placa. Si quieres asegurarte métele unos prtf a la funcion IOdocmd para imprimir lo que se escribe y lo que se recibe. Sí parece un problema de hardware (aunque puede que sea sólo del cable).



   Report 
   02-14-2008, 9:47 AM
devil_cdb is not online. Last active: 1/29/2008 9:21:23 PM devil_cdb

Top 25 Posts
Joined on 01-29-2008
Posts 9
Re: Comunicacion M2MPower con OPTOGSM I/O

Nada, no hay forma... He cambiado los cables y la respuesta que he obtenido ha sido la misma...:(

¿Me puedes aconsejar sobre otros modems que tengan las mismas caracteristicas que el GT47 y que salgan bien de precio?

Muchas gracias por toda la ayuda que me has prestado.


   Report 
  Page 2 of 2 (19 items) < 1 2
OptoForums » International » Opto 22 in Lati... » Re: Comunicacion M2MPower con OPTOGSM I/O

Powered by Community Server, by Telligent Systems