Forum: Mikrocontroller und Digitale Elektronik Arduino 1.0.6 unterschied zu Arduino 1.6.9


von Marc (Gast)


Lesenswert?

Hallo!

Ich habe vor langer Zeit ein Programm in Arduino 1.0.6 geschrieben, 
heute wollte ich etwas verändern und hab dazu schon das neu Arduino 
1.6.9 verwendet. Ohne Veränderung kommt der Fehler:

C:\Program Files 
(x86)\arduino-1.6.9\libraries\ModbusMaster/ModbusMaster.h:88:24: fatal 
error: util/crc16.h: No such file or directory

Könnt Ihr mir bei diesem Problem helfen? (Ich möchte gerne Arduino 
1.6.9) weiter verwenden)

Danke!

von Nitram E. (slexx)


Lesenswert?

Ich glaube die Libary "ModbusMaster" ist nicht für die 1.6.x ausgelegt!

von Paul A. (wandkletterer)


Lesenswert?

https://github.com/4-20ma/ModbusMaster Installiere halt die aktuelle 
Version der Libary.

von Dieter S. (Gast)


Lesenswert?

Marc schrieb:
> C:\Program Files
> (x86)\arduino-1.6.9\libraries\ModbusMaster/ModbusMaster.h:88:24: fatal
> error: util/crc16.h: No such file or directory

Die Library wurde nicht eingerichtet.
Du musst die Library noch dem System bekannt machen.

von Marc (Gast)


Lesenswert?

Habe nun die neue Libary für Modbus installiert. Damit lese ich einen 
SDM630 Zähler aus, senden kann ich aber empfangen nichts.

Hat jemand eine Ahnung ?

Meine SOFT:

#include <ModbusMaster.h>

ModbusMaster node(1,1); //MODBUS PORT UND ADRESSE
static int MAX_ITERATION = 20;
const int SDM_SIZE = 30;
float SDM_Data[SDM_SIZE];


void setup() {
  node.begin(9600);         //ModBus UART
  Serial.begin(9600);
}


void loop() {
for(int i = 0; i < SDM_SIZE;i++)
SDM_Data[i] = -1;

getRTUMore(0x000C,3,7);  // Parameter   7 -   9 Watt
getRTUMore(0x0000,3,1);  // Parameter   1 -   3 Spannung
Serial.print(SDM_Data[1]);
Serial.print(" : ");
Serial.print(SDM_Data[2]);
Serial.print(" : ");
Serial.println(SDM_Data[3]);
delay(1000);
}

boolean getRTUMore(uint16_t m_startAddress,uint8_t m_length,int 
arrayPosition){
  uint16_t result;
  int counter = 0;
  while(counter < MAX_ITERATION)
  {
    digitalWrite(3, HIGH); // TX
    if (node.ku8MBSuccess == node.readInputRegisters(m_startAddress, 
(m_length*2))) {
      for(int i = 0; i < m_length; i++){
        SDM_Data[arrayPosition] = 
reform_uint16_2_float32(node.getResponseBuffer(i*2),node.getResponseBuff 
er((i*2)+1));
        arrayPosition++;
      }
      node.clearResponseBuffer();
      return true;
    }
    counter++;
   digitalWrite(3, LOW);
  }
  return false;
}

float reform_uint16_2_float32(uint16_t u1, uint16_t u2)
{
   uint32_t num = ((uint32_t)u1 & 0xFFFF) << 16 | ((uint32_t)u2 & 
0xFFFF);
    float numf;
    memcpy(&numf, &num, 4);
    return numf;
}

von Marc (Gast)


Lesenswert?

im Setup ist noch folgende Zeile: pinMode(3, OUTPUT);

von john (Gast)


Lesenswert?

Marc schrieb:
> Ich habe vor langer Zeit ein Programm in Arduino 1.0.6 geschrieben,

Ein Programm kann man nur in einer Programmiersprache schreiben.
"Arduino 1.0.6" ist keine solche.

von Marc (Gast)


Lesenswert?

@john: Danke!

von Wolfgang E. (Firma: janeeisklar) (whattheheck)


Lesenswert?

john schrieb:
> Marc schrieb:
>> Ich habe vor langer Zeit ein Programm in Arduino 1.0.6 geschrieben,
>
> Ein Programm kann man nur in einer Programmiersprache schreiben.
> "Arduino 1.0.6" ist keine solche.

Ein Programm kann man auch in Indien schreiben oder in einem Büro oder 
in einer IDE ;-)

: Bearbeitet durch User
von Marc (Gast)


Lesenswert?

Ich habe jetzt mal mit dem Scope gemessen. Ich kann nicht erkennen dass 
der Max485 umgeschaltet wird (Richtung) - kann es sein das ich was an 
der ModbusMaster.h etwas verändern muss?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.