вылет версии 3.0

В данный форум Вы можете заносить найденные Вами ошибки.При добавления ошибки пожалуйста приложите файлик error.log который находится в папке с установленной программой
Аватара пользователя
Rovki
Полковник
Сообщения: 4543
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 246
Откуда: Чехов
Имя: Анатолий
Контактная информация:

вылет версии 3.0

#21

Сообщение Rovki » 06.12.2017{, 22:46}

support писал(а):При создании новых соеденений в следующей версии создание непосредственных обратных связей будет просто невозможно, программа будет сама за этим следить и не позволит Вам создать такое соеденение.
В овен лоджик для таких случаев есть пунктирная связь ,означающая связь задержанная на один цикл (линия задержки).Если есть неоднозначность при обработки обратных связей компилятор помечает связь желтым цветом и предлагает поставить линию задержки на цикл .Может воспользоваться их опытом ....
Электронщик до мозга костей и не только

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

вылет версии 3.0

#22

Сообщение CraCk » 07.12.2017{, 01:50}

Еще баг СКАДА
_uVideoPlayer({'url':'');

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

вылет версии 3.0

#23

Сообщение support » 07.12.2017{, 10:56}

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

Добавлено (07.12.2017, 10:56)
---------------------------------------------
CraCk писал(а):Еще баг СКАДА
Исправил.
Автор программы FLProg.

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

вылет версии 3.0

#24

Сообщение CraCk » 08.12.2017{, 23:07}

Не знаю так должно быть? При включенной опции подавать сигнал при достижение заданного значения на счетчике. В переменную записывается на одно значение меньше заданного.
_uVideoPlayer({'url':'');
Последний раз редактировалось CraCk 08.12.2017{, 23:14}, всего редактировалось 1 раз.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2132
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 280
Имя: Владимир

вылет версии 3.0

#25

Сообщение rw6cm » 09.12.2017{, 05:37}

Что то я не понимаю, какая здесь может быть обратная связь?

СпойлерПоказать
Теперь что, любой выход со входом нужно обвешивать переменными?
Вложения
6785505.png
Win10-64, FLProg (portable)

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

вылет версии 3.0

#26

Сообщение Sancho » 09.12.2017{, 08:59}

rw6cm,
В Вашем случае промежуточная переменная не нужна.
Попробую объяснить, как понимаю я.
Если в качестве сигнала "обратной связи" используется выход блока с запоминанием состояния, т.е. счетчики, триггеры и т.д., то никаких дополнительных действий не требуется.
Если же попытаться использовать сигнал функций, т. е. сложение/вычитание, умножение/деление, сравнение и т.д., которые выполняются с операндами и не имеют выделенной переменной под результат, то варриантов 2:
1. использовать(создать) выделенную(промежуточную) переменную
2. ставить необходимые функции перед входом обратной связи, а уже в них подавать сохраняемые значения.
Это, неправильная обратная связь, читал на просторах инета, называется рекурсия.
Надеюсь, свою мысль изложил понятно.
Последний раз редактировалось Sancho 09.12.2017{, 09:01}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

вылет версии 3.0

#27

Сообщение support » 09.12.2017{, 09:23}

rw6cm писал(а):Что то я не понимаю, какая здесь может быть обратная связь?
rw6cm писал(а):Теперь что, любой выход со входом нужно обвешивать переменными?
 
Нет, только эту цепь пустить через переменную.

Объясню в чем проблема. Новый компилятор (как и в принципе все компиляторы в подобных системах) анализируют схему. Они "растягивают" схему в последовательность блоков в одну линейку. При этом для каждого блока определяются блоки которые нужны для его расчета (которые подключены к его входам), и эти блоки ставятся перед ним. А теперь попробуйте посмотреть с точки зрения компилятора, кто должен стоять впереди -  блок триггера или блок счётчика? Вот компилятор и "сходит с ума" пытаясь определиться. Скоро выйдет новая версия где создание таких соеденений будет невозможно, а для старых проектов где они есть - будет выдаваться соответствующее сообщение, и до устранения таких связей проект не будет компилироваться (уже реализованно).
Вложения
8201264.png
Автор программы FLProg.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2132
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 280
Имя: Владимир

вылет версии 3.0

#28

Сообщение rw6cm » 09.12.2017{, 09:29}

Понимаю это особенность FLProg, которую теперь надо учитывать.
т.к. аналогичный код в IDE работает без проблем.

дополнено
В той схеме можно не только булевой переменной развязать, но и итежел.
Программа будет это учитывать? т.е. не принципиально где разорвать соединение переменной?
т.к. раскладка кода в этих вариантах совершенно разная.

СпойлерПоказать
Вложения
3944816.png
0700697.png
Последний раз редактировалось rw6cm 09.12.2017{, 10:14}, всего редактировалось 1 раз.
Win10-64, FLProg (portable)

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

вылет версии 3.0

#29

Сообщение support » 09.12.2017{, 10:05}

rw6cm писал(а):Понимаю это особенность FLProg, которую теперь надо учитывать.
Не только FLProg.
Честно говоря я долго не мог придумать нормальный (читай правильный) алгоритм анализа схемы. До версии 3.0.2 использовался придуманный мной ещё четыре года назад алгоритм основанный на гомерическом положении блоков на плате. Ну и Вы сами помните к чему это приводило))) Передвинул блок на схеме - программа работает совсем по другому.
Я перелопатил достаточно много инфы по промышленным средам программирования, ну и постепенно в голове сложилась общая картина работы их компиляторов, основанных именно на анализе схемы. На основе этого я и написал новый компилятор.
Например у Овена такая ситуация то же отслеживается, и при создании такой связи предлагается создать так называемую "линия задержки на цикл" - ту же переменную. Я не знаю стоит ли вводить такое понятие в FLProg? Если так будет понятнее, я могу это сделать (конечно потребуется время, и я не знаю стоит ли оно того, или правильнее оставить необходимость ручного создания переменной. Ведь по большому счету, переменная и так создается).
У сименса вообще все расчеты ведутся с обязательной записью окончания цепочки в ячейку памяти, и непосредственную обратную связь так же создать не позволяется.
В общем практически во всех профессиональных средах так или иначе эта проблема решена через ручное или автоматическое создание переменной (тэга, ячейки памяти.....)
Единственно отличается шнайдер (ZelioSoft), там такую связь  создать можно, но как это у них реализовано, я пока не разобрался

