Go Down

Topic: "8-Bit" Eingang, Texte definieren und speichern (Read 13083 times) previous topic - next topic

Jannomag

Nov 16, 2017, 08:36 pm Last Edit: Nov 17, 2017, 09:45 am by Jannomag
Hallo,
letztens habe ich einen Thread geöffnet, um LPT Daten auszulesen und zu speichern.
Das ganze Thema hat sich jetzt etwas geändert, daher ein neues Thema.


Also, aktuell ist ein Converter angeschlossen, der aus einfachen 8 Kontakten, die als Bits genutzt werden, vordefinierte (also eingebrannte) Texte bildet und diese via LPT ausdruckt. Das Gerät soll nun ersetzt werden.

Was soll jetzt der Arduino machen?
D0-D7 sind die 8-Bit Eingänge. Bit nicht als Dateneingang, sondern als einfacher Eingang.
Für 46 Bit-Kombinationen sollen Texte vordefiniert werden, das ist zwar ne Menge Tipparbeit, muss aber sein.
Diese Texte sollen dann in einer Text-Datei mit Zeitstempel gesichert werden, entweder pro Tag eine Datei mit dem Datum als Namen oder pro Kalenderwoche, wobei Tag, denke ich, am einfachsten ist...sofern das überhaupt machbar ist.
Ob auf SD oder USB gespeichert werden soll, ist Banane.

Beispiel:
(Eingänge: D0-D1-D2-D3-D4-D5-D6-D7)

Eingänge: 1-0-0-0-0-0-0-0
Text: 16.11.2017 17:01:54 - Schieber D geöffnet

Eingänge: 1-0-1-1-0-0-1-0
Text: 16.11.2017 17:02:43 - Schieber E geöffnet

Eingänge: 1-1-1-0-0-1-0-0:
Text: 17.11.2017 00:05:21 - Motorschutz Schieber D hat ausgelöst.

Ich hoffe, dass es soweit verständlich ist, was ich meine.


Da ich von Arduino nicht all zu viel Ahnung habe, bitte ich zu entschuldigen, wenn ich mit Beispielen aus anders funktionierenden Sketches teilweise nix anfangen kann und ggf. noch einmal nachfragen muss.
Da die Community hier aber großartig ist, hoffe ich, dass wir es hinbekommen.

Gruß,
Jannomag


HotSystems

Was für einen Arduino hast du vorgesehen ?
Ich befürchte fast, mit einem Uno o.ä. wird das direkt nichts.
Wenn du die Texte auf einer SD-Karte speicherst und diese daraus abrufst, könnte es funktionieren.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

agmue

#2
Nov 16, 2017, 08:51 pm Last Edit: Nov 16, 2017, 09:23 pm by agmue
.. daher ein neues Forum.
.. daher ein neues Thema.

(Eingänge: D0-D1-D2-D3-D4-D5-D6-D7)
Beim UNO und anderen Arduinos sind D0 und D1 für USB belegt, können also nicht benutzt werden, wenn auch USB verwendet wird.

Konzept:
  • Ein Feld mit 46 konstanten Texten im Programmspeicher ablegen.
  • Bits einlesen und in eine Zahl verwandeln. Diese Zahl als Index verwenden.
  • Mit dem Index Text aus dem Feld holen.
  • Datum von RTC holen.
  • Text zusammen mit Datum ausgeben.



Ich befürchte fast, mit einem Uno o.ä. wird das direkt nichts.
UNO:

Code: [Select]
const unsigned char TEXT[46][40] PROGMEM = {
  {"Schieber D geoeffnet"},
  {"Schieber E geoeffnet"},
  {"Motorschutz Schieber D hat ausgeloest"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"123456789012345678901234567890123456789"},
  {"vorletze Zeile"},
  {"ENDE 6789012345678901234567890123456789"},
};
void setup()
{
  Serial.begin(9600);
  for (byte z = 0; z < 46; z++) {
    for (byte s = 0; s < 40; s++) {
      char zeichen = pgm_read_byte(&(TEXT[z][s]));
      if (zeichen >= ' ') {
        Serial.print(zeichen);
      }
    }
    Serial.println();
  }
}

void loop(){}


