Как правильно вызывать асинхронную SFC 13??
??
Андр;
13.2.04
Уважаемые коллеги!!
Намучался конкретно, не могу правильно вызывать асинхронную SFC
13,
все время возвращает ненулевое значение.
Надо видимо контролировать что-то, или считать кол-во вызовов и
что-то делать?? В настоящий момент функцию вызываю из OB через
каждые 50 мс.
Прошу помощи клуба знатоков!
Re: Как правильно вызывать асинхронную SFC
13?? ??
Тараненко
Виктор; 16.2.04
Некоторые замечания, на которые натыкался сам:
1. Адрес в входном параметре LADDR д.б. не Profibus, а
диагностический адрес ID (который впрочем жеско привязан к PROFIBUS
адресу). Его можно посмотреть в HW.
2. Надо контролировать Busy при считывании.
Пока все. Вспоминаю, что все шероховатости убирал по информации в
RET_VALUE.
Re: Как правильно вызывать асинхронную SFC
13?? ??
Андр;
17.2.04
А вот период вызова 50 мс - он сильно влияет, может его увеличить,
предположим до 500 мс ??
Ну а насчет Busy - я так понял если "занята" функция, то не
вызывать ??
Re: Как правильно вызывать асинхронную SFC
13?? ??
Чистяков Дмитрий ОАО СеверСталь; 17.2.04
Именно.
Т.е. вызвать её в следующий скан (или несколько сканов), когда BUSY
выдаст готовность.
Re: Как правильно вызывать асинхронную SFC
13?? ??
Илья; 27.2.04
Функция запускается ПО ФРОНТУ. Для последующего запуска необходимо
перебросить входной сигнал. Для экспериментов замечательно подходит
Clock Memory (see HardwareConfig). По умолчанию это МВ0.
Привяжитесь к биту с нужной частотой изменения и вперед!
Re: Как правильно вызывать асинхронную SFC
13?? ??
Андр;
27.2.04
Уважаемый Илья, вы пишете:
"Функция запускается ПО ФРОНТУ" - т.е. в момент вызова функции
необходимо организовать переход из нуля в единицу на входе "REQ"
функции SFC13 ??
"Для последующего запуска необходимо перебросить входной
сигнал".
Под входным сигналом подразумевается вход "REQ" ??
Спасибо за ваш ответ.
Re: Как правильно вызывать асинхронную SFC
13?? ??
Илья; 3.3.04
Active - BOOL
SFC_BUSY - BOOL
// ---------------------
A "Init"
FP "Init_FP"
AN #SFC_BUSY
= #Active
S SFC_BUSY
CALL SFC_XYZ
REQ:= #Active
.
.
.
O SFC_XYZ.OK
O SFC_XYZ.ERROR
R SFC_BUSY
Ну, типа того, только еще код для обработки различных
событий...<<br>