Haz una pregunta
  Foros de Electrónica » Temas de Interés » Automatización, Electrónica industrial y de Potencia
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/12/2012 #41


Muchas gracias por tus respuestas ya vere donde buscar a ver si puedo conseguir algo
o entender esas tramas q envia y recibe el dispensador
14/02/2013 #42


santlenin dijo: Ver Mensaje
Saludos
Por favor alguien que publique los protocolos no importa de que marca de dispensador sea

---------- Actualizado después de 12 minutos ----------



Se que no es un trabajo facil pero solo quiero capturar algunas tramas básicas para enviar esa información a otro controlador que se conectara en paralelo al controlador principal.

Saludos
Actualmente trabajo en una empresa que utiliza algunos protocolos de comunicación con dispensadores, por políticas de la compañía no podría compartir esta información sin que exista un intercambio de información que sea útil para la empresa, sin embargo te cuento que he hecho yo para obtener algún dato de los protocolos de otros fabricantes, construye o utiliza un Loop de corriente con conexión a rs232 y utiliza un sniffer, podrías utilizar el http://www.serial-port-monitor.com/, conecta tu loop como otro equipo mas de la red y monitores todo el flujo de información, con algunos datos como byte de incio y de final podrías obtener los comando. no es fácil la tarea pero inicia con este método. atento a tus comentarios

http://www.docklight.de/info_en.htm#dl_info_tap
una herramienta mas para utilizar los loop de corriente - rs232
12/11/2014 #43


Tengo el protocolo HongYang , pero no he podido obtener respuesta, ya realice la interfaces con un opto acoplador y 12 vol con Rx y TX al rs232, alguien tiene algún esquema de como es la conexión y como envíar los comando al surtidor. agradezco cualquier ayuda...

Comando de Estado : 0xF1 0x10 0xB0
Archivos Adjuntos
Tipo de Archivo: pdf Interface.pdf (1,48 MB (Megabytes), 227 visitas)
12/11/2014 #44

Avatar de torres.electronico

mi consejo es que tengan cuidado cuando les ofrecen por privado venderles algo
13/11/2014 #45


hola danco me gustaria platicarte de un proyecto que desarollamos hace 1 año y que dejamos fuera ya que se cambiaron los dispensarios por otros de la marca sufra-max , anterior mente teniamos HongYang y desaroyamos un dispositivo que interactuaba entre el software de control gas y los dispensarios directamente se trataba de un dispositivo en el que se insertaba una targeta , se ponia el nip,dispensario, monto y este dispositivo checaba si el cliente tenia saldo o no y activava el dispensario con la cantidad que se le indicaba.

para lograr esto tuvimos que hacer el loop y decodificar la forma en la que se comunicaba el programa original con los dispensarios y desarroyar un programa que siempre estaba en comunicacion con todos los dispensarios de manera que les pedia las ventas a cada dispensario y estaba en contacto con nuestro dispositivo de control de clientes todo esto en rs485.

te anexo imagen del dispositivo de control y puedo pasarte el codigo del programa para que veas el ejemplo de como se le mandan los comandos al dispensario.

te comento personal que trabajaba antes en profeco nos indico que ese dispositivo no podiamos tenerlo asi y nos decian que para usarlo se tenia que registrar. te recomiendo que revises esta situacion ya que nosotros trabajamos mucho y al ultimo lo quitamos.

igual hoy revisando documentacion de la nom185 encuentro que un dispositivo de esta naturaleza solo es necesario declararlo o informar y puede ser operativo. creo.
Imágenes Adjuntas
Tipo de Archivo: jpg HongYang1.jpg (65,2 KB (Kilobytes), 84 visitas)
Tipo de Archivo: jpg HongYang2.jpg (59,9 KB (Kilobytes), 67 visitas)
15/11/2014 #46


excelente, no se si viste la interface que realice, el documento PDF. cuando envías los comando, enviabas byte a byte cada periodo de tiempo o enviabas el paquete completo, para el ejemplo el comando de status 0xF1 0x10 0xB0,
o enviabas
0xF1
timeOut(5ms)
0x10
timeOut(5ms)
0xB0

cheque esta cadena Hex-- convertir a Ascii.
64 61 6E 63 6F 66 72 61 40 67 6D 61 69 6C 2E 63 6F 6D

agradezco tus comentarios.
17/11/2014 #47


te envio parte del codigo del programa monitor para que analices la sección de donde se envía el comando.

Código:
      bool activo;
        SerialPort sp = new SerialPort();
        string puerto="COM6";
        
        int maquina = 0;        
        int numero_maquinas = 6;
        string comando="";

