Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
src/ConfigurationHandler/Controls/SetpointControl.h@131:a290a3934132, 2016-09-26 (annotated)
- Committer:
- jmarkel44
- Date:
- Mon Sep 26 17:36:30 2016 +0000
- Revision:
- 131:a290a3934132
- Parent:
- 96:807f04bd5256
- Child:
- 207:55aabde2d4bf
cleanup work
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| jmarkel44 | 5:5e77a1db4d45 | 1 | /****************************************************************************** |
| jmarkel44 | 5:5e77a1db4d45 | 2 | * |
| jmarkel44 | 5:5e77a1db4d45 | 3 | * File: SetpointControl.h |
| jmarkel44 | 5:5e77a1db4d45 | 4 | * Desciption: ICE Timer Control Class |
| jmarkel44 | 5:5e77a1db4d45 | 5 | * |
| jmarkel44 | 5:5e77a1db4d45 | 6 | *****************************************************************************/ |
| jmarkel44 | 5:5e77a1db4d45 | 7 | #ifndef SETPOINTCONTROL_H |
| jmarkel44 | 5:5e77a1db4d45 | 8 | #define SETPOINTCONTROL_H |
| jmarkel44 | 5:5e77a1db4d45 | 9 | |
| jmarkel44 | 28:c410a61238bb | 10 | #include "MbedJSONValue.h" |
| jmarkel44 | 5:5e77a1db4d45 | 11 | #include <string> |
| jmarkel44 | 46:4cb96ab2d1c8 | 12 | |
| jmarkel44 | 13:c80c283f9db2 | 13 | using namespace std; |
| jmarkel44 | 5:5e77a1db4d45 | 14 | |
| jmarkel44 | 5:5e77a1db4d45 | 15 | class SetpointControl |
| jmarkel44 | 5:5e77a1db4d45 | 16 | { |
| jmarkel44 | 5:5e77a1db4d45 | 17 | private: |
| jmarkel44 | 5:5e77a1db4d45 | 18 | string controlFile; // name of the control file |
| jmarkel44 | 20:653923c2f37a | 19 | string id; // control identifier |
| jmarkel44 | 28:c410a61238bb | 20 | int priority; // control priority |
| jmarkel44 | 20:653923c2f37a | 21 | string input; // control input |
| jmarkel44 | 28:c410a61238bb | 22 | string output; // control output |
| jmarkel44 | 89:55ac65d7f206 | 23 | double setpoint; // setpoint value |
| jmarkel44 | 30:738359dfdab1 | 24 | double productFactor; |
| davidjhoward | 91:0e8d76030598 | 25 | bool actingDir; // acting direction, 1 direct - pH, 0 indirect - inhibitor |
| jmarkel44 | 30:738359dfdab1 | 26 | double highAlert; |
| jmarkel44 | 30:738359dfdab1 | 27 | double lowAlert; |
| jmarkel44 | 30:738359dfdab1 | 28 | double highFailsafe; |
| jmarkel44 | 30:738359dfdab1 | 29 | double lowFailsafe; |
| jmarkel44 | 96:807f04bd5256 | 30 | double tolerance; // the error margining |
| jmarkel44 | 51:66b820f203a5 | 31 | enum State { |
| jmarkel44 | 131:a290a3934132 | 32 | STATE_INIT, |
| jmarkel44 | 51:66b820f203a5 | 33 | STATE_STARTUP, |
| jmarkel44 | 51:66b820f203a5 | 34 | STATE_CONTROL_OFF, |
| jmarkel44 | 51:66b820f203a5 | 35 | STATE_CONTROL_ON, |
| jmarkel44 | 51:66b820f203a5 | 36 | STATE_DISABLE, |
| jmarkel44 | 51:66b820f203a5 | 37 | STATE_PAUSE, |
| jmarkel44 | 51:66b820f203a5 | 38 | STATE_MAX |
| jmarkel44 | 51:66b820f203a5 | 39 | }; |
| jmarkel44 | 51:66b820f203a5 | 40 | State currentState; |
| jmarkel44 | 28:c410a61238bb | 41 | |
| jmarkel44 | 5:5e77a1db4d45 | 42 | public: |
| jmarkel44 | 51:66b820f203a5 | 43 | // ctor |
| jmarkel44 | 131:a290a3934132 | 44 | SetpointControl() { currentState = STATE_INIT; }; |
| jmarkel44 | 51:66b820f203a5 | 45 | // dtor |
| jmarkel44 | 12:ea87887ca7ad | 46 | ~SetpointControl() { |
| jmarkel44 | 12:ea87887ca7ad | 47 | printf("\r%s destructor invoked\n", __func__); |
| jmarkel44 | 86:189c125d8878 | 48 | // TODO: unregister the control with the output task |
| jmarkel44 | 28:c410a61238bb | 49 | } |
| jmarkel44 | 28:c410a61238bb | 50 | |
| jmarkel44 | 86:189c125d8878 | 51 | // load the control data |
| jmarkel44 | 28:c410a61238bb | 52 | bool load(string filename); |
| jmarkel44 | 86:189c125d8878 | 53 | |
| jmarkel44 | 86:189c125d8878 | 54 | // register the control with the output task |
| jmarkel44 | 51:66b820f203a5 | 55 | void registerControl(void); |
| jmarkel44 | 86:189c125d8878 | 56 | |
| jmarkel44 | 51:66b820f203a5 | 57 | // unregister the control with the output task |
| jmarkel44 | 86:189c125d8878 | 58 | void unregisterControl(void); |
| jmarkel44 | 86:189c125d8878 | 59 | |
| jmarkel44 | 86:189c125d8878 | 60 | // start the control |
| jmarkel44 | 51:66b820f203a5 | 61 | void start(void); |
| jmarkel44 | 86:189c125d8878 | 62 | |
| jmarkel44 | 51:66b820f203a5 | 63 | // update the control |
| jmarkel44 | 86:189c125d8878 | 64 | void update(void); |
| jmarkel44 | 86:189c125d8878 | 65 | |
| jmarkel44 | 51:66b820f203a5 | 66 | bool underLimit(); |
| jmarkel44 | 51:66b820f203a5 | 67 | bool overLimit(); |
| jmarkel44 | 86:189c125d8878 | 68 | |
| jmarkel44 | 86:189c125d8878 | 69 | // state transition functions |
| jmarkel44 | 93:1553fb156915 | 70 | void startFeed(void); |
| jmarkel44 | 93:1553fb156915 | 71 | void stopFeed(void); |
| jmarkel44 | 93:1553fb156915 | 72 | |
| jmarkel44 | 93:1553fb156915 | 73 | void display(void); |
| jmarkel44 | 28:c410a61238bb | 74 | |
| jmarkel44 | 86:189c125d8878 | 75 | string getControlFile(void) const { |
| jmarkel44 | 12:ea87887ca7ad | 76 | return controlFile; |
| jmarkel44 | 12:ea87887ca7ad | 77 | } |
| jmarkel44 | 86:189c125d8878 | 78 | string getId(void) const { |
| jmarkel44 | 28:c410a61238bb | 79 | return id; |
| jmarkel44 | 28:c410a61238bb | 80 | } |
| jmarkel44 | 86:189c125d8878 | 81 | unsigned int getPriority(void) const { |
| jmarkel44 | 28:c410a61238bb | 82 | return priority; |
| jmarkel44 | 28:c410a61238bb | 83 | } |
| jmarkel44 | 86:189c125d8878 | 84 | string getInput(void) const { |
| jmarkel44 | 28:c410a61238bb | 85 | return input; |
| jmarkel44 | 28:c410a61238bb | 86 | } |
| jmarkel44 | 86:189c125d8878 | 87 | string getOutput(void) const { |
| jmarkel44 | 28:c410a61238bb | 88 | return output; |
| jmarkel44 | 28:c410a61238bb | 89 | } |
| jmarkel44 | 86:189c125d8878 | 90 | float getProductFactor(void) const { |
| jmarkel44 | 28:c410a61238bb | 91 | return productFactor; |
| jmarkel44 | 28:c410a61238bb | 92 | } |
| jmarkel44 | 90:7d9731dec0da | 93 | int getActingDir(void) const { |
| jmarkel44 | 90:7d9731dec0da | 94 | return actingDir; |
| jmarkel44 | 90:7d9731dec0da | 95 | } |
| jmarkel44 | 86:189c125d8878 | 96 | float getSetpoint(void) const { |
| jmarkel44 | 86:189c125d8878 | 97 | return setpoint; |
| jmarkel44 | 86:189c125d8878 | 98 | } |
| jmarkel44 | 86:189c125d8878 | 99 | float getHighAlert(void) const { |
| jmarkel44 | 28:c410a61238bb | 100 | return highAlert; |
| jmarkel44 | 28:c410a61238bb | 101 | } |
| jmarkel44 | 86:189c125d8878 | 102 | float getLowAlert(void) const { |
| jmarkel44 | 28:c410a61238bb | 103 | return lowAlert; |
| jmarkel44 | 28:c410a61238bb | 104 | } |
| jmarkel44 | 86:189c125d8878 | 105 | float getHighFailsafe(void) const { |
| jmarkel44 | 28:c410a61238bb | 106 | return highFailsafe; |
| jmarkel44 | 28:c410a61238bb | 107 | } |
| jmarkel44 | 86:189c125d8878 | 108 | float getLowFailsafe(void) const { |
| jmarkel44 | 28:c410a61238bb | 109 | return lowFailsafe; |
| jmarkel44 | 28:c410a61238bb | 110 | } |
| jmarkel44 | 89:55ac65d7f206 | 111 | |
| jmarkel44 | 86:189c125d8878 | 112 | State getCurrentState(void) const { |
| jmarkel44 | 51:66b820f203a5 | 113 | return currentState; |
| jmarkel44 | 51:66b820f203a5 | 114 | } |
| jmarkel44 | 5:5e77a1db4d45 | 115 | }; |
| jmarkel44 | 5:5e77a1db4d45 | 116 | |
| jmarkel44 | 51:66b820f203a5 | 117 | #endif |
