ISaGRAF. Version 3.4

         

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 */


Содержание  Назад  Вперед