Der Sketch verwendet 3.682 Bytes (11%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes.
Globale Variablen verwenden 200 Bytes (9%) des dynamischen Speichers, 1.848 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.


Oder meinst Du was anderes als die Speichergröße?
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HotSystems

Ohhhh.....danke für die Aufklärung, agmue.

Hätte ich jetzt nicht vermutet, aber bin jetzt doch angenehm überrascht.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Jannomag

Forum geändert in Thema - keine Ahnung, warum ich das geschrieben hab, ist mir natürlich bewusst, dass es Thema heißt und ich meinte auch, dass ich das so geschrieben hab :D

Welcher Arduino spielt erstmal keine Rolle, ich habe jedoch nur Unos und Nanos zum testen. Das sind, wegen des Preises und meiner Kaputtspielerei, günstige China-Klone, aber für das fertige Projekt wird später was richtiges gekauft.
Geld spielt da auch keine so große Rolle, da es nicht meins ist, sondern das der Firma.


D0 und D1 müssen ja nicht verwendet werden, gibt ja noch genug.


Bitte hilf mir mal beim Verständnis von u.a. "TEXT[46][40]". Woher die 40? Es kann sein, dass noch ein paar Texte hinzukommen oder entfernt werden, daher muss ich das Programm später auch bearbeiten können.

Die Zeit ist da auch schon eingebunden?

Den Rest verstehe ich soweit und es sieht vielversprechend aus. Ich werde es später mal testen, weiß nur nicht, ob ich das heute schaffe.

agmue

#5
Nov 17, 2017, 10:10 am Last Edit: Dec 06, 2017, 12:10 pm by agmue
Bitte hilf mir mal beim Verständnis von u.a. "TEXT[46][40]". Woher die 40? Es kann sein, dass noch ein paar Texte hinzukommen oder entfernt werden, daher muss ich das Programm später auch bearbeiten können.
Der längste von Dir angegebene Text "Motorschutz Schieber D hat ausgeloest" hat 37 Zeichen plus LineFeed, also 38, da lag 40 willkürlich gewählt in der Nähe.

Der Sketch soll nur zeigen, daß 46 Texte mit maximal 39 Buchstaben + '\0' in einen UNO hineinpassen. Das hatte HotSystems angezweifelt, geht aber. Erste Hürde genommen :)

Diese Texte kannst Du selbstverständlich auch bearbeiten.

Die Zeit ist da auch schon eingebunden?
Nein, die kommt ja aus einem Uhrenbaustein wie DS3231. Internet, Funk aus Frankfurt oder GPS gingen auch, macht die Sache aber komplizierter, kannst Du Dir für später aufheben.

Was mir noch unklar ist: Du schreibst von 46 Meldungen, hast mit acht Bits aber 255 Möglichkeiten. Wie geht das zusammen?
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Jannomag

Der längste von Dir angegebene Text "Motorschutz Schieber D hat ausgeloest" hat 37 Zeichen plus LineFeed, also 38, da lag 40 willkürlich gewählt in der Nähe.
Ich hab die Texte jetzt nicht im Kopf, kann sein, dass da auch längere bei sind. Wäre es denn einfach mit der Erhöhung der Zahl 40 möglich?


Was mir noch unklar ist: Du schreibst von 46 Meldungen, hast mit acht Bits aber 255 Möglichkeiten. Wie geht das zusammen?

255 Meldungen werden nicht benötigt und nicht genutzt.
Ich habe in Papierform uralte Dokumente vorliegen, wo 44 (ja, 44) Texte definiert werden. Insgesamt sind dort 96 Meldungen als möglich aufgelistet, jedoch leer gelassen. Wenn man nun der SPS sagt, eine Bit-Kombination auszugeben, die das Meldungs-IC nicht kennt, gibt es nur z.B. "Text Nr. 56" aus.

Das hat noch einen weiteren Nachteil, und jetzt komme ich auf die 46:
Vor 3 Jahren habe ich zwei Meldungen neu einprogrammiert, nach Kundenwunsch - das Betrifft einen Fehler in der Notauskette.
Wenn der Fehler auftritt, dann druckt der Drucker nur "Text Nr. 45" und "Text Nr. 46" aus. Die Kollegen wissen jedoch, worum es sich bei den Meldungen handelt, daher nicht so wild.

Die Möglichkeit der Nachpflege solcher Texte mit einem Arduino ist da natürlich ein riesiger Vorteil.



Die Definerung der Meldungen scheint ja also nicht so das große Problem darzustellen.