private void cambiar_pariedad(System.IO.Ports.Parity p)
        {
            sp.Parity = p;
        }  
private bool abrir_puerto()
        {
            try
            {                               
                sp.BaudRate = 2400;
                sp.DataBits = 8;
                sp.Parity = System.IO.Ports.Parity.None;
                sp.StopBits = StopBits.One;
                sp.PortName = puerto;
                sp.WriteTimeout = 1000;
                sp.ReadTimeout = 1000;
                sp.Open();
                return true;

            }
            catch(Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message,"Error de conexion!",MessageBoxButtons.OK,MessageBoxIcon.Error);
                return false;
            }
        }    
    private string enviar_comando(byte[] machine,byte[] lenght,byte[] gun,byte[]command,byte[] data3,byte[] data2,byte[] data1)
        {
            #region enviar comando--------------------------------------------
            int retardo = 0;
            string resultado = "";
            byte[] datos = new byte[8];

            retardo = clases.funciones.valInt(txt_timeout.Text);
            if (retardo <= 0) retardo = 50;

            datos[0] = machine[0];
            datos[1] = lenght[0];
            datos[2] = gun[0];
            datos[3] = command[0];            
            datos[4] = data1[0];
            datos[5] = data2[0];
            datos[6] = data3[0];
            datos[7] = calcular_checksum(datos);

            //-----------------
            sp.Write(datos, 0, 1);
            pausa(retardo);
            cambiar_pariedad(System.IO.Ports.Parity.Space);
                        
            sp.Write(datos, 1, 7);
            pausa(retardo);
            cambiar_pariedad(System.IO.Ports.Parity.None);
            pausa(retardo);
            #endregion
            #region esperar resultado--------------------------------------------

            //int delay = 20;
            int respuesta = 0;
            string datos_leidos = "";  
            int timeout = 0;
            bool esperar = true;

            while (esperar)
            {
                //pausa(delay);
                while (sp.BytesToRead > 0)
                {
                    respuesta = sp.ReadByte();
                    datos_leidos = datos_leidos + " " + respuesta.ToString("X2");
                }
                if (datos_leidos != "")
                {
                    esperar = false;
                    resultado = datos_leidos; ;
                    return resultado;
                }
                timeout++;
               // pausa(delay);
                if (timeout == 10)
                {
                    resultado = "TimeOut";
                    esperar = false;
                }
                Application.DoEvents();
            }
            sp.DiscardInBuffer();
            sp.DiscardOutBuffer();
            #endregion
            return resultado;
        }
private byte calcular_checksum(byte[] datos)
        {
            byte[] res=new byte[1] {0x00};
            long suma = Convert.ToInt16(datos[0].ToString(), 10) +
                                        Convert.ToInt16(datos[1].ToString(), 10) +
                                        Convert.ToInt16(datos[2].ToString(), 10) +
                                        Convert.ToInt16(datos[3].ToString(), 10) +
                                        Convert.ToInt16(datos[4].ToString(), 10) +
                                        Convert.ToInt16(datos[5].ToString(), 10) +
                                        Convert.ToInt16(datos[6].ToString(), 10);
            suma=256-suma;            
            res = BitConverter.GetBytes(suma);
            return res[0];
        }
 private byte[] seleccionar_comando(int maquina,string accion,int pesos)
        {
                        

            // inicializar datos para el comando
            byte[] datos =new byte[7] {0x00,0x00,0x00,0x00,0x00,0x00,0x00};
            byte[] dato = new byte[1] { 0x00 };
            byte[] machine = new byte[1] { 0x00 };
            byte[] lenght = new byte[1] { 0x00 };
            byte[] gun = new byte[1] { 0x00 };
            byte[] command = new byte[1] { 0x00 };
            byte[] data3 = new byte[1] { 0x00 };
            byte[] data2 = new byte[1] { 0x00 };
            byte[] data1 = new byte[1] { 0x00 };            


            if (maquina == 1) { machine = new byte[1] { 0x01 }; gun = new byte[1] { 0x01 }; }
            if (maquina == 2) { machine = new byte[1] { 0x01 }; gun = new byte[1] { 0x02 }; }
            if (maquina == 3) { machine = new byte[1] { 0x02 }; gun = new byte[1] { 0x01 }; }
            if (maquina == 4) { machine = new byte[1] { 0x02 }; gun = new byte[1] { 0x02 }; }
            if (maquina == 5) { machine = new byte[1] { 0x03 }; gun = new byte[1] { 0x01 }; }
            if (maquina == 6) { machine = new byte[1] { 0x03 }; gun = new byte[1] { 0x02 }; }
            
            if (accion == "PEDIR_ULTIMA_VENTA")
            {
                command[0] = 0x0F ;                
            }
            else if (accion == "ENVIAR_DESPACHO")
            {
                string t_precio = pesos.ToString().PadLeft(4, '0') ;
                command[0] =  0x09 ;
                data1[0] = 0x00;// BitConverter.GetBytes(Convert.ToInt16(t_precio.Substring(0, 2), 16))[0];
                data2[0] = BitConverter.GetBytes(Convert.ToInt16(t_precio.Substring(2, 2), 16))[0];
                data3[0] = BitConverter.GetBytes(Convert.ToInt16(t_precio.Substring(0, 2), 16))[0];
            }

            lenght = new byte[1] { 0x07 };

            datos[0] = machine[0];
            datos[1] = lenght[0];
            datos[2] = gun[0];
            datos[3] = command[0];
            datos[4] = data3[0];
            datos[5] = data2[0];
            datos[6] = data1[0];  

            return datos;
        }
