Vai al contenuto
PLC Forum


Protocollo Fins E C#


Messaggi consigliati

Inserito:

Buona sera a tutti, sto provando a comunicare con un modulo ETN21 della omron tramite c#,ma non riesco a ricevere nessun dato....

IP modulo:192.168.0.80 Unit:0

Ip host:192.168.0.2

La comunicazione si stabilisce ma quando lancio il comando la risposta che mi ritorna non contiene i dati che ho chiesto...

Qualcuno di voi potrebbe darmi una mano??

Grazie 10000

Paolo

allego il codice che sto provando:

private static string SocketSendReceive(string server, int port)

{

int srv_node_no;

int cli_node_no;

int sendlen, recvlen;

char[] fins_cmnd = new char[18];

Byte[] fins_resp = new Byte[2010];

Byte[] fins_Received = new Byte[32];

char[] fins_tcp_header = new char[32];

fins_cmnd[0] = '\x80'; /* ICF */

fins_cmnd[1] = '\x00'; /* RSV */

fins_cmnd[2] = '\x02'; /* GCT */

fins_cmnd[3] = '\x00'; /* DNA */

fins_cmnd[4] = '\x50';//srv_node_no.ToString("x"); /* DA1 */

fins_cmnd[5] = '\x00'; /* DA2 */

fins_cmnd[6] = '\x00'; /* SNA */

fins_cmnd[7] = '\x02';//cli_node_no.ToString("x"); /* SA1 */

fins_cmnd[8] = '\x00'; /* SA2 */

fins_cmnd[9] = '\x01';//++sid; /* SID */

fins_cmnd[10] = '\x01'; /* MRC */

fins_cmnd[11] = '\x01'; /* SRC */

fins_cmnd[12] = '\x82';

fins_cmnd[13] = '\x00';

fins_cmnd[14] = '\x1C';

fins_cmnd[15] = '\x00';

fins_cmnd[16] = '\x00';

fins_cmnd[17] = '\x01';

Socket s1 = ConnectSocket(server, port);

Byte[] bytesSent2 = Encoding.ASCII.GetBytes(fins_cmnd);

s1.Send(bytesSent2, 18, 0);

do

{

int h = s1.Receive(fins_Received, fins_Received.Length, 0);

recvlen = fins_Received[6];

recvlen <<= 8;

recvlen += fins_Received[7];

recvlen -= 8;

}

while (recvlen == 0);

......

}

private static Socket ConnectSocket(string server, int port)

{

Socket s = null;

IPHostEntry hostEntry = null;

hostEntry = Dns.GetHostEntry(server);

foreach(IPAddress address in hostEntry.AddressList)

{

IPEndPoint ipe = new IPEndPoint(address, port);

Socket tempSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

tempSocket.Connect(ipe);

if(tempSocket.Connected)

{

s = tempSocket;

break;

}

else

{

continue;

}

}

return s;

}

  • 2 weeks later...

Inserita:

Buongiorno..sto continuando a provare a scambiare dati con un modulo etn21 tramite protocollo tcp...

I passi che sto facendo sono questI:

Apro una connessione con l'indirizzo ip ed il numero di porta del modulo e fin qui tutto ok la connessione si apre,

mando vero il modulo il comando che alloca automaticamente i nodi del client e del server ed anche questo è ok ( mi assegna per il client (pc) il 239 e per il server(modulo) l' 80), si accende il led TCP sul modulo.

A questo punto ho l'inghippo se lancio un qualsiasi altro comando,mi si interrompe la connessione e si spegne il led TCP del modulo.

Cosa potrebbe essere cosa secondo voi sto sbagliando???

Saluti

Paolo

  • 2 weeks later...
Inserita:

Buongiorno a tutti del forum e buone feste...:)

Sto sempre provando a scambiare dati con il modulo ETN21 della omron,tutto funziona se uso il protocollo UDP...ma ho problemi sul protocollo TCP

qualcuno di voi ha già affrontato il discorso ed è disponibile a darmi una mano??

Per configurare i parametri di socket il pc va configurato come client e non come server....giusto???

Grazie 1000

Paolo

Inserita:

Ciao paolo, io non conosco molto bene il protocollo fins di omron, anche se proprio in questo periodo sto cominciando a studiarlo.

Ti posso dire di controllare il numero della porta che di default sull ent21 e 9600

Il manuale della omron che descrive il protocollo e il W342 che purtroppo l'ho trovato solo in inglese

So che ci sono delle limitazioni nell'uso dell'etn21 con il protocollo fins e cx programmer (contemporaneamente)

mando vero il modulo il comando che alloca automaticamente i nodi del client e del server ed anche questo è ok ( mi assegna per il client (pc) il 239 e per il server(modulo) l' 80),

Forse e meglio che usi degli ip statici

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...