Jump to content

Usar Porta Ethernet


sergiofer
 Share

Recommended Posts

Tens de trabalhar com sockets TCP/IP, que basicamente pedes ao SO para te facultar um porto (muito designado também por porta), no qual vais receber/enviar os teus dados.

Pesquisa também por 'vb.net sockets', encontras muitos exemplos práticos de clientes e servidores a comunicar entre si.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Olá

Thenho estado a pesquisar, e a testar a comunicação pela porta ethernet, mas sem sucesso.

O que eu pretendo é enviar um comando do protocolo Fins, da omron, para um PLC, e ler a resposta que este envia.

Eu consigo enviar o comando, e verifico isso atraves de um sniffer, o meu problema é que não consigo receber nada do plc. O comando funciona, porque atraves de um programa de testes do protocolo, eu consigo verificar a resposta.

Para receber comandos do ip 192.168.250.1, com o numero de porta 9600, eu estou a usar a seguinte função que retirei de um exemplo:

Protected Shared Function UDPDataTransmit( _
          ByVal sBuff() As Byte, ByRef rBuff() As Byte, _
          ByVal IP As String, ByVal Port As Integer) As Integer 'Returns # bytes received
       Dim retstat As Integer
       Dim Sck As Sockets.Socket
       Dim Due As DateTime
       Dim Encrp As IPEndPoint
       Try
           Sck = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
           Sck.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 10000)
           Sck.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 10000)

           Encrp = New IPEndPoint(IPAddress.Parse(IP), Port)
           retstat = Sck.SendTo(sBuff, 0, sBuff.Length, SocketFlags.None, Encrp)
           If retstat > 0 Then
               Due = Now.AddMilliseconds(10000) '10 second time-out
               Do While Sck.Available = 0 AndAlso Now < Due
               Loop
               If Sck.Available = 0 Then
                   'timed-out
                   retstat = -3
                   Return retstat
               End If
               ReDim rBuff(Sck.Available - 1)
               retstat = Sck.ReceiveFrom(rBuff, 0, Sck.Available, SocketFlags.None, CType(Encrp, EndPoint))
           Else
               retstat = -1 ' fail on send
           End If
       Catch ex As Exception
           'General Exception received--add code here to analyze the exception. A messagebox would be one idea.
           retstat = -2
       Finally
           Sck.Close() 'Always close the socket when done.
       End Try
       Return retstat
   End Function

Alguem me pode ajudar a tentar perceber o que estou a fazer mal

Obrigado

Link to comment
Share on other sites

Já vistes estes exemplo: Marcoratti

Com esse exemplo consegui fazer uma comunicação com um Siemens S7-1200, mas o protocolo era TCP/IP standard. O protocolo FINS da Omron é proprietário, não o que pretendes fazer, mas se fosse a ti comprava um OPC Server, tem a desvantagem do custo, tem a vantagem de funcionar na hora.

Ricardo Timóteo

Link to comment
Share on other sites

Boas

Tenho uma dúvida idêntica.

Tenho um programa que comunica via porta série com um controlador de antena RFID. A aplicação funciona perfeitamente, mas agora tenho um novo modelo de antena, que comunica via porta Ethernet.

Já tentei por várias maneiras estabelecer comunicação via sockts mas não estou a ter resultados.

Alguem já teve alguma experiência idêntica? se me podem dar uma ajudinha agradeço

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.