Как правильно вызывать асинхронную 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>