6#ifndef LIBA_PID_FUZZY_H
7#define LIBA_PID_FUZZY_H
34#if defined(__cplusplus)
42#define a_pid_fuzzy_init(ctx) a_pid_fuzzy_zero(ctx)
77#define A_PID_FUZZY_BFUZZ(n) (sizeof(unsigned int) * (n) * 2 + sizeof(a_real) * (n) * (2 + (n)))
134#if defined(__cplusplus)
138typedef struct a_pid_fuzzy pid_fuzzy;
166#if defined(__cplusplus)
168 A_INLINE
void set_opr(
unsigned int opr_)
173 A_INLINE
void set_bfuzz(
void *ptr,
a_size num)
177 A_INLINE
void set_rule(
unsigned int nrule_,
a_real const *me_,
a_real const *mec_,
void a_pid_fuzzy_set_opr(a_pid_fuzzy *ctx, unsigned int opr)
set fuzzy relational operator for fuzzy PID controller
void a_pid_fuzzy_zero(a_pid_fuzzy *ctx)
zeroing for fuzzy PID controller
void a_pid_fuzzy_set_bfuzz(a_pid_fuzzy *ctx, void *ptr, a_size num)
set memory block for fuzzy PID controller
void * a_pid_fuzzy_bfuzz(a_pid_fuzzy const *ctx)
get memory block for fuzzy PID controller
void a_pid_fuzzy_set_kpid(a_pid_fuzzy *ctx, a_real kp, a_real ki, a_real kd)
set proportional integral derivative constant for fuzzy PID controller
a_real a_pid_fuzzy_pos(a_pid_fuzzy *ctx, a_real set, a_real fdb)
compute for positional fuzzy PID controller
void a_pid_fuzzy_set_rule(a_pid_fuzzy *ctx, unsigned int nrule, a_real const *me, a_real const *mec, a_real const *mkp, a_real const *mki, a_real const *mkd)
set rule base for fuzzy PID controller
#define a_pid_fuzzy_init(ctx)
initialize for fuzzy PID controller
Definition pid_fuzzy.h:42
a_real a_pid_fuzzy_inc(a_pid_fuzzy *ctx, a_real set, a_real fdb)
compute for incremental fuzzy PID controller
a_real(*)(a_real, a_real) a_pid_fuzzy_opr(unsigned int opr)
get fuzzy relational operator for fuzzy PID controller
Definition pid_fuzzy.h:49
a_real a_pid_fuzzy_run(a_pid_fuzzy *ctx, a_real set, a_real fdb)
compute for fuzzy PID controller
@ A_PID_FUZZY_CAP
Definition pid_fuzzy.h:26
@ A_PID_FUZZY_CAP_BOUNDED
Definition pid_fuzzy.h:28
@ A_PID_FUZZY_CUP_ALGEBRA
Definition pid_fuzzy.h:30
@ A_PID_FUZZY_CUP
Definition pid_fuzzy.h:29
@ A_PID_FUZZY_CUP_BOUNDED
Definition pid_fuzzy.h:31
@ A_PID_FUZZY_EQU
Definition pid_fuzzy.h:25
@ A_PID_FUZZY_CAP_ALGEBRA
Definition pid_fuzzy.h:27
double a_real
compiler built-in floating-point number type
Definition a.h:1006
size_t a_size
unsigned integer type returned by the sizeof operator
Definition a.h:823
proportional integral derivative controller
instance structure for fuzzy PID controller
Definition pid_fuzzy.h:146
a_pid pid
Definition pid_fuzzy.h:147
a_real const * mec
Definition pid_fuzzy.h:150
a_real const * me
Definition pid_fuzzy.h:149
a_real * val
Definition pid_fuzzy.h:156
a_real kp
Definition pid_fuzzy.h:160
a_real kd
Definition pid_fuzzy.h:162
a_real const * mki
Definition pid_fuzzy.h:152
unsigned int nfuzz
Definition pid_fuzzy.h:165
a_real ki
Definition pid_fuzzy.h:161
a_real const * mkd
Definition pid_fuzzy.h:153
unsigned int nrule
Definition pid_fuzzy.h:164
a_real const * mkp
Definition pid_fuzzy.h:151
unsigned int * idx
Definition pid_fuzzy.h:155
a_real(* opr)(a_real, a_real)
Definition pid_fuzzy.h:158
instance structure for PID controller
Definition pid.h:106