17/11/2014 #48


veo que el protocolo que me dio el distribuidor de los surtidores difiere al que tu estas usando , tiene un vector de 7 bytes, probare enviando la consulta de: PEDIR_ULTIMA_VENTA

datos[0] = 0x01;
datos[1] = 0x07;
datos[2] = 0x01;
datos[3] = 0x0F;
datos[4] = 0x00;
datos[5] = 0x00;
datos[6] = 0x00;

por favor ver el manual adjunto.

estaré colocando los avances.
Archivos Adjuntos
Tipo de Archivo: pdf DeHongYang Group.pdf (1,55 MB (Megabytes), 180 visitas)
06/12/2014 #49


Hola Danco Buenas Tardes, yo tuve un proyecto similar y desarrolle la interfaz loop current para siguiente surtidor, intentare ayudarte pero por favor le pido colaboracion con el esquematico plano o circuito de comunicacion con los surtidores Tokheim mas vendidos, la verdad no tengo informacion ni un surtidor disponible para trabajar.
Imágenes Adjuntas
Tipo de Archivo: jpg Fuel-Dispenser-K-Series-CMD168.jpg (12,7 KB (Kilobytes), 61 visitas)
11/12/2014 #50


Hola Amigo, ya construí la interface HongYang, con esta me funciono, pero me conecte al puerto de programacion http://sodoityourself.com/max232-ser...vel-converter/, para conectarme al puerto de comunicación utilice 1 opto- acoplado, luego monto el esquema. no tengo la interfaces de Tokheim pero lo que he visto que los Tokheim utilizan es una conexión 232, y le colocan un buffer para hacer las conexiones a barias tarjetas.
12/12/2014 #51


En la pagina 6 del archivo adjunto se encuentra el loop current que utiliza los Hong Yang a una velocidad de 2400Baudios.. Saludos.

---------- Actualizado después de 4 minutos ----------

Alguien me puede colaborar por favor con un esquematico completo de los Tokheim. Gracias.
Archivos Adjuntos
Tipo de Archivo: pdf Comunicacion TTY.pdf (148,8 KB (Kilobytes), 157 visitas)
21/02/2015 #52


Amigos.

Luego de realizar varias tareas de decodificacion logre encontrar lo siguiente:

Los Dispensadores o Surtidores Marca Gilbarco se conectan a una velocidad de 5887 Baudios y logre sacar los siguientes tramas de comunicación, estoy seguro que los datos son correctos porque pude autorizar una venta es decir la velocidad es la correcta pero cuando se envían algunas tramas llegan datos que no se como decodificarlos para entenderlos.


Trama 1: FFh E9h FEh EEh E0h E0h FBh E1h F0h
Trama 2: FFh E9h FEh E0h E1h E0h FBh EEh F0h Autorizacion de Inicio de venta
Trama 3: __h E5h F4h F6h __h __h __h __h __h __h F0h esta ultima varia no lo e decodificado aun


Trama 4: FFh ECh F4h FBh E6h F0h
Trama 5: FFh E9h FEh EEh E0h FBh E1h F0h
Trama 6: FFh E4h F2h F4h F8h E0h E0h E0h E1h E0h E0h FBh E3h F0h No se saco combustible se espero hizo 88888 y luego se colgo

Espero que alguien pueda avanzar en algo con estos datos.
08/04/2015 #53


Conversor Lazo Corriente a RS232 (Current loop to RS232) para surtidores.
Que tal Gente.

