Vai al contenuto
PLC Forum


Protocollo Fins E C#


PaoloG

Messaggi consigliati

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;

}

Link al commento
Condividi su altri siti

  • 2 weeks later...

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

Link al commento
Condividi su altri siti

  • 2 weeks later...

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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