Страница 2 из 7 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 62

Тема: Modbus-мастер в Visual Studio (.NET)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Yegor, а есть где-то описание "ПЛК110/Мx110 memory model"?

    В частности:
    1) word tearing
    2) out of order writes / happens-before / data race
    3) out of thin air values

    Насколько я понимаю, в момент работы цикла "сетевые переменные" своих состояний не меняют. Но как оно работает в момент "до цикла/после цикла"?
    Какие-нибудь гарантии на tearing есть?

  2. #2
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,017

    По умолчанию

    Не попадалось. Да и не наблюдал таких эффектов. Но я не загружал ПЛК запросами настолько, чтобы это могло проявиться. Ну а модули вообще быстрого дуплексного интерфейса не имеют, чтобы это можно было хотя бы проверить (не говоря о том, чтобы столкнуться с этим в реальном проекте). Если в контексте темы, то лучше, конечно, приостанавливать опрос на время записи — так можно хотя бы себя обезопасить от вероятного рассинхрона.

  3. #3

    По умолчанию

    Подскажите.
    По вашому примеру все вышло и работает.
    Но мне нужно передавать число типа Real.
    Подскажите как ето реализовать.
    Спасибо

  4. #4
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,017

    По умолчанию

    Выкладывайте проекты — будем смотреть в чём дело.

    По-хорошему закрывать подключение, конечно, надо. И обрабатывать отключение извне тоже.

  5. #5

    По умолчанию

    Я после внесения правок в код скорее всего загружал только изменения, а нужно "Загружать все" - ошибка из-за этого была (только таким образом у меня получилось повторить ошибку).

  6. #6

    По умолчанию

    Цитата Сообщение от greenwod Посмотреть сообщение
    Да, спасибо!

    master.WriteSingleRegister(1, 0, 96)
    1 - адрес слейва
    0 - адрес регистра
    96 - значение


    Продолжаю усложнять себе задачи
    Пытаюсь подать/считать сигнал с входа/выхода.
    Как я понимаю, для этого нужно использовать Writesinglecoil Readcoilstatus
    Но не могу найти адреса для входов/выходов - в инструкции не нашел (у меня ПЛК110-24.60.Р.М).
    Не подскажете как обращатся к входу/выходу ПЛК. Я так понимаю должны быть какая-то таблица "Вход/выход ПЛК" соответствует "Номер бита"?
    greenwod
    можешь выложить проект , интересно как ты справился с задачей
    "Пытаюсь подать/считать сигнал с входа/выхода."
    спасибо
    и еще вопрос: не возникают ли у тебя проблемы как тут http://www.cyberforum.ru/csharp-net/thread388326.html
    , т.е опрос идет исправно, а вот ответы на запросы, происходят только первые 35

  7. #7

    По умолчанию

    Цитата Сообщение от greenwod Посмотреть сообщение
    Да, спасибо!

    master.WriteSingleRegister(1, 0, 96)
    1 - адрес слейва
    0 - адрес регистра
    96 - значение


    Продолжаю усложнять себе задачи
    Пытаюсь подать/считать сигнал с входа/выхода.
    Как я понимаю, для этого нужно использовать Writesinglecoil Readcoilstatus
    Но не могу найти адреса для входов/выходов - в инструкции не нашел (у меня ПЛК110-24.60.Р.М).
    Не подскажете как обращатся к входу/выходу ПЛК. Я так понимаю должны быть какая-то таблица "Вход/выход ПЛК" соответствует "Номер бита"?
    greenwod
    можешь выложить проект , интересно как ты справился с задачей
    "Пытаюсь подать/считать сигнал с входа/выхода."
    спасибо
    и еще вопрос: не возникают ли у тебя проблемы как тут http://www.cyberforum.ru/csharp-net/thread388326.html
    , т.е опрос идет исправно, а вот ответы на запросы, происходят только первые 35

  8. #8

    По умолчанию

    Цитата Сообщение от voale Посмотреть сообщение
    greenwod
    можешь выложить проект , интересно как ты справился с задачей
    "Пытаюсь подать/считать сигнал с входа/выхода."
    спасибо
    и еще вопрос: не возникают ли у тебя проблемы как тут http://www.cyberforum.ru/csharp-net/thread388326.html
    , т.е опрос идет исправно, а вот ответы на запросы, происходят только первые 35
    Здравствуйте!
    Я еще не успел написать что-то, что не стыдно выложить на форум

    Вы присваиваете имя входу ПЛК (например in1).
    Создаете в MODBUS (slave) регистр (например reg0).

    В коде ПЛК присваиваете в нужный бит регистра значение своего входа:
    reg0.2:=in1; (где .2 номер бита регистра).
    Важно помнить, что сигнал может быть коротким и Ваша программа может не успеть его считать - я делал дополнительный регистр в котором контролировал сигнал.

    В коде программы считываете значение регистра:
    bool[] coilstatus = master.ReadCoils(1 , Bit , 1) [0]
    Где Bit – адрес бита (в нашем случае будет 2).

    Насчет проблем с первыми 35 запросами не стыкался. Используйте Nmodbus как описано вначале данной темы и проблем быть не должно.
    Последний раз редактировалось Kish; 24.05.2019 в 14:29.

  9. #9

    По умолчанию

    Цитата Сообщение от greenwod Посмотреть сообщение
    Важно помнить, что сигнал может быть коротким и Ваша программа может не успеть его считать - я делал дополнительный регистр в котором контролировал сигнал.
    как именно контролировал подскажи подробнее?

  10. #10
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,017

    По умолчанию

    Там неправильно организован приём ответа. Вообще прежде чем писать низкоуровневый обмен, надо запомнить:

    1. что ответ может прийти не сначала;
    2. что ответ может прийти не до конца;
    3. что ответ может разбиться на несколько частей;
    4. что несколько ответов могут прийти разом;
    5. что может прийти вообще не ответ;
    6. что ответ может не прийти;
    7. что ответ может прийти через запрос;
    8. что вместо ответа или вместе с ответом может прийти что угодно даже без запроса.


    Если неохота всё это контролировать и вообще страшно покидать зону комфорта «запрос-ответ», то лучше пользоваться высокоуровневыми проверенными библиотеками а ля NModbus.

Страница 2 из 7 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. Помогите с ActiveX в Microsoft Visual Studio 2005
    от Alex_31 в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 06.10.2013, 08:55
  2. ModBUS TCP ПЛК100(мастер) и Lectus(слейв)
    от GSK в разделе Сетевые технологии
    Ответов: 4
    Последнее сообщение: 14.09.2012, 10:35
  3. Modbus Universal MasterOPC Server и ПЛК мастер
    от smk1635 в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 13.09.2011, 21:22

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •