PDA

Просмотр полной версии : как вызвать callback?



Ушаков Николай
27.06.2007, 17:50
если у кого получалось вызывать коллбэки - подскажите как? лучше конечно если кто выложит проектег с примером

я делаю так - подключаю библиотеку SysLibCallback.lib, ставлю галочку на нужном событии, пишу справа название функции(например callback_Start), создаю функцию нажатием кнопки снизу, и все... После заливки этого проекта в контроллер(плк150 v2.01.1) он начинает ресетиться с периодичностью примерно полминуты.

Филоненко Владислав
27.06.2007, 17:53
по событиям можно вызывать только программы!
Rtfm!

Ушаков Николай
27.06.2007, 18:08
но кодесис то создает функцию, что с ней делать?

Ушаков Николай
27.06.2007, 18:12
и в хелпе написано что должна вызываться функция:

"
The prototype of the callback function must look as follows:

FUNCTION Callback : DWORD

VAR_INPUT

dwEvent: DWORD; // Event

dwFilter: DWORD; // Filter

dwOwner: DWORD; // Source

END_VAR
"

Ушаков Николай
27.06.2007, 18:17
с программами такая же ерунда ... :(

Филоненко Владислав
27.06.2007, 18:40
проверил. все работает. секрет прост - загружать программу в пустой конроллер, нажмите пуск и удерживая его, резет. загрузите - всё работает.
события - тонкий механизм.

Филоненко Владислав
27.06.2007, 18:41
и в хелпе написано что должна вызываться функция:

"
The prototype of the callback function must look as follows:

FUNCTION Callback : DWORD

VAR_INPUT

dwEvent: DWORD; // Event

dwFilter: DWORD; // Filter

dwOwner: DWORD; // Source

END_VAR
"

Библиотека используется самим CoDeSys-ом, а не программистами!

Fanat
27.06.2007, 18:52
проверил. все работает. секрет прост - загружать программу в пустой конроллер, нажмите пуск и удерживая его, резет. загрузите - всё работает.
события - тонкий механизм.

вы пример выложите. а то по вашим словам - все работает и все хорошо. а вот у клиентов не получается :-)
напоминает одного отечественного производителя уже - да не к месту он будет здесь упомянут.

Ушаков Николай
27.06.2007, 19:06
блин, хоть стреляйте меня из рогатки - ничего не работает!!!
делаю как вы говорите - нажимаю пуск, секунд 10, не отпуская нажимаю резет, - отпускаю, заливаю проект, контоллер с наглым видом продолжает ресетиться...
ну выложите пожалуйста пример....

Филоненко Владислав
28.06.2007, 08:36
отпускать резет надо, когда загрузится код ядра, секунд через 7. эта процедура подробно описана в документации.
При логине в этом случае будет надпись "No program on the controller! Download new programm?"
Пример прилагаю.
А по поводу "Вы говорите, у вас работает, а я долблюсь-долблюсь, а не выходит - значит производитель редиска" - RTFM!

Fanat
28.06.2007, 08:58
а по поводу "вы говорите, у вас работает, а я долблюсь-долблюсь, а не выходит - значит производитель редиска" - Rtfm!

ну у производителя, согласитесь, редисочности много бывает... и не вина пользователя, что что-то не работает, например.
просто поддержку пользователей, нужно держать на очень высоком уровне, пока продукт не будет доведен до ума.
Напомню еще, что именно Вы ввели в заблуждение нас и всех кто читал соответсвующий пост, что МодБас переменные автоматически становятся Ретэйнами. Оказалось что это не так. А между прочим из-за этого я уже 3 дня вынужден оправдываться перед заказчиком.
Кстати, помните, недавно я говорил о необходимости для перепрошивки применить пароль или нечто подобное, позволяющее избавиться от перемычки. Самое время вспомнить об этом разговоре. Ведь только за этот месяц уже 3 прошивки вышло, да и четвертая не за горами.
Эх...

Ушаков Николай
28.06.2007, 13:17
спасибо, Владислав, заработало...
подскажите пожалуйста есть ли какое событие, которое возникает при выключении питания контроллера?
shutdown и stop вроде не подходят.

Филоненко Владислав
28.06.2007, 13:41
Такое событие можно сформировать в task configuration, если создать обычную задачу, срабатывающую поevent-у (trigered by event).

mettled
06.10.2007, 17:48
а можно немного пояснить, как создать событие, которое срабатывало бы после выключения питания...
возникла такая необходимость, но не понимаю как реализовать это.
shutdown не работе точно.
если возможно напишите простой пример ... или распишите по шагам.
срочно надо.

Малышев Олег
08.10.2007, 10:50
А еще отключение питания можно отследить по заднему фронту бита Power в модуле Статистика( добавляется в корень PLC_Configuration)

Сергей71
16.10.2007, 16:45
Малышев Олег.
А еще отключение питания можно отследить по заднему фронту бита Power в модуле Статистика( добавляется в корень PLC_Configuration)

А при отключении питания основная программа выполняется или надо вставить где-то в task configuration.

Филоненко Владислав
16.10.2007, 17:29
Выполняется