Добавлено (09.12.2017, 10:05)
---------------------------------------------
Ну а поскольку я все таки создаю свой проект для подготовки молодых к специалистов к работе на "настоящих" промышленных  средах программирования, то считаю что привить им  понимание того что  "непосредственные обратные связи создавать нельзя" - это правильный путь.
Автор программы FLProg.

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

вылет версии 3.0

#30

Сообщение Sancho » 09.12.2017{, 10:16}

support писал(а):Нет, только эту цепь пустить через переменную.
Компилирует без проблем.
Все используемые переменные в обратных связях объявлены и проведена начальная инициализация значений.

СпойлерПоказать
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
bool _count1I = 0;
int _count1P = 0;
bool _trgs1 = 0;
void setup()
{
}
void loop()
{

//Плата:1
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;}
if (_gen1I) {  if ( _isTimer ( _gen1P , 100 )) { _gen1P = millis(); _gen1O = ! _gen1O;}}

if (_gen1O)
{
if (! _count1I)
{
if (_trgs1) {_count1P = _count1P+1;} else {_count1P = _count1P-1;};
_count1I = 1;
}
}
else
{
_count1I=0;
}
if((_count1P) < (0)) _trgs1 = 1;
if((_count1P) > (100)) _trgs1 = 0;

}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}
Последний раз редактировалось Sancho 09.12.2017{, 10:17}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
rw6cm
Полковник
Сообщения: 2132
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 280
Имя: Владимир

вылет версии 3.0

#31

Сообщение rw6cm » 09.12.2017{, 10:25}

Sancho,
я тоже утром на этом зациклился, когда не смог запустить свой рабочий проект )))
Здесь загвоздка не в коде, а в схемном решении правильной последовательности расположения кода блоков.
Это как то упустил из вида.

support,
Было бы замечательно если мы моли не только смотреть последовательность, но и выставлять ее сами.
тогда можно от лишних переменных избавится
Последний раз редактировалось rw6cm 09.12.2017{, 10:31}, всего редактировалось 1 раз.
Win10-64, FLProg (portable)

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

вылет версии 3.0

#32

Сообщение support » 09.12.2017{, 10:40}

Sancho писал(а):Компилирует без проблем.Все используемые переменные в обратных связях объявлены и проведена начальная инициализация значений.
Вопрос стоит не в компиляторе ардуины, а в компиляторы FLProg (FBD -> C). В принципе конечно можно поднапрячься, и сделать возможным создание непосредственных обратных связей, можно даже научить компилятор обрабатывать такие цепочки, но:
support писал(а):Ну а поскольку я все таки создаю свой проект для подготовки молодых к специалистов к работе на "настоящих" промышленных средах программирования, то считаю что привить им понимание того что "непосредственные обратные связи создавать нельзя" - это правильный путь.
Добавлено (09.12.2017, 10:40)
---------------------------------------------
rw6cm писал(а):Было бы замечательно если мы моли не только смотреть последовательность, но и выставлять ее сами.тогда можно от лишних переменных избавится
 Повторюсь:
Цитата support (Изображение) Ну а поскольку я все таки создаю свой проект для подготовки молодых к
специалистов к работе на "настоящих" промышленных средах
программирования, то считаю что привить им понимание того что
"непосредственные обратные связи создавать нельзя" - это правильный
путь.

А ни в одной из промышленных систем возможности самостоятельно задавать порядок выполнения блоков (кроме разбиения на Network -и как у сименса например - но это есть и у меня)  не существует.
Автор программы FLProg.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2132
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 280
Имя: Владимир

вылет версии 3.0

#33

Сообщение rw6cm » 09.12.2017{, 10:51}

