|
|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
#include <avr/io.h>
|
|
|
|
|
#include <avr/interrupt.h>
|
|
|
|
|
#include <avr/wdt.h>
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
@ -71,19 +72,10 @@ static void avr_init()
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void send_info(void){
|
|
|
|
|
// send processvalues that are constantly changing
|
|
|
|
|
void send_values(void){
|
|
|
|
|
char msg[10];
|
|
|
|
|
|
|
|
|
|
/* Abzug */
|
|
|
|
|
sprintf(msg, "%d", abzug_speed);
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/abzug/speed", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
if(TCCR3B & (1<<CS31))
|
|
|
|
|
sprintf(msg, "True");
|
|
|
|
|
else
|
|
|
|
|
sprintf(msg, "False");
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/abzug/onoff", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
/* Taenzer */
|
|
|
|
|
if(kraftsensor_valid)
|
|
|
|
|
ltoa(kraftsensor_value, msg, 10);
|
|
|
|
|
@ -95,23 +87,41 @@ void send_info(void){
|
|
|
|
|
ltoa(temp, msg, 10);
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/taenzer/pos", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
itoa((250*60)/ICR5, msg, 10);
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/spule/speed", msg, strlen(msg));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// send settings wich only change on buttion press
|
|
|
|
|
void send_settings(void){
|
|
|
|
|
//TODO only send on change or improve performance otherwise
|
|
|
|
|
char msg[10];
|
|
|
|
|
|
|
|
|
|
//PORTH &= ~(1<<5);
|
|
|
|
|
//PORTH |= (1<<5);
|
|
|
|
|
/* Abzug */
|
|
|
|
|
sprintf(msg, "%d", abzug_speed);
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/abzug/speed", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
if(TCCR3B & (1<<CS31))
|
|
|
|
|
sprintf(msg, "True");
|
|
|
|
|
else
|
|
|
|
|
sprintf(msg, "False");
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/abzug/onoff", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
/* Taenzer */
|
|
|
|
|
itoa(taenzer_state.force_setpoint, msg, 10);
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/taenzer/sp_kraft", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Spule */
|
|
|
|
|
itoa((250*60)/ICR5, msg, 10);
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/spule/speed", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
if(TCCR5B & (1<<CS31))
|
|
|
|
|
sprintf(msg, "True");
|
|
|
|
|
else
|
|
|
|
|
sprintf(msg, "False");
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/spule/onoff", msg, strlen(msg));
|
|
|
|
|
|
|
|
|
|
/* Uptime */
|
|
|
|
|
sprintf(msg, "%ld", millis()/1000);
|
|
|
|
|
mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/uptime", msg, strlen(msg));
|
|
|
|
|
///* Uptime */
|
|
|
|
|
//sprintf(msg, "%ld", millis()/1000);
|
|
|
|
|
//mqtt_pub(&mqtt_client, "/Filamentanlage/05_Abzug/state/uptime", msg, strlen(msg));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -186,13 +196,16 @@ int main()
|
|
|
|
|
|
|
|
|
|
set_Output(LED_FEHLER, OFF);
|
|
|
|
|
|
|
|
|
|
set_Output(BitPH5, ON);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
wdt_reset(); // WDT reset at least every sec
|
|
|
|
|
|
|
|
|
|
#if PLC_MQTT_ENABLED
|
|
|
|
|
if(millis() < 10)
|
|
|
|
|
send_info();
|
|
|
|
|
send_settings();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ioHelperReadPins();
|
|
|
|
|
@ -206,6 +219,7 @@ int main()
|
|
|
|
|
outStates[2] ^= outStatesBlinking[2];
|
|
|
|
|
outStates[3] ^= outStatesBlinking[3];
|
|
|
|
|
timer_blink_outs = millis();
|
|
|
|
|
//printf("icr5: %u\n", ICR5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(millis() - timer_modbus_poll > 20){
|
|
|
|
|
@ -217,7 +231,8 @@ int main()
|
|
|
|
|
// send misc info
|
|
|
|
|
if(millis() - timer_send_info > 200){
|
|
|
|
|
timer_send_info += 200;
|
|
|
|
|
send_info();
|
|
|
|
|
send_values();
|
|
|
|
|
//send_info(); // 27ms every 200ms
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
@ -229,10 +244,10 @@ int main()
|
|
|
|
|
#if PLC_MQTT_ENABLED
|
|
|
|
|
ioHelperSetBit(outStates, LED_BUS_OK, 1);
|
|
|
|
|
ioHelperSetOuts();
|
|
|
|
|
MQTTYield(&mqtt_client, 10); //blocking call
|
|
|
|
|
MQTTYield(&mqtt_client, 1); //blocking call
|
|
|
|
|
ioHelperSetBit(outStates, LED_BUS_OK, 0);
|
|
|
|
|
#endif
|
|
|
|
|
ioHelperSetOuts();
|
|
|
|
|
ioHelperSetOuts(); //40us
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|