Страница 6 из 16 ПерваяПервая ... 45678 ... ПоследняяПоследняя
Показано с 51 по 60 из 157

Тема: Конфигуратор vs modbus.lib

  1. #51
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    А что Вы ожидаете увидеть?

  2. #52

    По умолчанию

    изменение времени опроса в ту или иную сторону.

  3. #53
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Насколько мне известно, параметр MinCycleLength определяет минимальное время цикла. Более того он дополняет его до указанного значения, если реальное время цикла меньше. Т.е. если MInCycleLength = 1 и некая PLC_PRG исполняется за 0,6 мс, то еще 0,4 мс процессор будет спать. Во время 0,6 мс я включаю и его сервисные операции. Учитывая, что у тестовой программы цикл выполнения был меньше 1 мс, то установка любого MinCycleLength отличного от 0 должна увеличить время опроса.
    Вы согласны? Или у Вас другое мнение?
    Последний раз редактировалось Спорягин Кирилл; 17.09.2015 в 14:57.

  4. #54
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    я не вникал в проект.. а могу чисто интереса ради попросить установить MinCycleLength 10 ? Ну, просто очень любопытно...
    Пока суд да дело, провел интересующие Вас эксперименты.
    Привожу данные:
    MinCycleLength = 0 СВО = 7
    MinCycleLength = 1 СВО = 7
    MinCycleLength = 2 СВО = 8
    MinCycleLength = 5 СВО = 10
    MinCycleLength = 10 СВО = 20
    СВО (среднее время опроса 4 байт на 115 Кбод).

    Время увеличивается и кратно MinCycleLength, чего и следовало ожидать.
    Последний раз редактировалось Спорягин Кирилл; 17.09.2015 в 16:49.

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

    По умолчанию

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

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

  6. #56
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Проект опроса прикреплен к посту №46.

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

    По умолчанию

    смешно, я еду в поезде и этот факт не дает мне предсьавления как организован опрос в Вашем проекте, потому что банально телефон не поддерживает КДС
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  8. #58

    По умолчанию

    SKV,
    я просмотрел. навскидку: применяется CASE. не кавай. при переходе к следующему шагу, шаг выполняется в след цикле, насколько я помню... сейчас попробую разобраться детально. Увидел такие вещи как сканнинг и поллинг. Вы меня заинтересовали, буду изучать Ваш подход. Обратите внимание: в modbus.lib CASE не используются (видимо для ускорения). У меня тоже есть нечто подобное на стадии тестирования. Не могу довести до ума, тк нет контроллера. Могу я попросить попользоваться ПЛК через интернет?))

    Последний раз редактировалось spectrum48k; 17.09.2015 в 17:08. Причина: добавил картинко. мои изыскания)

  9. #59

    По умолчанию

    С позволения автора, могу в текстовом виде листинг прислать)))

  10. #60

    По умолчанию

    Вот тут я уже ниасилил....



    IF pDisp^.AdressForPooling = Base.Adress THEN
    PoolingStat.SecondPoint();
    IF GetData THEN AnswerStat.FirstPoint(); END_IF;
    pDisp^.GetHoldRegs(
    Enable:= GetData,
    Mode:= MB_RTU,
    DevAddr:= Base.Adress,
    FirstAddr:= DataRegister,
    Quantity:= RegisterCount,
    ComHandle:= pDisp^.Settings.Port,
    TimeOut:= TimeOut,
    Buffer:= pDisp^.ReciveBuffer);


    Указатели в VAR_INPUT можно заменить на внутренние переменные FB в разделе VAR_IN_OUT (это те же указатели в более удобоваримой для этих функций форме, не создают области памяти для себя и не происходит копирования переменных при вызове экземпляра. Поправьте меня, если ошибаюсь)

    В принципе без детального изучения... разобрался. Вижу основную проблему быстродействия в CASE. Очередность вызовов диспетчером: диспетчер должен (имхо) не только устанавливать флаг, если время поллинга наступило, но и сразу же осуществлять вызов экземляров фб для записи чтения - для этого модули желательно унифицировать в массив из одноипных FB с массивами регистров внутрях. А массивы уже можно привязать к суказателям на структуры самих модулей в дальнейшем. Я пошел по такому пути.
    Последний раз редактировалось spectrum48k; 17.09.2015 в 17:49.

Страница 6 из 16 ПерваяПервая ... 45678 ... ПоследняяПоследняя

Похожие темы

  1. Библиотеки MODBUS.LIB и OWENNET.LIB
    от desperadoes в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 30.01.2014, 20:15
  2. Modbus.lib и МДВВ
    от ПРОЕКТ-П в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 17.05.2013, 15:04
  3. Ответов: 4
    Последнее сообщение: 18.09.2012, 22:16
  4. ПЛК100 и Modbus.lib
    от Slev в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 19.03.2012, 08:22
  5. RTE + Modbus.lib
    от K.I.V. в разделе ПЛК3хх
    Ответов: 10
    Последнее сообщение: 09.07.2008, 10:30

Ваши права

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