Wie sieht es da mit dem Speichern in einzelnen Dateien mit bestimmten Namen aus?
Die Protokolle müssen UNBEDINGT gespeichert werden, da diese enorm wichtig sind.
Da es aber in der Umweltabteilung meiner Firma liegt, wollen die natürlich auf Papier verzichten.
Aktuell werden etwa 7m Papier pro Monat ausgedruckt, wobei der Drucker immer knapp 10 Zeilen pro Meldung verbraucht und zwischen den Meldungen knapp 10 Zeilen Platz gelassen wird.

agmue

Ich hab die Texte jetzt nicht im Kopf, kann sein, dass da auch längere bei sind. Wäre es denn einfach mit der Erhöhung der Zahl 40 möglich?
Ja, durchaus. In Kombination mit 256 nur teilweise genutzten Texten wird dann aber schon eine Menge Programmspeicher verwendet (256 Texte mit 80 Zeichen):

Code: [Select]
const uint16_t TEXTZEILEN = 256, TEXTSPALTEN = 81;
const unsigned char TEXT[TEXTZEILEN][TEXTSPALTEN] PROGMEM = {
  {"123456789012345678901234567890123456789"},
  {"Text Nr. 1"},
  {"Text Nr. 2"},
  {"Text Nr. 3"},
  {"Text Nr. 4"},
  {"Text Nr. 5"},
  {"Text Nr. 6"},
  {"Text Nr. 7"},
  {"Text Nr. 8"},
  {"Text Nr. 9"},
  {"Text Nr. 10"},
  {"Text Nr. 11"},
  {"Text Nr. 12"},
  {"Text Nr. 13"},
  {"Text Nr. 14"},
  {"Text Nr. 15"},
  {"Text Nr. 16"},
  {"Text Nr. 17"},
  {"Text Nr. 18"},
  {"Text Nr. 19"},
  {"Text Nr. 20"},
  {"Text Nr. 21"},
  {"Text Nr. 22"},
  {"Text Nr. 23"},
  {"Text Nr. 24"},
  {"Text Nr. 25"},
  {"Text Nr. 26"},
  {"Text Nr. 27"},
  {"Text Nr. 28"},
  {"Text Nr. 29"},
  {"Text Nr. 30"},
  {"Text Nr. 31"},
  {"Text Nr. 32"},
  {"Text Nr. 33"},
  {"Text Nr. 34"},
  {"Text Nr. 35"},
  {"Text Nr. 36"},
  {"Text Nr. 37"},
  {"Text Nr. 38"},
  {"Text Nr. 39"},
  {"Text Nr. 40"},
  {"Text Nr. 41"},
  {"Text Nr. 42"},
  {"Text Nr. 43"},
  {"Text Nr. 44"},
  {"Text Nr. 45"},
  {"Text Nr. 46"},
  {"Text Nr. 47"},
  {"Text Nr. 48"},
  {"Text Nr. 49"},
  {"Text Nr. 50"},
  {"Text Nr. 51"},
  {"Text Nr. 52"},
  {"Text Nr. 53"},
  {"Text Nr. 54"},
  {"Text Nr. 55"},
  {"Text Nr. 56"},
  {"Text Nr. 57"},
  {"Text Nr. 58"},
  {"Text Nr. 59"},
  {"Text Nr. 60"},
  {"Text Nr. 61"},
  {"Text Nr. 62"},
  {"Text Nr. 63"},
  {"Text Nr. 64"},
  {"Text Nr. 65"},
  {"Text Nr. 66"},
  {"Text Nr. 67"},
  {"Text Nr. 68"},
  {"Text Nr. 69"},
  {"Text Nr. 70"},
  {"Text Nr. 71"},
  {"Text Nr. 72"},
  {"Text Nr. 73"},
  {"Text Nr. 74"},
  {"Text Nr. 75"},
  {"Text Nr. 76"},
  {"Text Nr. 77"},
  {"Text Nr. 78"},
  {"Text Nr. 79"},
  {"Text Nr. 80"},
  {"Text Nr. 81"},
  {"Text Nr. 82"},
  {"Text Nr. 83"},
  {"Text Nr. 84"},
  {"Text Nr. 85"},
  {"Text Nr. 86"},
  {"Text Nr. 87"},
  {"Text Nr. 88"},
  {"Text Nr. 89"},
  {"Text Nr. 90"},
  {"Text Nr. 91"},
  {"Text Nr. 92"},
  {"Text Nr. 93"},
  {"Text Nr. 94"},
  {"Text Nr. 95"},
  {"Text Nr. 96"},
  {"Text Nr. 97"},
  {"Text Nr. 98"},
  {"Text Nr. 99"},
  {"Text Nr. 100"},
  {"Text Nr. 101"},
  {"Text Nr. 102"},
  {"Text Nr. 103"},
  {"Text Nr. 104"},
  {"Text Nr. 105"},
  {"Text Nr. 106"},
  {"Text Nr. 107"},
  {"Text Nr. 108"},
  {"Text Nr. 109"},
  {"Text Nr. 110"},
  {"Text Nr. 111"},
  {"Text Nr. 112"},
  {"Text Nr. 113"},
  {"Text Nr. 114"},
  {"Text Nr. 115"},
  {"Text Nr. 116"},
  {"Text Nr. 117"},
  {"Text Nr. 118"},
  {"Text Nr. 119"},
  {"Text Nr. 120"},
  {"Text Nr. 121"},
  {"Text Nr. 122"},
  {"Text Nr. 123"},
  {"Text Nr. 124"},
  {"Text Nr. 125"},
  {"Text Nr. 126"},
  {"Text Nr. 127"},
  {"Text Nr. 128"},
  {"Text Nr. 129"},
  {"Text Nr. 130"},
  {"Text Nr. 131"},
  {"Text Nr. 132"},
  {"Text Nr. 133"},
  {"Text Nr. 134"},
  {"Text Nr. 135"},
  {"Text Nr. 136"},
  {"Text Nr. 137"},
  {"Text Nr. 138"},
  {"Text Nr. 139"},
  {"Text Nr. 140"},
  {"Text Nr. 141"},
  {"Text Nr. 142"},
  {"Text Nr. 143"},
  {"Text Nr. 144"},
  {"Text Nr. 145"},
  {"Text Nr. 146"},
  {"Text Nr. 147"},
  {"Text Nr. 148"},
  {"Text Nr. 149"},
  {"Text Nr. 150"},
  {"Text Nr. 151"},
  {"Text Nr. 152"},
  {"Text Nr. 153"},
  {"Text Nr. 154"},
  {"Text Nr. 155"},
  {"Text Nr. 156"},
  {"Text Nr. 157"},
  {"Text Nr. 158"},
  {"Text Nr. 159"},
  {"Text Nr. 160"},
  {"Text Nr. 161"},
  {"Text Nr. 162"},
  {"Text Nr. 163"},
  {"Text Nr. 164"},
  {"Text Nr. 165"},
  {"Text Nr. 166"},
  {"Text Nr. 167"},
  {"Text Nr. 168"},
  {"Text Nr. 169"},
  {"Text Nr. 170"},
  {"Text Nr. 171"},
  {"Text Nr. 172"},
  {"Text Nr. 173"},
  {"Text Nr. 174"},
  {"Text Nr. 175"},
  {"Text Nr. 176"},
  {"Text Nr. 177"},
  {"Text Nr. 178"},
  {"Text Nr. 179"},
  {"Text Nr. 180"},
  {"Text Nr. 181"},
  {"Text Nr. 182"},
  {"Text Nr. 183"},
  {"Text Nr. 184"},
  {"Text Nr. 185"},
  {"Text Nr. 186"},
  {"Text Nr. 187"},
  {"Text Nr. 188"},
  {"Text Nr. 189"},
  {"Text Nr. 190"},
  {"Text Nr. 191"},
  {"Text Nr. 192"},
  {"Text Nr. 193"},
  {"Text Nr. 194"},
  {"Text Nr. 195"},
  {"Text Nr. 196"},
  {"Text Nr. 197"},
  {"Text Nr. 198"},
  {"Text Nr. 199"},
  {"Text Nr. 200"},
  {"Text Nr. 201"},
  {"Text Nr. 202"},
  {"Text Nr. 203"},
  {"Text Nr. 204"},
  {"Text Nr. 205"},
  {"Text Nr. 206"},
  {"Text Nr. 207"},
  {"Text Nr. 208"},
  {"Text Nr. 209"},
  {"Text Nr. 210"},
  {"Text Nr. 211"},
  {"Text Nr. 212"},
  {"Text Nr. 213"},
  {"Text Nr. 214"},
  {"Text Nr. 215"},
  {"Text Nr. 216"},
  {"Text Nr. 217"},
  {"Text Nr. 218"},
  {"Text Nr. 219"},
  {"Text Nr. 220"},
  {"Text Nr. 221"},
  {"Text Nr. 222"},
  {"Text Nr. 223"},
  {"Text Nr. 224"},
  {"Text Nr. 225"},
  {"Text Nr. 226"},
  {"Text Nr. 227"},
  {"Text Nr. 228"},
  {"Text Nr. 229"},
  {"Text Nr. 230"},
  {"Text Nr. 231"},
  {"Text Nr. 232"},
  {"Text Nr. 233"},
  {"Text Nr. 234"},
  {"Text Nr. 235"},
  {"Text Nr. 236"},
  {"Text Nr. 237"},
  {"Text Nr. 238"},
  {"Text Nr. 239"},
  {"Text Nr. 240"},
  {"Text Nr. 241"},
  {"Text Nr. 242"},
  {"Text Nr. 243"},
  {"Text Nr. 244"},
  {"Text Nr. 245"},
  {"Text Nr. 246"},
  {"Text Nr. 247"},
  {"Text Nr. 248"},
  {"Text Nr. 249"},
  {"Text Nr. 250"},
  {"Text Nr. 251"},
  {"Text Nr. 252"},
  {"Text Nr. 253"},
  {"Text Nr. 254"},
  {"Text Nr. 255"},
};

