Как же достали эти криворукие пЕсатели ОЛ..... вот если у вас версии совпадают, почему такая портянка ошибок?
Вот как после этого обновлять ОЛ? как говорится: работает, не трожь.
з.ы. из-за этого и не смотрю проекты, если нет крайней необходимости.
Как же достали эти криворукие пЕсатели ОЛ..... вот если у вас версии совпадают, почему такая портянка ошибок?
Вот как после этого обновлять ОЛ? как говорится: работает, не трожь.
з.ы. из-за этого и не смотрю проекты, если нет крайней необходимости.
iljael Просьба сменить тон. Отвечаю по делу: модель работы OwenLogic взята с модели работы CodeSys 2.3.
Она циклическая, как в CodeSys. С невытесняющей многозадачностью (когда каждой задаче выделяется определённый квант времени работ: программе, обмену по RS, обработке экранов).
Поэтому всё поведение циклов будет работать согласно стандарту МЭК на программирование ПЛК (входы => программа => выходы; описано вот тут в моей статье): цикл FOR будет стремиться выполниться за один цикл программы.
Если он сожрёт много ресурсов, то планировщик задач попытается выделить программе больше времени за счёт урезания времени работы с экраном и опросом по RS. Это штатная функция OwenLogic: чем нагруженнее программа, тем больше время её цикла и тем больше тормозит опрос по RS.
Собственно, просьба сменить тон относится к тому, что кой смысл ругаться? У ОВЕНа OwenLogic работает так, как я описал. Если это не устраивает - что нужно? Чтобы ОВЕН переделал ядро? Пожалуйста: эта работа будет стоить денег. Если вы готовы её оплатить - просьба обратиться в ОВЕН официально. Скорее всего к Максиму Денисову, который занимается разработкой OwenLogic.
Если не готовы оплатить - то дальше разговор продолжать смысла не имеет: ОВЕН работает так, как работает.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
Я не понял про тон , я задаю вопросы чисто технического характера и ругаться ни с кем не хотел. Вы можете объяснить почему мой "проект" не работает , точнее работает но в одну сторону, сторону увеличения длительности а в сторону уменьшения длительности не работает ?
Так и не смог я открыть проект. Но решил попробовать создать FB, который бы выполнял определенное действие с определенной периодичностью.
На входе время в мс, на выходе значение счетчика. У меня как увеличивается частота выполнения так и уменьшается без проблем.
Owen1.jpg
Может я не вник в суть проблемы?Код:function_block Task1 // Задача 1 var_input CycleTime : udint; end_var var_output Q : udint; end_var var Tick : SYS.TON; end_var Tick(I := true, T := udint_to_time(CycleTime)); if Tick.Q Then Q := Q + 1; Tick(I := false); end_if end_function_block
Да вы меня не так поняли , изменяется количество итераций цикла for в большую или меньшую сторону (в зависимости от введенного с панели числа)и из за этого динамически изменяется количество раз сколько код исполниться внутри цикла и соответственно должно меняться время исполнения цикла программы , а не задержка как у вас. В большую изменяется а в меньшую нет , что для меня и не понятно хотя количество циклов реально меняется в обе стороны а вот время выполнения только в одну сторону.
Хотя вот в посту #3746 похоже замаячил свет в конце туннеля.
Да.
А теперь, надеюсь, мы получим ответ на вопрос, ЗАЧЕМ это нужно.
Спрашиваю без сарказма: ведь такое "регулирование" времени выполнения программы - это крайне нештатное НАСИЛИЕ над ПРкой.
Которое ещё и будет работать нестабильно. Например, изменит ОВЕН процессор в ПРке. Он станет работать ещё быстрее - и всё замедление рухнет одномоментно (например, как было в DOS'овских программах на Pascal: если их запускать под Windows, то там вылезала ошибка деления на ноль - по ссылке на английском ОЧЕНЬ поучительная история о том, как задержка Delay была сделана циклом, и он рушился под Windows).
Поэтому информацию - в студию. ЗАЧЕМ? Мы подскажем, как решить по другому.
Только во внутренней документации на OwenLogic (для сотрудников ОВЕНа). Но для этого надо как минимум пойти работать в ОВЕН.
Последний раз редактировалось Cs-Cs; 06.09.2024 в 15:35.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
Придется переделывать многие проекты и цена вопроса должна быть минимальной вот и приходиться перед началом большого перевода проектов с одной платформы на другую оценивать примерную совместимость по быстродействию контроллера на который хотим перевести , а как проверить ? Зная логику исходного проекта и понимая примерное количество строк кода и чем программа в этих строках занимается нужно просто последовательно выполнить примерные эквиваленты этих строк на новой платформе и посмотреть возможно ли будет нормальная работа проекта на новом оборудовании или придётся доплачивать (что ОЧЕНЬ не желательно) за более быстродействующее и тут попался на глаза ИПП120 и столкнулся с проблемой которую описал на форуме , ну это так вообщем и в кратком изложении надеюсь понятно объяснил. Ну и если с ИПП120 не получиться то мне дешевле выйдет на кассовых терминалах с экраном все сделать.
Последний раз редактировалось iljael; 06.09.2024 в 16:08.
iljael Объяснил же: процессорное время ОДНОКРАТНО перераспределяется так, чтобы дать проекту максимум. Обратно НЕ перераспределяется. Так устроен ОВЕН.
Про FOR и два цикла программы - да, не так понял. Такого по МЭКовскому стандарту никогда не может быть.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab