Выкладывайте проекты — будем смотреть в чём дело.
По-хорошему закрывать подключение, конечно, надо. И обрабатывать отключение извне тоже.
Выкладывайте проекты — будем смотреть в чём дело.
По-хорошему закрывать подключение, конечно, надо. И обрабатывать отключение извне тоже.
Я после внесения правок в код скорее всего загружал только изменения, а нужно "Загружать все" - ошибка из-за этого была (только таким образом у меня получилось повторить ошибку).
greenwod
можешь выложить проект , интересно как ты справился с задачей
"Пытаюсь подать/считать сигнал с входа/выхода."
спасибо
и еще вопрос: не возникают ли у тебя проблемы как тут http://www.cyberforum.ru/csharp-net/thread388326.html
, т.е опрос идет исправно, а вот ответы на запросы, происходят только первые 35
greenwod
можешь выложить проект , интересно как ты справился с задачей
"Пытаюсь подать/считать сигнал с входа/выхода."
спасибо
и еще вопрос: не возникают ли у тебя проблемы как тут http://www.cyberforum.ru/csharp-net/thread388326.html
, т.е опрос идет исправно, а вот ответы на запросы, происходят только первые 35
greenwod
можешь выложить проект , интересно как ты справился с задачей
"Пытаюсь подать/считать сигнал с входа/выхода."
спасибо
и еще вопрос: не возникают ли у тебя проблемы как тут http://www.cyberforum.ru/csharp-net/thread388326.html
, т.е опрос идет исправно, а вот ответы на запросы, происходят только первые 35
Там неправильно организован приём ответа. Вообще прежде чем писать низкоуровневый обмен, надо запомнить:
- что ответ может прийти не сначала;
- что ответ может прийти не до конца;
- что ответ может разбиться на несколько частей;
- что несколько ответов могут прийти разом;
- что может прийти вообще не ответ;
- что ответ может не прийти;
- что ответ может прийти через запрос;
- что вместо ответа или вместе с ответом может прийти что угодно даже без запроса.
Если неохота всё это контролировать и вообще страшно покидать зону комфорта «запрос-ответ», то лучше пользоваться высокоуровневыми проверенными библиотеками а ля NModbus.
Yegor, вы не могли бы подсказать, как мне решить следующую проблему?
Есть сеть ПЛК63, подключенная к gprs модему Невод. Сам модем настроен на передачу данных на белый айпи у меня дома. Раньше я использовал программное обеспечение геолинка(прозводитель модема), которое эмулировало com-порт из соединения с модемом, и я мог его опрашивать вот таким образом:
var r = new ModbusSerialMaster(myPort);
r.ReadHoldingRegisters(10, 4098, 1);
Теперь же мне нужно осуществлять связь с сетью плк НЕ используя стороннее ПО. Отсюда вопрос - как мне из кода c# в Visual Studio (.NET) связаться со своими ПЛК?
Последний раз редактировалось fillpackart; 13.05.2016 в 15:02.
Попробуйте создавать мастера через ModbusSerialMaster.CreateRtu(TcpClient client) (либо CreateAscii по ситуации). Тогда обмен будет в формате последовательного порта, но канал останется TCP. Это вместо традиционного ModbusIpMaster.CreateIp, где формат сообщений иной.Отсюда вопрос - как мне из кода c# в Visual Studio (.NET) связаться со своими ПЛК?Всё это вы задаёте сами в конфигурации ПЛК. То есть добавляете туда модбас-слейв, добавляете в него регистры, именуете их подходящим образом.подскажите плиз
slaveRegA.9 откуда берется?
и нулевой регистр на код команды это как будет?
Коллеги, при использовании NModbus4 из NuGet столкнулся с проблемой, когда при пропадании связи (банально выдернут шнур) программа надолго зависала. Как оказалось, необходимо установить свойство ModbusIPMaster.Transport.ReadTimeout в какое-то разумное значение (в мс). По умолчанию там -1. Поставил 500 - работает, при выдергивании шнура исправно выкидывает исключение. Там ещё есть свойство WriteTimeout, тоже его надо установить во что-то приемлемое.
Проблема не ОВЕН-ориентированная, а NModbus4, но вдруг кому пригодится.