void setup()
{
  Serial.begin(9600);
  for (uint16_t z = 0; z < TEXTZEILEN; z++) {
    for (uint16_t s = 0; s < TEXTSPALTEN; s++) {
      char zeichen = pgm_read_byte(&(TEXT[z][s]));
      if (zeichen >= ' ') {
        Serial.print(zeichen);
      }
    }
    Serial.println();
  }
}

void loop(){}


Der Sketch verwendet 22.580 Bytes (70%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes.
Globale Variablen verwenden 200 Bytes (9%) des dynamischen Speichers, 1.848 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.

Erstelle mal die komplette Liste, dann hat man konkrete Werte für ein Konzept. Möglicherweise kann man die ganz langen Texte etwas kürzen.

Wie sieht es da mit dem Speichern in einzelnen Dateien mit bestimmten Namen aus?
Prinzipiell kein Problem, macht die Bibliothek SdFat auch mit längeren Dateinamen.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Tommy56

Am Besten aus JahrMonatTag einen Teil des Dateinamens bilden, wie z.B. log_20171117.txt

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

ArduFE

Die Protokolle müssen UNBEDINGT gespeichert werden, da diese enorm wichtig sind.
Ich denke da wird es mindestens nötig sein ein Display oder eine andere Art von "Lebenszeichen" vorzusehen ?

In dem anderen Thread hieß es die Signale kommen von einer SPS. Da wird man eine solide Form der Pegelwandlung vorsehen müssen, wenn das 24 V Signale sind. Damit nicht ein Überspannungsimpuls den Arduino killt. Eventuell wäre das auch was für einen "Controllino" das sind fertige Arduino Module im Hutschienengehäuse, mit eingebauter 24 V Pegelwandlung. Da gibt es auch Modelle mit eingebauter RTC, meines Wissens nach aber keins mit eingebautem SD-Slot. Es gibt sie aber mit eingebautem Ethernet, da könnte man die Daten auch auf einen Server schreiben. Der könnte auch auf Ausfälle überwachen ...


Muss das Ding irgenwie zertifiziert werden ? Eventuell macht eine zweite modernere SPS mit Speicherkartenmodul eher Sinn.

Wenn man viel Speicher braucht und sowieso die Eingänge über Pegelwandler kommen, könnte man auch den Teensy 3.5 (oder 3.6) in Betracht ziehen, da wären auch Micro-SD Slot und eine RTC direkt schon vorhanden.

agmue

Bei "24V" und "Pegelwandlung" fallen mir gleich Optokoppler ein, da zusätzlich noch eine galvanische Trennung möglich wird.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Jannomag

So, sorry für die späte Antwort, jedoch wollte ich meinen Urlaub mal genießen.

Danke auch für die Antworten.

Erstelle mal die komplette Liste, dann hat man konkrete Werte für ein Konzept. Möglicherweise kann man die ganz langen Texte etwas kürzen.
Prinzipiell kein Problem, macht die Bibliothek SdFat auch mit längeren Dateinamen.

Kann ich erst Ende nächster Woche, da ich dann erst wieder in der Firma bin. Hoffentlich finde ich Zeit dafür.
Durchaus kann man einige Texte kürzen, diese sind nicht im Wortlaut wichtig sondern nur in der Bedeutung.



Ich denke da wird es mindestens nötig sein ein Display oder eine andere Art von "Lebenszeichen" vorzusehen ?

In dem anderen Thread hieß es die Signale kommen von einer SPS. Da wird man eine solide Form der Pegelwandlung vorsehen müssen, wenn das 24 V Signale sind. Damit nicht ein Überspannungsimpuls den Arduino killt. Eventuell wäre das auch was für einen "Controllino" das sind fertige Arduino Module im Hutschienengehäuse, mit eingebauter 24 V Pegelwandlung. Da gibt es auch Modelle mit eingebauter RTC, meines Wissens nach aber keins mit eingebautem SD-Slot. Es gibt sie aber mit eingebautem Ethernet, da könnte man die Daten auch auf einen Server schreiben. Der könnte auch auf Ausfälle überwachen ...


Muss das Ding irgenwie zertifiziert werden ? Eventuell macht eine zweite modernere SPS mit Speicherkartenmodul eher Sinn.

Wenn man viel Speicher braucht und sowieso die Eingänge über Pegelwandler kommen, könnte man auch den Teensy 3.5 (oder 3.6) in Betracht ziehen, da wären auch Micro-SD Slot und eine RTC direkt schon vorhanden.
Controllino wurde mir auch schonmal gesagt. Wäre eine Idee, möglich ist es. Jedoch muss vorher das Programm auf einem Uno laufen, da ich den Kram bereits zu Hause liegen hab.
Erst, wenn das alles zu 100% läuft, kann ich mir um die Hardware Gedanken machen - denn die ist ja das geringste Problem.

SPS ist zu teuer und ich hab auch nicht die Möglichkeiten die zu Programmieren. Da meine Firma, bzw. meine Abteilung, nicht mit SPS arbeitet, haben wir weder die Kabel noch die Software dafür.
Daher warte ich auch mal auf einen "Crash" der SPS um zu sehen, was dann passiert...


Wegen den 24V hab ich mir eine Transistor-Schaltung erdacht.
Als REG1 schwebt mir ein LM7805 vor, Transistoren probiere ich noch aus. Basiswiderstände hab ich in der Schaltung vergessen, sind aber auf dem Platinenlayout drauf.
Oben sind die 24V Ausgänge der SPS, unten die Eingänge des Arduinos.
Die LEDs dienen lediglich zur Funktionskontrolle.
Grund für diese Schaltung ist wieder, dass ich fast alles dafür da hab. Der 7805 kostet selbst bei Conrad nicht viel und ist daher jeder Zeit für mich erreichbar.

agmue

Benötigen die LEDs nicht Vorwiderstände und die Ausgänge (DIGITAL) je einen PullDown-Widerstand?

Zweimal vier Optoloppler in einem IC, versorgt von 5V des UNO, fände ich einfacher.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Jannomag

Benötigen die LEDs nicht Vorwiderstände und die Ausgänge (DIGITAL) je einen PullDown-Widerstand?

Zweimal vier Optoloppler in einem IC, versorgt von 5V des UNO, fände ich einfacher.
R1 ist der Widerstand für die LEDs.

Die PullDown-Widerstände hab ich vergessen, das stimmt...die vergesse ich jedes Mal, wenn ich mit Arduino arbeite, da ich nicht verstehe, warum Arduino die braucht und das nicht anders gelöst wurde :D

Welche ICs meinst du? Optokoppler habe ich auch schon in Betracht gezogen, jedoch wegen der vorhandenen Bauteile zu Hause erstmal nicht eingeplant.

agmue

R1 ist der Widerstand für die LEDs.
Ich habe gelernt, jede LED braucht ihren eigenen Widerstand.

Welche ICs meinst du?
Ich habe mal bei Conrad, weil von Dir erwähnt, nach Optokopplern gesucht und vier in einem IC gefunden. Was Du auswählst, ist eine Frage der passenden Spezifikation und des Preises.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Go Up