is the name of the
Ниже - стандартный скелет службы активизации:
void FBACT_xxx (
uint16 hinstance, /* "xxx" is the name of the function block
*/
/* logical number of the instance */
str_data *data, /* data: pointer to the instance data structure
*/
str_arg *arg /* pointer to the calling parameters structure
*/
)
{
}
Аргумент
“hinstance” - это логический номер экземпляра. Он резервируется ISaGRAF для внутренних операций и не должен использоваться для программирования службы. Аргумент “
data” - это дальний указатель на структуру данных связанных с экземпляром. Аргумент
“arg” это дальний указатель на структуру, которая содержит значения параметров вызова. Программист должен использовать идентификаторы, определенные в “C” заголовке функционального блока для доступа к полям структуры
“arg”.
Алгоритм “активизации” обрабатывает параметры вызова (сохраненные в структуре “
arg”) и изменяет поля структуры “
data”.
Следующий пример показывает службу активизации функционального блока
TRIG (определение переднего фронта):
/* definitions stored in the function block "C" header */
typedef struct { /* calling parameters */
T_BOO _clk; /* trigger input */
} str_arg;
#define CLK (arg->_clk)
/* function block instance data structure */
typedef struct {
T_BOO prev_state; /* previous state of the trigger input */
T_BOO edge_detect; /* edge value: image of return param */
} str_data;
/* activation service */
void FBACT_trig (uint16 hinstance, str_data *data, str_arg *arg)
{
data->edge_detect = (T_BOO)(CLK && !data->prev_state);
data->prev_state = CLK; /* calling parameter */
Содержание Назад Вперед