viernes, 27 de abril de 2012

Comunicarse con un autómata Advantys OTB a través de TCP-IP con Matlab

He sudado sangre para conseguir comunicarme con el Advantys OTB a través de TCP-IP con Matlab. El maldito protocolo modbus no se dejaba, pero al final lo he conseguido. Espero que le sirva a alguien más.

--------------------------------------------------------------------
% Para leer los registros del autómata:

ports=instrfind();
fclose(ports);

f=tcpip('mi_ip',puerto_remoto);
fopen(f);

trama=[01,00,00,00,00,06,01,03,00,100,00,01];
fwrite(f,trama);
resp=fread(f,11);
tam=length(resp);
num=resp(tam);

str = dec2bin(num,8);

registro1 = str(1);
registro2 = str(2);
registro3 = str(3);
registro4 = str(4);
registro5 = str(5);
registro6 = str(6);
registro7 = str(7);
registro8  = str(8);


--------------------------------------------------------------------
% Para escribir en los registros del autómata:

ports=instrfind();
fclose(ports);

f=tcpip('mi_ip',puerto_remoto);
fopen(f);

registro1 = '1';
registro2 = '1';
registro3 = '1';
registro4 = '1';
registro5 = '0';
registro6 = '0';
registro7 = '0';
registro8  = '0';

cadena = [registro1, registro2, registro3, registro4, registro5, registro6, registro7, registro8];
num = strbin2dec(cadena);
trama=[01,00,00,00,00,06,01,06,00,100,00,num];
fwrite(f,trama);
fread(f,12); % Para limpiar el buffer

No hay comentarios: