add gefran and stuff

master
Eggert Jung 3 years ago
parent d732306e02
commit 55641ce8cb

@ -81,6 +81,8 @@ void ioHelperEdgeDetector(void);
#define LED_PLC_OK BitPL5 #define LED_PLC_OK BitPL5
#define LED_BUS_OK BitPL3 #define LED_BUS_OK BitPL3
#define LED_EXTR_ONOFF BitPL3
#define LIFT_MOTOR_DIR BitPL6 #define LIFT_MOTOR_DIR BitPL6
//Inputs //Inputs
@ -115,11 +117,15 @@ void ioHelperEdgeDetector(void);
#define BTN_LIFT_UP BitPinD7 #define BTN_LIFT_UP BitPinD7
#define BTN_LIFT_DOWN BitPinG2 #define BTN_LIFT_DOWN BitPinG2
#define BTN_EXTR_ON 8
#define BTN_EXTR_OFF 9
#define IN_ANLAGE_EIN_INV BitPinF7 #define IN_ANLAGE_EIN_INV BitPinF7
#define IN_NOTAUS_ANLAGE_R BitPinK5 #define IN_NOTAUS_ANLAGE_R BitPinK5
#define IN_NOTAUS_ANLAGE BitPinK4 #define IN_NOTAUS_ANLAGE BitPinK4
#define IN_NOTAUS_SCHRANK BitPinK6 #define IN_NOTAUS_SCHRANK BitPinK6
#define MOD_OUT_HEIZEN_LED 1 #define MOD_OUT_HEIZEN_LED 1
#define MOD_OUT_EXTR_LED 6
#endif #endif

@ -1,3 +1,4 @@
--target=avr
-D -D
__AVR_ATmega2560__ __AVR_ATmega2560__
-D -D

@ -0,0 +1,16 @@
#include "modbus-master.h"
#include <stdint.h>
#define FIRMWARE_VERSION 120
uint16_t gtf_firmware_version(uint8_t address){
uint16_t val = 0;
readReg(address, FIRMWARE_VERSION, 1);
int8_t res = wait_receive(1, &val, 250);
if(!res)
return val;
else
return res;
}

@ -0,0 +1,2 @@
uint16_t gtf_firmware_version(uint8_t address);

