Есть код, который предназначен только для online режима. В симуляции его нужно просто игнорировать.
Можно такое сделать?
Можно ли сделать без внешних библиотек?
Есть код, который предназначен только для online режима. В симуляции его нужно просто игнорировать.
Можно такое сделать?
Можно ли сделать без внешних библиотек?
посмотреть на температуру процессора
Создал еще один PRG с именем TEST, в нём делаю DO:=TRUE; (включаю дискретный выход)
В конфигураторе задач на событие start вешаю TEST, в эмуляции он не срабатывает, на ПЛК не могу сегодня проверить.
Ни на одно событие программа не выполнится из этого списка, хотя может потому что не вызывается из PLC_PRG, но опять же с другой стороны тогда смысла нет в событиях, в общем надо проверить на реальном ПЛК еще.
----
Не удержался, проверил удаленно на железе, да, это работает, вместо выхода создал глобальную BOOL, в эмуляции она FALSE, на ПЛК TRUE.
гыыыы, а кто страшилки рассказывал, об опасности включения выходов даже кратковременных, а тут на тебе, в реальном плк для теста выход включаем
ЗЫ только в модуле статистики есть бит состояния питающей сети прибора, а не представляю как в реальном плк без него обходятся пользователи
Поясню: у ПЛК110 М02 есть возможность заливать свободные программы для управления быстрыми входами-выходами. Ну, шаговые двигатели крутить, энкодеры обрабатывать и прочее.
Дело в том, что программы заливаются "через указатели, прямой доступ к памяти, вот это всё". Разумеется, при работе в симуляции обращения к памяти приводят к краху всей программы.
Поэтому и нужно как-то определять "online или simulation". Если такую проверку добавить, то КДС проект будет работать и в симуляции, и в online. Разумеется, в симуляции не будет симулироваться "блок управления ШД", но это не так страшно на текущий момент.
Разумеется, можно впилить какую-нибудь переменную, которую переключать туда-сюда, но это верный способ забыть про неё и т.п.
Взял человек проект. Запускает симуляцию, а у него "программа совершила недопустимую операцию и будет закрыта". Как из этого можно понять, что нужно поправить секретную переменную? Разумеется, никак. Поэтому и нужен механизм для автоматического распознавания simulation.
Откуда требование на "конфигуратор нельзя": сам блок (который работает с памятью) на самом деле автогенерируется (его генерирует среда Hardella). И с точки зрения прикладного разработчика, он импортирует этот блок как обычный *.exp.
Т.е.:
1) Написали программу (в Hardella)
2) Скомпилировали (получился *.exp)
3) Импортировали этот exp в основной проект
Нужно так, чтобы при этом импорте пользовательский проект не ломался. Сейчас это достигается тем, что в exp файл помещено только самое нужное. Т.е. импортируются только автогенерированные блоки, а всевозможные plc configuration/task configuration не трогаются.
экспортный файл удаляет объект в проекте, какая разница тогда стоял там модуль или нет
Допустим, пользователь уже добавил модуль статистики, и даже объявил нужные переменные в plc configuration.
Если как-нибудь удалим (на самом деле, через *.exp непонятно как удалять), то программа сломается. Мы же не знали как там пользователь обозвал переменную.
Обращаться по AT тоже не вариант, т.к. неизвестно какой будет адрес.
какая-то уже фигня пошла, а кто если не программист устанавливает экспортный файл к себе в проект, при первой же компиляции ошибки дадут о себе знать, вспомнит где стояла одна переменная с каким то узнаваемым именем вообще не сложно
Фигня не фигня, а меня почти каждый спросил "что значит ошибка identifier PRU_FB_GET_PARAMETER not defined": http://www.owen.ru/forum/showthread....TER#post233648
Кто-то по несколько раз на эти грабли наступал. Поэтому и хочу сделать "без библиотек".