teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

Revision:
28:fdb3b144e342
Parent:
27:ff63c23bc689
Child:
29:eb3d72dd94aa
--- a/HbMotor.h	Fri Dec 14 12:32:27 2018 +0000
+++ b/HbMotor.h	Sat Dec 15 14:20:04 2018 +0000
@@ -2,6 +2,7 @@
 #define __HBMOTOR_H__
 /////////////////////////////////////////////////////////////////////
 #include "typedef.h"
+#include "globalFlags.h"
 
 class HbMotor{
 private:
@@ -21,5 +22,74 @@
     void setValueFPGA(UCHAR iID, INT16 iVal);//iIDは 0 or 1
 };
 
+class HbMotCtrl{
+private:
+    std::bitset<4> ready;
+    //bool    ready;
+    eMotPos   pos;          // 位置
+    INT16  typ;          // 流入側or出力側
+    INT16   val;            // 
+    INT16   ofs;            // オフセットスロットル
+    INT16   pwmMin;         // 
+    INT16   pwmMax;          // 
+    INT16   rpmMin;         // 
+    INT16   rpmMax;          // 
+    float   coefA;          // PWMとRPMの関係の曲線の係数A
+    float   coefB;          // PWMとRPMの関係の曲線の係数B
+    float   coefC;          // PWMとRPMの関係の曲線の係数C
+    INT16   curPwmVal;      // 計算してセットした値
+    INT16   curRpmVal;      // 指定された現在のRPM
+    //INT16  tblVal[100];     // %->PWMの変換テーブル
+
+public:
+/**/
+    HbMotCtrl(eMotPos Pos, INT16 Type);//コンストラクタ
+    ~HbMotCtrl();//デストラクタ
+    bool isReady();//使用できるようにパラメータがセットされたかどうか(今は使わないかなぁ)
+    void setPwmLimt(INT16 Min, INT16 Max);
+    void setRpmLimt(INT16 Min, INT16 Max);
+    void setMotCoef(float a, float b, float c);
+    //void makeTable();       // 変換テーブル作成 パラメータセット後呼ぶ
+    INT16 calcPwm(INT16 percent);
+
+    void setValue(float value);  // パーセンテージ0~50
+    void setOfs(float value);    // パーセンテージ0~50
+    float getValue();  // パーセンテージ0~50
+    float getOfs();    // パーセンテージ0~50
+};
+
+class HbSubProp{
+private:
+// 今回のモーターと電装ではこうなるが、変更があれば適宜変更かクラス構成の見直しが必要
+#define PWN_MAX     4000
+#define RPM_IN_MAX     8500
+#define RPM_OUT_MAX     7500
+#define RPM_MIN     1500
+    eMotPos   pos  ;//識別ID
+    HbMotCtrl *motCtrl[2];
+    float   curVal;     // 現在のパーセンテージ
+    float   tarVal;     // 目標パーセンテージ
+public:
+    HbSubProp(eMotPos Pos);//コンストラクタ
+    ~HbSubProp();//デストラクタ
+
+    void setRpmLimIn(INT16 min, INT16 max);
+    void setRpmLimOut(INT16 min, INT16 max);
+    void setPwmLimit(INT16 min, INT16 max);
+    void setCoef(eMotType type, float a, float b, float c);
+    //void makeTbl();
+
+    void setValue(float val);  // パーセンテージ0~50
+    void setOfs(float val);    // パーセンテージ0~50
+    float getValue();  // パーセンテージ0~50
+    float getOfs();    // パーセンテージ0~50
+
+    // あとで実装したい関数たち
+    //void addValue(float val);
+    //void onePush(float val);// パーセンテージ
+    //void setValueEMG(float val);    // オフセット分も含めて指定可能
+};
+
+
 /////////////////////////////////////////////////////////////////////
 #endif
\ No newline at end of file