PDA

Просмотр полной версии : инициализация программы



Old_Lucky
15.04.2010, 11:23
добрый день. начали работать с овеном. появился вопрос.
есть ли у Plc-100 спец сигнал сигнализирующий о том что произошла перезагрузка контроллера(по кнопке сброс) или произошел старт программы (по кнопке старт/стоп). до этого работал с рядом буржуйских , там этот момент присутствует
нпр у Fx маркер м8002(импульс после Run) и масса других спец маркеров.
у вас в статистике присутствует сигнал только после включения питания, но этого не хватает, не обнаруживается перезагрузка и старт.

Gosha
15.04.2010, 13:04
добрый день. начали работать с овеном. появился вопрос.
есть ли у Plc-100 спец сигнал сигнализирующий о том что произошла перезагрузка контроллера(по кнопке сброс) или произошел старт программы (по кнопке старт/стоп). до этого работал с рядом буржуйских , там этот момент присутствует
нпр у Fx маркер м8002(импульс после Run) и масса других спец маркеров.
у вас в статистике присутствует сигнал только после включения питания, но этого не хватает, не обнаруживается перезагрузка и старт.

Я думаю, что все эту задачу может решить прикладное ПО на контроллере (которое Вы пишете).

Заводим в энергонезависимой памяти журнал:
- (переменная) момент включения (в ПЛК есть энергонезависимые часы RTC);
- время нажатия кнопки;
- момент старта ПЛК контролируем записи в журнале;

Т.е. таким же образом, как журналируемые файловые системы детектируют неоконченные записи на диск. NTFS(Win), Ext3(Linux). При сбое по питанию проводится check файловой системы.

Или я не о том?

Old_Lucky
15.04.2010, 13:31
Немного не о том. мне надо контролировать момент старта программы контроллера на компе (Скада). Если момент включения (подачи напряжения ) контроллера можно проконтролировать, есть там сигнал Power Status, то перезагрузку и старт можно только косвенным путем. Я бы хотел узнать , есть ли спец. сигналы (маркеры, или как их называет конкретный производитель контроллера), которые меня об этом проинформируют (Старт программы, перезагрузка контроллера,)

Old_Lucky
15.04.2010, 15:27
Странно, писал ответ, не появился:( Оп-па ответ первый проявился
Ну ладно, дублирую немного расширенно.
Немного не о о том. Мне необходимы инфрормационные сигналы для:
- контроля сос стороны Скады. (включился, контроллер, был дан старт с кнопки, перегрузился с кнопки) Включение контроировать можно PowerStatus-ом. Хотелось бы и на другие ситуации был спец сигналы (маркеры, или еще что-нить)
- При включение , перзапуске, или при старте (имееться в виду с кнопки) необходимо проинициализировать программу, выдавать различные сигналы, в зависимости от ситуации. Кое-что обнулить, что-то перезапустить, и т.д. Конечно можно сделать косвенным образом, так и придется сделать, но хотелось бы не заморачиваться этим ( к хорошему привыкаешь быстро- как у FX)

Филоненко Владислав
15.04.2010, 15:51
Такую доп. информацию частично можно получить из файла debug.txt.
Однако из-за аппаратных особенностей процессора в 100% случаев нельзя быть уверенным в причине перезапуска.

lara197a
15.04.2010, 16:42
для этого есть менеджер рецептов

Николаев Андрей
15.04.2010, 16:47
а еще есть системные события... :)

Old_Lucky
15.04.2010, 17:19
что такое менеджер рецептов? где можно почитать?
как пользоваться системными событиями. до этого смотрел, вроде бы то, но где почитать описание ?

Old_Lucky
15.04.2010, 17:26
когда на русский будут грамотно переводить? менеджер рецепта это менеджер просмотра?

Old_Lucky
15.04.2010, 17:32
похоже это все-таки не то что яхочу

SergeyNG
15.04.2010, 18:46
Объявляем переменную, например, с именем bAlwaysOn типа BOOL и инициализируем её в объявлении значением =1. Получаем аналог M8000.

Объявляем переменную, например, с именем bAlwaysOff типа BOOL и инициализируем её в объявлении значением =0. Получаем аналог M8001.

Объявляем переменную, например, с именем bFirstScanOn типа BOOL и инициализируем её в объявлении значением =1. В конце первого скана сами сбрасываем значение переменной в ноль. Получаем аналог M8002.

Аналогично M8003.

Удачно освоить, просто по-другому.

Gosha
16.04.2010, 17:50
Объявляем переменную, например, с именем bAlwaysOn типа BOOL и инициализируем её в объявлении значением =1. Получаем аналог M8000.

Объявляем переменную, например, с именем bAlwaysOff типа BOOL и инициализируем её в объявлении значением =0. Получаем аналог M8001.

Объявляем переменную, например, с именем bFirstScanOn типа BOOL и инициализируем её в объявлении значением =1. В конце первого скана сами сбрасываем значение переменной в ноль. Получаем аналог M8002.

Аналогично M8003.

Удачно освоить, просто по-другому.

:eek:
А если по русски и для простого народа? Понятными словами.
Аналог это аналоговый выход?

magirus
17.04.2010, 00:45
нет, тут аналог, это аналог,
то есть, то же самое....
хм...
пожалуй, для меня начали проясняться некоторые вещи, уже встреченные мной, но пока не понятые....
для чего оно сделано....

Old_Lucky
19.04.2010, 14:27
всем спасибо за советы. как самому сделать понятно то. я думал что есть встроенные средства.

Radix
01.06.2010, 08:49
Так все-таки... пробую юзать системные события - OnStart работает, OnStop тоже, On20mks - нет. Я так понимаю, target не поддерживает?
ПЛК ОВЕН110-32

Филоненко Владислав
01.06.2010, 12:57
прочитайте всю документацию. там еще нужна библиотека для использования прерывания.

Radix
01.06.2010, 15:32
Надеюсь, вы не советуете всерьез прочитать ВСЮ документацию для решения достаточно простого вопроса. Раздел 6.7 "Конфигуратор задач (Task Configuration) - Системные события" прочел, там то же, что и в help. Теперь вопросы:
1. Вызываются ли системные события в режиме эмуляции?
2. 20мкс прерывания - это достаточно часто. Видимо обработчик должен быть очень и очень коротким?

И что за библиотека нужна? В документации не указаны.

Филоненко Владислав
01.06.2010, 16:50
Хорошо, что Вы прочитали документацию на CoDeSys.
Теперь надо на сам ПЛК.
1. нет.
2. Конечно да.
Timer.lib

Дмитрий Артюховский
04.06.2010, 15:54
для таких вещей удобно писать граф аглоритма на Scf, тогда хорошо видно ( по исполняемому модулю ) была перезагрузка (прога начнет выполнение со стартового модуля) или просто питание выключалось (маркер выполнения остается в текущем модуле )