Страница 7 из 15 ПерваяПервая ... 56789 ... ПоследняяПоследняя
Показано с 61 по 70 из 157

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

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

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

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение

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

    Base.Ready := TRUE;
    pDisp^();

    Но в этом случае диспетчер переходит из состояния Pooling в Scaning и не проводит сканирование.

    Зато если написать так:
    Base.Ready := TRUE;
    pDisp^();
    pDisp^();

    То он еще и сканирование проведет.
    А если вот так:
    Base.Ready := TRUE;
    pDisp^();
    pDisp^();
    pDisp^();

    То проведет сканирование и если найдет нужный модуль, то сразу же даст ему разрешение на опрос и опрос следующего модуля начнется на этом же скане.

    Спасибо за критику.
    Последний раз редактировалось Спорягин Кирилл; 18.09.2015 в 12:19. Причина: Уточнил текст

  2. #2

    По умолчанию

    SKV, CASE в любом случае нужно убирать и не тиражироать вызовы (CASE заменить на IF Step = .. ;;;; IF Condition THEN Step := Step +1; IF Error THEN Step := 0; и т.д.), тк дисперчер должен после освобождения одного слейва тут же посылать запрос другому. Например, так (фрагмент моего "диспетчера"):

    Код:
    2: (*RUN*)
    
    	(*WatchDog*)
    	TON_WD(IN := TRUE, PT := Set_Poll.WDT);
    	IF TON_WD.Q THEN ErrCode := ErrCode_WatchDog; Step := 3; RETURN; END_IF
    	(*Last Cycle 'Busy' Slave:  Busy Flag Check*)
    	IF Busy THEN
    	SLAVE[BusyNum](Busy => Busy);
    	IF SLAVE[BusyNum].Done THEN DoneNum := BusyNum; END_IF
    	END_IF
    
    	(*No 'Busy' Slave: Check all slaves for busy again *)
    
    (*ДОБАВИЛ ДЛЯ ПОЯСНЕНИЯ В ЭТОМ ТОПИКЕ: в цикле и далее вызывается Массив из FB-слейвов, в каждом из них буффер чтения, буффер записи,  флаги диагностики, таймеры таймаутов, счетчики ошибок, и естественно единственный код опроса на всех напрямую с ком портом без modbus.lib. При вызове обновляются таймеры и если какой-то из них превышает время поллинга больше других слейвов , то он "отправляется на опрос". Также есть вотч-дог диспетчера, если слейвы перестали опрашиваться в течение заданного интервала.  *)
    
    	IF Busy = FALSE THEN
    		OverT:= t#0ms;
    		KickNum := 0;
    		BusyNum := 0;
    		FOR Cnt := 1 TO Set_Poll.SlaveCnt DO
    			IF SLAVE[Cnt].Set.Use THEN
    				SLAVE[Cnt](
    								Start:= FALSE,
    								Poll:= FALSE,
    								Reset:= FALSE
    							);
    				(*'Busy' Slave detected: Set common 'Busy' flag and return*)
    				IF SLAVE[Cnt].Busy THEN Busy := TRUE; BusyNum := Cnt; RETURN; END_IF
    				(*Calc Higher OverTime Slave number*)
    				IF SLAVE[Cnt].ByTime AND SLAVE[Cnt].OverTime > OverT THEN OverT := SLAVE[Cnt].OverTime;  KickNum := Cnt; END_IF
    			END_IF
    		END_FOR
    
    
    					(*'Kick-start' slave with higher OverTime *)
    					IF KickNum > 0 THEN
    						(*New 'Kick-Start' : Reset WatchDog*)
    						TON_WD(IN := FALSE);
    					SLAVE[KickNum](Poll:= TRUE, Busy => Busy);
    						IF Busy THEN BusyNum := KickNum; END_IF
    					END_IF
    
    
    	END_IF
    возможно, когда откатаю на паре объектов, выложу полностью. А пока не готов к жесткой критике со стороны старослужащих))



    Еще раз по поводу быстродействия: в modbus.lib есть мистический таймер с вызовом PT:=t#3ms, точно не помню, но какжца, он все тормозит как минимум на один цикл. Модифицировать биб-ку или уходить от нее - это уже дело вкуса)
    Последний раз редактировалось spectrum48k; 18.09.2015 в 13:59.

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

    По умолчанию

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

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

  4. #4

    По умолчанию

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

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

    По умолчанию

    Сегодня я уже должен идти. Завтра с удовольствием прокомментирую свой код.

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

    По умолчанию

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

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

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а какой смысл в листинге? если человек не может объяснить алгоритм своей программы, это уже ни в какие ворота, а сделав попытку интерпретировать написанную прогу без алгоритма словами, в большинстве случаев приводит к нахождения способов её опьимизации или выявления багов
    SKV vs capzap

    Они сошлись. Волна и камень,
    Стихи и проза, лед и пламень ...

    Как бы до дуэли дело не дошло.

    capzap, чего ты докопался до него ?
    Последний раз редактировалось Вольд; 17.09.2015 в 19:02.

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

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а какой смысл в листинге? если человек не может объяснить алгоритм своей программы, это уже ни в какие ворота, а сделав попытку интерпретировать написанную прогу без алгоритма словами, в большинстве случаев приводит к нахождения способов её опьимизации или выявления багов
    Capzap, я тоже не понимаю, почему Вы так недоброжелательно ко мне настроены.
    Я делюсь своими наработками, считая, что это кому-то может пригодиться.
    Все что я пишу и выкладываю, я в свое время пытался найти на форуме, но не нашел. Надейюсь, что другим будет проще.

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

    По умолчанию

    Цитата Сообщение от spectrum48k Посмотреть сообщение
    Я не заметил, чтобы человек не смог или отказался прокомменировать программу. Да и не обязан он комментировать. Попросили проект - пожалуйста, во вложении. Интерпретации словами я тоже не заметил. Мне кажца, тут безосновательный наезд...?)) мое сообщение, признаюсь, - оффтоп. Почищу, после появления контента по теме далее)).
    к Вашему сведенью программа подверглась измегениям со слов автора,правда в другой теме и почему я должен обращаться к давно выложенному файлу, чтоб возникло новое гедопонимание, кста на форуме поднималась не раз тема считать затраченое время и выкладывались достойные решения
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  10. #10

    По умолчанию

    capzap, пруфлинк, пожалуйста, на достойное решение с поллингом (диспетчером опроса группы ведомых с разным интервалом опроса для каждого)

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

Похожие темы

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

Ваши права

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