Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ModbusRtu.h>
- // data array for modbus network sharing
- uint16_t au16data[16];
- #define E2 3
- #define I3 12
- #define I4 13
- int Target_VR = A4;
- int Position_VR = A5;
- int Target = 0;
- int feedback = 0;
- double Error = 0;
- double Output=0;
- double Out_p = 0;
- double Out_i = 0;
- double Temp_i = 0;
- double Kp = 1.0;
- double Ki = 0.025;
- Modbus slave(1,1,0); // this is slave @1 and RS-232 or USB-FTDI
- void setup() {
- slave.begin( 19200 ); // baud-rate at 19200
- pinMode(E2,OUTPUT);
- pinMode(I3,OUTPUT);
- pinMode(I4,OUTPUT);
- Serial.begin(9600);
- }
- void loop() {
- Target = analogRead(Target_VR);
- feedback = analogRead(Position_VR);
- Error = Target - feedback;
- Out_p = Error * Kp;
- Temp_i = Temp_i +Error;
- Out_i = Temp_i *Ki;
- if(Out_i>255)Out_i = 255;
- if(Out_i<-255)Out_i = -255;
- Output = Out_p + Out_i;
- if(Output>0)
- {
- if(Output > 255) Output=255;
- digitalWrite(I3,HIGH);
- digitalWrite(I4,LOW);
- }
- if(Output<0)
- {
- if(Output < -255) Output = -255;
- }
- analogWrite(E2,Output);
- Serial.print("\nTarget Feedback Output2 OUT P I");
- Serial.print("\n");
- Serial.print(Target);
- Serial.print("\t");
- Serial.print(feedback);
- Serial.print("\t");
- Serial.print( 700);
- Serial.print("\t");
- Serial.print(300);
- //Serial.print("\t");
- //Serial.print(Out_p);
- //Serial.print("\t");
- //Serial.print(Out_i);
- au16data[1]= feedback;
- au16data[2]= Error;
- Target = au16data[3];
- delay(30);
- slave.poll( au16data, 16 );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement