MotorWare f2806x Module API Documentation

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

slip.h
Go to the documentation of this file.
1 /* --COPYRIGHT--,BSD
2 * Copyright (c) 2012, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 * --/COPYRIGHT--*/
32 #ifndef _SLIP_H_
33 #define _SLIP_H_
34
40
41
42 // **************************************************************************
43 // the includes
44 #include "sw/modules/types/src/types.h"
45 #include "sw/modules/iqmath/src/32b/IQmathLib.h"
46
51
52
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56
57
58 // **************************************************************************
59 // the defines
60
61
62 // **************************************************************************
63 // the typedefs
64
65
68 typedef struct _SLIP_Obj_
69 {
70 _iq sample_time;
71 int32_t enc_elec_angle;
72 int32_t incremental_slip;
73 int32_t enc_slip_angle;
74 int32_t enc_magnetic_angle;
75 } SLIP_Obj;
76
77
80 typedef struct _SLIP_Handle_ *SLIP_Handle;
81
82
83 // **************************************************************************
84 // the function prototypes
85
86
90 inline _iq SLIP_getMagneticAngle(SLIP_Handle slipHandle) {
91 SLIP_Obj *slip = (SLIP_Obj *) slipHandle;
92
93 return slip->enc_magnetic_angle;
94 }
95
96
101 extern SLIP_Handle SLIP_init(void *pMemory,const size_t numBytes);
102
103
107 extern void SLIP_run(SLIP_Handle slipHandle);
108
109
114 inline void SLIP_setElectricalAngle(SLIP_Handle slipHandle, _iq electricalAngle) {
115 SLIP_Obj *slip = (SLIP_Obj *) slipHandle;
116
117 // set the electrical angle
118 slip->enc_elec_angle = electricalAngle;
119
120 return;
121 }
122
123
128 inline void SLIP_setSlipVelocity(SLIP_Handle slipHandle, _iq slipVelocity) {
129 SLIP_Obj *slip = (SLIP_Obj *) slipHandle;
130
131 // Calcaulte the amount of incremental slip based on the slip velocity & sample time
132 slip->incremental_slip = _IQmpy(slipVelocity, slip->sample_time);
133
134 return;
135 }
136
137
142 extern void SLIP_setup(SLIP_Handle slipHandle, _iq sampleTime);
143
144
145 #ifdef __cplusplus
146 }
147 #endif // extern "C"
148
150 #endif // end of _SLIP_H_ definition
151
SLIP_init
SLIP_Handle SLIP_init(void *pMemory, const size_t numBytes)
Initializes the encoder object.
Definition: slip.c:56
SLIP_Handle
struct _SLIP_Handle_ * SLIP_Handle
Defines the slip handle.
Definition: slip.h:80
types.h
Contains the public interface to the types definitions.
_SLIP_Obj_::incremental_slip
int32_t incremental_slip
incremental amount of slip per sample time
Definition: slip.h:72
_SLIP_Obj_::enc_elec_angle
int32_t enc_elec_angle
current electrical angle from encoder
Definition: slip.h:71
_iq
long _iq
Definition: 32b/IQmathLib.h:223
_SLIP_Obj_::enc_slip_angle
int32_t enc_slip_angle
amount of total slip in Q24
Definition: slip.h:73
_IQmpy
#define _IQmpy(A, B)
Definition: 32b/IQmathLib.h:809
SLIP_setup
void SLIP_setup(SLIP_Handle slipHandle, _iq sampleTime)
Initializes slip object parameters.
Definition: slip.c:70
_SLIP_Obj_::sample_time
_iq sample_time
sample time of the SLIP module
Definition: slip.h:70
_SLIP_Obj_::enc_magnetic_angle
int32_t enc_magnetic_angle
current magnetic angle in Q24
Definition: slip.h:74
SLIP_setSlipVelocity
void SLIP_setSlipVelocity(SLIP_Handle slipHandle, _iq slipVelocity)
Set the amount of slip velocity and calculates the incremental slip.
Definition: slip.h:128
SLIP_getMagneticAngle
_iq SLIP_getMagneticAngle(SLIP_Handle slipHandle)
Returns the current magnetic angle.
Definition: slip.h:90
SLIP_Obj
struct _SLIP_Obj_ SLIP_Obj
Defines the slip object.
SLIP_run
void SLIP_run(SLIP_Handle slipHandle)
Based on the electrical angle and the incremental slip, calculates the magnetic angle.
Definition: slip.c:90
SLIP_setElectricalAngle
void SLIP_setElectricalAngle(SLIP_Handle slipHandle, _iq electricalAngle)
Set the electrical angle.
Definition: slip.h:114
_SLIP_Obj_
Defines the slip object.
Definition: slip.h:68
IQmathLib.h