Как говорил ув. Yegor. А откуда берется port? А порт у вас не инициализирован собственно. у вас только установлена скорость обмена. несомненно порт откроется. а остальное по умолчанию следовательно запустится с системными настройками ОС.
у вас:
Код:
port.Open();
if (!port.IsOpen)
MessageBox.Show("Порт не открыт");
какой порт ты открыли? с какой скоростью с ним работать? сколько бит данных? стоповые биты?
должно быть примерно так:
Код:
_serialPort = new SerialPort();
_serialPort.PortName = SetPortName("COM6");
_serialPort.BaudRate = SetPortBaudRate(9600);
_serialPort.Parity = SetPortParity(Parity.None);
_serialPort.DataBits = SetPortDataBits(8);
_serialPort.StopBits = SetPortStopBits(StopBits.One);
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.Open();
if (! _serialPort.IsOpen)
MessageBox.Show("Порт не открыт");
private void button1_Click(object sender, EventArgs e)
{
var mbus = ModbusSerialMaster.CreateRtu(port);
MessageBox.Show((mbus.ReadHoldingRegisters(0, 3, 1)[1]).ToString());
}
//или в одну строчку если жестко надо задать
SerialPort _serialPort = new SerialPort( ″COM1″ , 9600, Parity.None, 8, StopBits.One);
_serialPort.Open();
if (! _serialPort.IsOpen)
MessageBox.Show("Порт не открыт");
private void button1_Click(object sender, EventArgs e)
{
var mbus = ModbusSerialMaster.CreateRtu(port);
MessageBox.Show((mbus.ReadHoldingRegisters(0, 3, 1)[1]).ToString());
}
а вы не задали настройки порта поэтому и не читается все собственно.
не факт что у вас системные настройки стоят такие же как у плк к которому подключаетесь.
ну и не забывайте ошибки порта обрабатывать иначе замучаетесь и не будете знать в чем ошибка)).
Задайте настройки порта у плк и точно такие же пропишите в программе один в один. не забудте указать ком порт в программе через который идет общение с плк.
В общем инициализируйте порт попробуйте.
За работу библиотеки ни чего не скажу... как там читается - пишется.
Я пробую без библиотек ибо это интересней.
п.с. За ошибки ответственности не несу)). Я пытаюсь вас направить.
вот ссылочка https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx там все про ком порт. Ну и гугл помогает.
Я кстати выше писал про порядок байт возможно в плк надо поменять режим с native mode на tracert mode. но если не имеете доступа к плк, то библиотеке надо указать порядок байт если она это умеет. если нет то пишите функции которые необходимы сами. пример я приводил. прикладываю проект буржуйского коллеги если не заработает то скорее всего у вас именно что то с порядком байт. ну или что то со связью
также попробуйте утилиту peakhmi. попробуйте с помощь нее подключиться к плк. вам нужно установить serial master. там можно выставить порядок байт если заработает то надо смотреть библиотеку как она работает
может в плк не настроен слейв, а мастер?
(если настроен мастер то вам не писать в порт надо, а читать то что из него приходит и отвечать что прочитали?(если библиотека не умеет отвечать. может функция не та используется?))
может адрес слейв не 1?
Вообще что нибудь работает с плк по этому интерфейсу? панель или другой девайс, программа.
да кстати если делали настройки в плк скорость и все такое возможно его надо перезагрузить малоли как там реализовано. может поэтому у вас не получалось.