Jump to content

dbolg

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by dbolg

  1. Hello,

     

    I have a .net application that connects to a 570 via RS-232 using System.IO.Ports.SerialPort. Normally, it will connect. However, when playing with different baud rates, it sometimes does not connect until I connect the same PC with any Unitronics software (Visilogic or Remote Operator). My question is this:

     

    With VIsilogic, it appears that you can define the baud rate to anything in the connection properties and it always connects. How does the controller adapt accordingly? I think "out of the box", the rate is set to 115200.

     

    If I change my application to 57600, it failes to connect. But, if I connect using Visilogic @ 57600 it works. I go back to my application and then it works. I am trying to determine what Visilogic is doing that I am not. My connection looks like this:

     

                        // Connect to the PLC
                        try
                        {
                            string comPort = Properties.Settings.Default.CommPort;
                            int comBdRate = Properties.Settings.Default.CommBdRate;
                            int comTimeOut = Properties.Settings.Default.CommTimeOut;
                            _serialPort.PortName = comPort;
                            _serialPort.BaudRate = comBdRate;
                            _serialPort.DataBits = 8;
                            _serialPort.Parity = Parity.None;
                            _serialPort.Handshake = Handshake.None;
                            _serialPort.ReadTimeout = comTimeOut;
                            _serialPort.NewLine = "\r";
                            _serialPort.Open();
                        }
                        catch (Exception)
                        {
                            // Disconnect from the PLC
                            _serialPort.Close();
                        }
     
    Once this executes, I begin sending PCOM commands:
     
                try
                {
                    // Send the message out the serial port.
                    _serialPort.DiscardInBuffer();
                    _serialPort.WriteLine(message);
                    // Verify the message was received, catch the timeout
                    string response = _serialPort.ReadTo("/A00SBF5");
                    if (response == "/A00SBF5")
                    {
                        //do nothing, success!!
                    }
                }
                catch (Exception)
                {
                    _connectionLost = true;
                    _serialPort.Close();
                    return -1;
                }
     
    The _serialPort.ReadTo() catches the timeout (default 1 sec). When that occurs, we assume we lost the connection. Is there something I should be doing to prime the port first?
     
    Thanks!
     
     
     
     
     
×
×
  • Create New...