support писал(а):не существует.
Все когда то не существовало.
Но было сделано такими же первопроходцами как Вы!
Win10-64, FLProg (portable)

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

вылет версии 3.0

#34

Сообщение Sancho » 09.12.2017{, 11:00}

support писал(а):Вопрос стоит не в компиляторе ардуины, а в компиляторы FLProg (FBD -> C)
Это скомпилировано в FLProg.
support писал(а):Цитата support ()Ну а поскольку я все таки создаю свой проект для подготовки молодых к специалистов к работе на "настоящих" промышленных средах программирования, то считаю что привить им понимание того что "непосредственные обратные связи создавать нельзя" - это правильный путь.
Согласен с Вами, сам всегда придерживаюсь такого правила- промежуточная переменная.
Просто захотел посмотреть, как FLProg справится с такой задачей. V 3.0.0

Добавлено (09.12.2017, 11:00)
---------------------------------------------
support писал(а):А ни в одной из промышленных систем возможности самостоятельно задавать порядок выполнения блоков (кроме разбиения на Network -и как у сименса например - но это есть и у меня)  не существует.
Вы не правы, есть в CDS v2.3.
Вложения
6576984.png
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

вылет версии 3.0

#35

Сообщение support » 09.12.2017{, 11:07}

Ну надо быть очень самоуверенным что бы думать что FLProg станет стандартом в промышленном программировании хотя бы в России.  
До CodeSys которая по факту является стандартом в этой области в мире мне ещё ой как далеко.

Добавлено (09.12.2017, 11:07)
---------------------------------------------
Sancho писал(а):Вы не правы, есть в CDS v2.3.
 В CodeSys можно задать порядок выполнения блоков в схеме на FBD? Интересно как? Я не слышал о таком.
Sancho писал(а):Это скомпилировано в FLProg.
Это было в старом компиляторе (до версии 3.0.2) где анализировалась не схема, а позиционное расположение блоков (тупо - расстояние от нуля координат на схеме). Это приводило к непредсказуемому поведению схемы, когда работа программы зависела не только от схемы соеденеий но и то взаимного расположения блоков. Это очень плохо.
Автор программы FLProg.

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

вылет версии 3.0

#36

Сообщение Sancho » 09.12.2017{, 11:11}

support писал(а):До CodeSys которая по факту является стандартом в этой области в мире мне ещё ой как далеко.
НО!!! После освоения Вашей программы FLProg порог вхождения  в CDS, для желающих продолжить, снижается до минимума.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

вылет версии 3.0

#37

Сообщение support » 09.12.2017{, 11:14}

Sancho писал(а):НО!!! После освоения Вашей программы FLProg порог вхождения в CDS, для желающих продолжить, снижается до минимума.
 Этого и добиваюсь
Автор программы FLProg.

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

вылет версии 3.0

#38

Сообщение Sancho » 09.12.2017{, 11:16}

support писал(а):Это было в старом компиляторе (до версии 3.0.2) где анализировалась не схема, а позиционное расположение блоков (тупо - расстояние от нуля координат на схеме). Это приводило к непредсказуемому поведению схемы, когда работа программы зависела не только от схемы соеденеий но и то взаимного расположения блоков. Это очень плохо.
Да, плохо. Но указанная схема будет работать даже если блоки перенести, изменится только лишь порядок выполнения, т.к.
Все используемые переменные в обратных связях объявлены и проведена начальная инициализация значений.
А насчёт порядка выполнения я уже проходил эти "грабли" в ранних версиях - смотришь на плату одно, смотришь в код IDE - мозг сносит....
Последний раз редактировалось Sancho 09.12.2017{, 11:55}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

вылет версии 3.0

#39

Сообщение support » 09.12.2017{, 11:28}

Sancho писал(а):изменится только лишь порядок выполнения, т.к.
Именно это и плохо. Сейчас конечно гуру научились предугадывать поведение старого компилятора, но это всегда лотерея)))) Ведь согласитесь, порядок выполнения (даже в пределах одного цикла программы) очень важен, и часто может сломать логику работы программы. Схемы бывают разные, и не раз такое  случалось . Да Вы и сами сказали
Sancho писал(а):А насчёт порядка выполнения я уже проходил эти "грабли" в ранних версиях - смотришь на плату одно, смотришь в код IDE - мозг сносит....
 Поэтому и попытался исправить это.
Автор программы FLProg.

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

вылет версии 3.0

#40

Сообщение Sancho » 09.12.2017{, 11:51}

support писал(а):В CodeSys можно задать порядок выполнения блоков в схеме на FBD? Интересно как? Я не слышал о таком.
 CFC - можно. FLProg в режиме FBD ближе к стандарту CFC, как мне кажется.
Сам использую только CFC и ST.

Добавлено (09.12.2017, 11:51)
---------------------------------------------
P.S. Позволю себе немного отвлечься от темы и, пока Автор здесь, спросить: планируется-ли возможность доступа к "глобальным переменным" из блока пользователя?
Вложения
9767986.png
Последний раз редактировалось Sancho 09.12.2017{, 11:58}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Ответить

Вернуться в «Новые»