@ -18,7 +18,7 @@ void do_kraftsensor(){
/* read 2 16bit values and merge to 32bit signed integer */ /* read 2 16bit values and merge to 32bit signed integer */
readReg(1,0,2); readReg(1,0,2);
if(wait_receive(2, m_data, 10)){ if(wait_receive(2, m_data, 100)){
kraftsensor_valid = 0; kraftsensor_valid = 0;
printf("modbus error\n\r"); printf("modbus error\n\r");
} }

@ -2,6 +2,7 @@
#include <avr/interrupt.h> #include <avr/interrupt.h>
#include <avr/wdt.h> // WatchDog #include <avr/wdt.h> // WatchDog
#include <stdint.h> #include <stdint.h>
#include <stdio.h>
#include <string.h> #include <string.h>
#include "Ethernet/socket.h" #include "Ethernet/socket.h"
@ -19,6 +20,7 @@
#include "modbus.h" #include "modbus.h"
#include "modbus-master.h" #include "modbus-master.h"
#include "modbus_io_slave.h" #include "modbus_io_slave.h"
#include "gefran_gtf.h"
#include "util/delay.h" #include "util/delay.h"
@ -194,13 +196,14 @@ int main(){
ioHelperSetBit(outStates, BitPG5, 1); ioHelperSetBit(outStates, BitPG5, 1);
uint32_t timer_blink_outs = millis(); uint32_t timer_blink_outs = millis();
uint32_t timer_send_uptime = millis();
uint32_t timer_send_info = millis();
uint32_t timer_read_slave = millis(); uint32_t timer_read_slave = millis();
#ifdef PLC_MQTT_ENABLED
uint32_t timer_send_info = millis();
uint32_t timer_send_uptime = millis();
#endif
//printf("anlage: %x\n\r", read_Input(IN_ANLAGE_EIN_INV, LEVEL)); //printf("anlage: %x\n\r", read_Input(IN_ANLAGE_EIN_INV, LEVEL));
uint16_t tgl = 0;
while(1) while(1)
{ {
wdt_reset(); // WDT reset at least every sec wdt_reset(); // WDT reset at least every sec
@ -221,16 +224,26 @@ int main(){
#if PLC_MQTT_ENABLED #if PLC_MQTT_ENABLED
char msg[64]; char msg[64];
sprintf(msg, "%d", kraftsensor_value); sprintf(msg, "%ld", kraftsensor_value);
mqtt_pub(&mqtt_client, "/Filamentanlage/01_Extruder/kraft", msg, strlen(msg)); mqtt_pub(&mqtt_client, "/Filamentanlage/01_Extruder/kraft", msg, strlen(msg));
#endif #endif
modbus_io_set_Output(4, 0, TOGGLE); //modbus_io_set_Output(4, 0, TOGGLE);
//printf("gefran: 0x%02X\n", gtf_firmware_version(1));
//printf("gefran: 0x%02X\n", gtf_firmware_version(2));
//printf("gefran: 0x%02X\n", gtf_firmware_version(3));
//printf("gefran: 0x%02X\n", gtf_firmware_version(4));
//printf("gefran: 0x%02X\n", gtf_firmware_version(5));
//printf("gefran: 0x%02X\n", gtf_firmware_version(6));
//printf("gefran: 0x%02X\n", gtf_firmware_version(7));
//printf("gefran: 0x%02X\n", gtf_firmware_version(8));
//printf("gefran: 0x%02X\n", gtf_firmware_version(9));
//printf("gefran: 0x%02X\n", gtf_firmware_version(10));
//printf("\n");
} }
if(millis() - timer_read_slave > 100){ if(millis() - timer_read_slave > 200){
timer_read_slave = millis(); timer_read_slave = millis();
//readInputState(4, 200, 32);
modbus_io_read(); modbus_io_read();
if(modbus_io_read_Input(16, RISING)) if(modbus_io_read_Input(16, RISING))
@ -238,8 +251,6 @@ int main(){
if(modbus_io_read_Input(17, RISING)) if(modbus_io_read_Input(17, RISING))
modbus_io_set_Output(4, 3, OFF); modbus_io_set_Output(4, 3, OFF);
//printf("read inputs: 0x%02X 0x%02X 0x%02X 0x%02X\n", inp[3], inp[2], inp[1], inp[0]);
} }
if(read_Input(BTN_HEIZEN_AN, RISING)){ if(read_Input(BTN_HEIZEN_AN, RISING)){
@ -251,14 +262,23 @@ int main(){
if(read_Input(BTN_LIFT_UP, LEVEL)){ if(read_Input(BTN_LIFT_UP, LEVEL)){
set_Output(LIFT_MOTOR_DIR, 1); set_Output(LIFT_MOTOR_DIR, 1);
TCCR3B |= _BV(CS31); TCCR3B |= _BV(CS30);
} }
else if(read_Input(BTN_LIFT_DOWN, LEVEL)){ else if(read_Input(BTN_LIFT_DOWN, LEVEL)){
set_Output(LIFT_MOTOR_DIR, 0); set_Output(LIFT_MOTOR_DIR, 0);
TCCR3B |= _BV(CS31); TCCR3B |= _BV(CS30);
} }
else else
TCCR3B &= ~_BV(CS31); TCCR3B &= ~_BV(CS30);
if(read_Input(BTN_EXTR_ON, RISING)){
TCCR1B |= _BV(CS11);
modbus_io_set_Output(4, MOD_OUT_EXTR_LED, 1);
}
if(read_Input(BTN_EXTR_OFF, RISING)){
TCCR1B &= ~_BV(CS11);
modbus_io_set_Output(4, MOD_OUT_EXTR_LED, 0);
}
#if PLC_MQTT_ENABLED #if PLC_MQTT_ENABLED
// send misc info // send misc info
@ -279,14 +299,6 @@ int main(){
} }
#endif #endif
//if(read_Input(IN_ANLAGE_EIN_INV, FALLING)){
// printf("anlage ein\n\r");
//}
// ioHelperSetBit(outStates, LED_GRN_NOTAUS_SCHRANK, 1);
//}
//else{
// ioHelperSetBit(outStates, LED_GRN_NOTAUS_SCHRANK, 0);
//}
do_notaus(); do_notaus();
#if PLC_MQTT_ENABLED #if PLC_MQTT_ENABLED
@ -296,8 +308,7 @@ int main(){
ioHelperSetBit(outStates, LED_BUS_OK, 0); ioHelperSetBit(outStates, LED_BUS_OK, 0);
#endif #endif
ioHelperSetOuts(); ioHelperSetOuts();
} }
return 0;
} }
// Timer0 // Timer0
@ -313,16 +324,13 @@ void timer0_init(void)
void timer1_init() void timer1_init()
{ {
TCCR3A |= (1<<COM3B1); TCCR1A |= (1<<COM1A1);
TCCR3B |= _BV(WGM33); TCCR1B |= _BV(WGM13);
ICR3 = 100;
OCR3A = 50;
DDRE |= 1 << 4; ICR1 = 100;
TIMSK3 |= 1<<TOIE3; OCR1A = 50;
TCCR3B |= _BV(CS31); DDRB |= 1 << 5;
} }
void timer3_init() void timer3_init()
@ -330,8 +338,8 @@ void timer3_init()
TCCR3A |= (1<<COM3B1); TCCR3A |= (1<<COM3B1);
TCCR3B |= _BV(WGM33); TCCR3B |= _BV(WGM33);
ICR3 = 100; ICR3 = 60;
OCR3B = 50; OCR3B = 30;
DDRE |= 1 << 4; DDRE |= 1 << 4;
} }
@ -352,6 +360,7 @@ static void avr_init(void)
wdt_reset(); // wdt reset ~ every <2000ms wdt_reset(); // wdt reset ~ every <2000ms
timer0_init();// Timer0 millis engine init timer0_init();// Timer0 millis engine init
timer1_init();
timer3_init(); timer3_init();
DDRL |= 1<<6; DDRL |= 1<<6;
uart_init(); uart_init();

@ -52,7 +52,7 @@ THE POSSIBILITY OF SUCH DAMAGE.
/* define baudrate of modbus */ /* define baudrate of modbus */
#ifndef BAUD #ifndef BAUD
#define BAUD 38400L #define BAUD 19200L
#endif #endif
/* /*

@ -35,7 +35,7 @@ void messageArrived(MessageData* md)
void mqtt_pub(Client* mqtt_client, char * mqtt_topic, char * mqtt_msg, int mqtt_msg_len) void mqtt_pub(Client* mqtt_client, char * mqtt_topic, char * mqtt_msg, int mqtt_msg_len)
{ {
static uint32_t mqtt_pub_count = 0; //static uint32_t mqtt_pub_count = 0;
static uint8_t mqtt_err_cnt = 0; static uint8_t mqtt_err_cnt = 0;
int32_t mqtt_rc; int32_t mqtt_rc;