Страница 4 из 8 ПерваяПервая ... 23456 ... ПоследняяПоследняя
Показано с 31 по 40 из 76

Тема: Вопрос по библиотеке Modbus.lib

  1. #31

    По умолчанию

    Цитата Сообщение от a_gricaj Посмотреть сообщение
    Ну вроде работает и чтение и запись - два модуля на столе.
    А как избавится от вот этого:
    Вложение 26437

    Причем эта ошибка (меняет постоянно свое значение с 0 на 255 и обратно) не мешает - выхода включаются.
    [/CODE]
    ф.б. на запись отрабатывает не за один цикл, поэтому буфер на отправку необходимо формировать однократно перед вызовом этого ф.б. После вызова ф.б. необходимо сразу же снять флаг запуска в следующем действии (ModbusAdrDO11(enable:=false); ) и потом уже ждать завершения его работы.

  2. #32

    По умолчанию

    Цитата Сообщение от a_gricaj Посмотреть сообщение
    А по изменению это идея, достаточно перед записью сравнить старое значение байта с новым и если они равны тогда перейти на следующий шаг CASE, так?
    Да, если значение для выхода не изменилось, то просто не заходить на шаг записи выходов. Таким образом избавитесь от лишних посылок в сети.

    Можно также попробовать опрашивать состояние счетчиков модуля одной посылкой.

    Отдельная PRG не поможет.

  3. #33
    Пользователь
    Регистрация
    10.04.2010
    Адрес
    Алтайский край,г.Рубцовск
    Сообщений
    963

    По умолчанию

    Теоретически понятно , а вот практически у меня в голове пока не вырисовалось)))

  4. #34

    По умолчанию

    Цитата Сообщение от Гарчев Евгений Посмотреть сообщение
    ф.б. на запись отрабатывает не за один цикл, поэтому буфер на отправку необходимо формировать однократно перед вызовом этого ф.б. После вызова ф.б. необходимо сразу же снять флаг запуска в следующем действии (ModbusAdrDO11(enable:=false); ) и потом уже ждать завершения его работы.
    А вот это интересное замечание. Я не знал про такой нюанс.

  5. #35
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от energvk Посмотреть сообщение
    А вот это интересное замечание. Я не знал про такой нюанс.
    может и это заинтересует
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #36

    По умолчанию

    Цитата Сообщение от KSergey Посмотреть сообщение
    Да, если нужно изменить выход, то case:=case+1, если нет, то case:=0.
    Сейчас на работе. Если найду модуль, то попробую разобраться с записью. Я подозреваю, что 255 - это ошибка таймаута.
    Модуля вывода нет, но 255 - это таймаут.
    Да, скорее всего это таймаут, при подключенных всех 23 модуля на (одном порте) все ушло...

  7. #37

    По умолчанию

    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    A_gricaj, я не могу понять, Вы вроде бы даете в одном из своих сообщений ссылку на тему "Универсальный диспетчер Modbus", но после этого спрашиваете, как организовать опрос. В указанной теме очень подробно описан один из способов.
    Сможете ли Вы быстро опросить 54 модуля вопрос сложный. У меня в существующих проектах до 19 модулей при этом цикл опроса от 30 мс до 1500 мс (т.е. часть модулей опрашивается с периодом 30 мс, другие с периодом 1500 мс). 54, конечно, поболее, но я думаю, что в 1 секунду уложитесь, если разведете по разным портам, а запись будете осуществлять по изменению. Тут главная проблема в том, что некоторые модули долго отвечают. Так, например, модуль МУ110-16Р на скорости 57600 для установки своих 16 выходов требует порядка 15 мс, в то время как теоретически обмен одним регистром должен занимать примерно 2-3 мс.
    Поэтому главная загвоздка в том, как быстро отвечают модули МДВВ. От этого и будет зависеть время полного цикла опроса.
    Я видел Кирилл ваш пример, но мне пока не хватает опыта (а сейчас и времени) полностью с ним разобраться (с указателями не работал еще), хотя Ваш подход мне очень понравился.

    Поэтому сделал я FB на Сase для каждого порта. Сделал запись по изменению. На один порт поцепил все модуля с второстепенными сигналами, получилось 23 модуля МДВВ (остальные по 10 на оставшиеся порты буду цеплять), скорость 115200.
    Время задержки (на глаз) от момента подачи на вход сигнала до включения на выходе реле меньше секунды, хотя она и ощутима.В общем пока нормально, теперь я так понял нужно еще с этим разбираться
    ф.б. на запись отрабатывает не за один цикл, поэтому буфер на отправку необходимо формировать однократно перед вызовом этого ф.б. После вызова ф.б. необходимо сразу же снять флаг запуска в следующем действии (ModbusAdrDO11(enable:=false); ) и потом уже ждать завершения его работы.
    Хотя теперь не понятно почему ушли ошибки...
    Последний раз редактировалось a_gricaj; 19.09.2016 в 20:39.

  8. #38

    По умолчанию

    Цитата Сообщение от Гарчев Евгений Посмотреть сообщение
    ф.б. на запись отрабатывает не за один цикл, поэтому буфер на отправку необходимо формировать однократно перед вызовом этого ф.б. После вызова ф.б. необходимо сразу же снять флаг запуска в следующем действии (ModbusAdrDO11(enable:=false); ) и потом уже ждать завершения его работы.
    Скажите я правильно вас понял:
    Код:
    45:IF OldDOByteAdr33=DOByteAdr33 THEN master1:=0;
         ELSE
               Buffer[0]:=0;
               Buffer[1]:=DOByteAdr33;
               ModbusAdrDO33(
                                  Enable:= enabl,
                                  Mode:= MB_RTU,
                                  DevAddr:= 33,
                                  FirstAddr:= 50,
                                  Quantity:= 1,
                                  ComHandle:= Settings.Port,
                                  TimeOut:= TimeOut,
                                  Buffer:= Buffer,
                                  Complete=> cmpl,
                                  Exception=> ErrorDO33,
                                  RegCnt=> DataSize);
    ModbusAdrDO33.enable:=FALSE;
    IF cmpl
       THEN
              OldDOByteAdr33:=DOByteAdr33;
               master1:=0; 
    END_IF
    END_IF
    Последний раз редактировалось a_gricaj; 19.09.2016 в 20:57.

  9. #39

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    может и это заинтересует
    Да, спасибо) Это я уже видел и принял к сведению.

  10. #40
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от energvk Посмотреть сообщение
    Это я уже видел и принял к сведению.
    судя по этой теме, этого не видно. В исходниках не возможно не заметить, как используется буфер и переменная enable
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 4 из 8 ПерваяПервая ... 23456 ... ПоследняяПоследняя

Похожие темы

  1. Еще раз о библиотеке SysLibSockets
    от dudanov в разделе ПЛК1хх
    Ответов: 52
    Последнее сообщение: 28.01.2015, 15:41
  2. По библиотеке UNM
    от Сергей Мих в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 25.04.2012, 23:06
  3. Вопрос по библиотеке UNM
    от askpify в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 31.10.2009, 23:50
  4. По Овеновской библиотеке PID ?
    от mar154 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 28.10.2008, 12:32

Ваши права

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