Estoy desarrollando una interface para controlar un surtidor por medio del puerto Serial RS232, pero no logro entender como enviar los comandos para comunicar el surtidor (Veeder Root tls350).

Me pueden explicar como programo esto en C#??


Enquiry message format is as follows
&lt;SOH&gt;&lt;SECURE CODE&gt;&lt;COMMAND NUMBER&gt;&lt;MAIN ARGUMENT&gt;
where:
&lt;SOH&gt; (0x01H) marks the end of the command.
&lt;SECURE CODE&gt; (exactly 6 ASCII characters) – optional field depended on Site Sentinel setting.
&lt;COMMAND NUMBER&gt; (three ASCII characters) number of command
&lt;MAIN ARGUMNET&gt; (two ASCII characters) contains various, usually decimal coded data, depend on command ...
13/05/2015 #54


Tramas Wayne
Hola, tego el manual de las tramas del surtidor Gilbarco, las cambio por las tramas wayne
25/08/2015 #55


Comunicación con Wayne CL
Tengo el protocolo para Wayne Europeo, pero necesito el de Wayne US que es por CL . Alguien lo tiene que podamos intercambiar?
28/08/2015 #56


Tramas Wayne
arnaldor dijo: Ver Mensaje
Tengo el protocolo para Wayne Europeo, pero necesito el de Wayne US que es por CL . Alguien lo tiene que podamos intercambiar?
Hola te cuento que logre decifrar las tramas tengo el circuito y el programa funcionando en dos gasolineras, podriamos untercambiar si me ayudas con las tramas de gilbarco tengo el manual pero algo no va bien con ese manual.Saludos
06/09/2015 #57


jxaviern dijo: Ver Mensaje
Hola te cuento que logre decifrar las tramas tengo el circuito y el programa funcionando en dos gasolineras, podriamos untercambiar si me ayudas con las tramas de gilbarco tengo el manual pero algo no va bien con ese manual.Saludos
Publica las tramas que necesitas decifrar para poder ayudar
07/09/2015 #58

Avatar de torres.electronico

che , esto es un foro... no un sitio de intercambios, negocios personales y todas esas cosas raras que no cuajan en la comunidad segun el siguiente liink: http://www.forosdeelectronica.com/politicas.htm
Hace rato que se vienen borrando mensajes; traten de moderar sus comentarios y compartan con el resto de la comunidad antes de pedir... no es el foro del trueque
07/09/2015 #59


arnaldor dijo: Ver Mensaje
Publica las tramas que necesitas decifrar para poder ayudar
T -> 0000659AFF
R -> 0000659A718E50AF20DF27D8FF

T -> 00006D92FF
R -> 00006D926E9117E820DF27D8FF

T -> 0000758AFF
R -> 0000758A7E815AA520DF27D8FF

T -> 00007D82FF
R -> 00007D82DC2305FA20DF27D8FF

T -> 0000857AFF
R -> 0000857A18E733CC20DF27D8FF

T -> 00000DF2FF
R -> 00000DF26F9017E820DF27D8FF

T -> 000015EAFF
R -> 000015EA0EF10AF520DF27D8FF


Podrías decifrar estas tramas? o decir cuales son las partes de las tramas?
03/10/2015 #60


Tramas wayne
arnaldor dijo: Ver Mensaje
T -> 0000659AFF
R -> 0000659A718E50AF20DF27D8FF

T -> 00006D92FF
R -> 00006D926E9117E820DF27D8FF

T -> 0000758AFF
R -> 0000758A7E815AA520DF27D8FF

T -> 00007D82FF
R -> 00007D82DC2305FA20DF27D8FF

T -> 0000857AFF
R -> 0000857A18E733CC20DF27D8FF

T -> 00000DF2FF
R -> 00000DF26F9017E820DF27D8FF

T -> 000015EAFF
R -> 000015EA0EF10AF520DF27D8FF


Podrías decifrar estas tramas? o decir cuales son las partes de las tramas?
Son tramas del surtidor wayne obviando los ceros del principio el primer byte es la direccion del surtidor el segundo es un bit verificador que es (255- bit anterior) asi sucesimante los dos siguientes bits son los datos, te cuento que esa parte si la vez bien es facil decifrar.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Automatización, Electrónica industrial y de Potencia

En esta categoría se discuten temas relacionados con la automatización, la electrónica industrial y la instrumentación.

Cerrar
Foros de Electrónica » Temas de Interés » Automatización, Electrónica industrial y de Potencia

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.