Es geht um eine Pumpensteuerung für eine Zentrifuge.
Es soll die Pumpe 1 & Ventil 1 für 30 min angesteuert werden.
Danach soll Pumpe 2 & Ventil 2 für 30 min angesteuert werden und dann wieder mit Pumpe 1 & Ventil 1 starten.
Ich bin Anfänger und es ist das erste Mal das ich mit Arduino programmiere. Ich habe folgenden Code schon mal geschrieben, aber ich schaffe es nicht, dass die Ausgänge für längere Zeit an sind.
Bitte um eure Hilfe.
int Auto = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(PI_4, OUTPUT); //Pumpe_2
pinMode(PI_5, OUTPUT); //Pumpe_1
pinMode(PI_3, OUTPUT); //Ventil_1
pinMode(PH_15, OUTPUT); //Ventil_2
pinMode(PF_6, INPUT); // Automatik_Switch
}
void loop() {
Serial.println(Auto);
Auto = digitalRead(PF_6); //Switch ON
if (Auto == 1) {digitalWrite(PI_5, HIGH);} // Pumpe_1 ON
if (Auto == 1) {digitalWrite(PI_3, HIGH);} // Ventil_1 ON
delay(1000);
if (Auto == 1) {digitalWrite(PI_5, LOW);} // Pumpe_1 ON
if (Auto == 1) {digitalWrite(PI_3, LOW);} // Ventil_1 ON
delay(1000);
Auto = digitalRead(PF_6);
if (Auto == 1) {digitalWrite(PI_4, HIGH);} // Pumpe_2 OFF
if (Auto == 1) {digitalWrite(PH_15, HIGH);} // Ventil_2 OFF
delay(1000);
if (Auto == 1) {digitalWrite(PI_4, LOW);} // Pumpe_2 OFF
if (Auto == 1) {digitalWrite(PH_15, LOW);} // Ventil_2 OFF
delay(1000);
}
Guten Morgen,
Vielen Dank für deine schnelle Hilfe.
Hab den Code mal kompiliert, es wird mir die Fehlermeldung
error: 'automatikStart' was not declared in this scope
automatikStart = millis();
^~~~~~~~~~~~~: suggested alternative: 'automatik'
automatikStart = millis();
^~~~~~~~~~~~~~
automatik
error: 'automatikStart' was not declared in this scope
if (millis() - automatikStart < laufzeit)
^~~~~~~~~~~~~~
: note: suggested alternative: 'automatik'
if (millis() - automatikStart < laufzeit)
^~~~~~~~~~~~~~
automatik
: error: 'automatikstart' was not declared in this scope
else if (millis - automatikstart < laufzeit * 2)
^~~~~~~~~~~~~~
note: suggested alternative: 'automatik'
else if (millis - automatikstart < laufzeit * 2)
^~~~~~~~~~~~~~
automatik
exit status 1
Compilation error: 'automatikStart' was not declared in this scope
Hab die Fehler mal behoben es klappt soweit. Vielen Dank
Nur das Auschalten klappt nicht ganz. Wenn der Schalter LOW ist Startet ja der Automatik-Mode und wenn er HIGH ist der Manuell-Mode. Das ist soweit schon mal OK für mich. Aber im
Manuell-Mode sollten ja die Ausgänge auf LOW geschaltet sein damit man die Pumpen auschalten kann. Aber je nachdem welcher Eingang HIGH war bleibt auf HIGH geschalten.
Naja, war ja nicht so schlimm... Ich ätt es noch ausgebaut, aber wenns geht, dann ist ja gut.
Sagst Du mal bitte, was für eine Boarddefinition Du benutzt?
Board Definition? Meinst du möglicherweise Arduino Uno?
Das Programm wird ja noch mehr ausgebaut.
Aber so wie es ist jetzt ist, wird es mal als Testprogramm verwendet, um die Anlage zu testen.
Es werden ja noch 2 Ultraschallsensoren verbaut, um die Wasserstände zu messen und die Pumpen und Ventile zu schalten.
Damit geht hochladen auf die Finder?
Das glaub ich nicht den die Finder kann auch OTA, also ist was Anderes eingebaut als ATmega 328
Ok Programmieren kann man damit, aber ob das funktioniert auf der Finder ist andere Sache
Au, da wird uns noch einiges ereilen.
Die versuchen dem Controllino Konkurenz zu machen und haben den Portenta auf Hutschine gebaut
Gibt sogar eine eigene IDE für die PLC-Programmierung. (@Rentner vielleicht auch was für Dich? Du kommst doch da aus der Ecke, wenn mich nicht alles täuscht )
Wenn jetzt noch der neue UNO kommt, dann werden sich auch hier einige Fragenzeichen auftun...
Muss ich sagen kluger Schachzug Wahrscheinlich zusammen mit Finder entwickelt, Lizenz nur 16€ und Gerät fast umsonst
Also schätze mall da bekommt Siemens, Schneider (Telemecanique) und Andere leichte Probleme. @my_xy_projekt kannst langsam PLC lernen
Bei C und C++ geht das auch, also
Deshalb zeige meine Ergusse nicht, Hauptsache es funktioniert, einziges bei Displayansteuerung kann ich mir das nicht erlaben, ist sofort sichtbar
Hallo,
das stimmt schon. PLC ist halt schon eine andere Welt .
Ich hab mal einen Blick auch die Doko aus dem Link #13 geworfen. Sieht ziemlich nach IEC aus, inklusive Symbolischer Namen für E/A. Deshalb sicher auch die eigene IDE zur grafischen Darstellung der Logik und Funktionsblöcke Wenn man jetzt was mit viel logischen Veknüpfungen machen will könnte es Sinn machen sowas zu nutzen. Allerdings wird man sich da komplett reinarbeiten müssen. Ich hab da erst mal keinen Bedarf.
Wenn ich was logisch zu verknüpfen habe geht das auch mit einem Sack bool Variable und den bekannten logischen Verknüpfungen. So tief kann die Verknüpfungstiefe gar nicht sein denke ich.
Warum hälts du dich nicht nach den Beispielen?
Dort gibt es keine PI_4, wen du schon ein eignen Namen vergibts muss der auch deklariert werden.
Die Relais hängen doch auf DO bis D3.
/**
Getting Started with Opta™
Name: Output_Relay_Opta
Purpose: Test output relays of the Opta™.
@author Arduino
*/
void setup() {
// Initialize Relays outputs
pinMode(D0, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
// Initialize Opta LEDs
pinMode(LED_D0, OUTPUT);
pinMode(LED_D1, OUTPUT);
pinMode(LED_D2, OUTPUT);
pinMode(LED_D3, OUTPUT);
}
void loop() {
// Closes and opens the contact of relay 1 and turns on/off led 1
digitalWrite(D0, HIGH); // Sets the relay 1 on
digitalWrite(LED_D0, HIGH);
delay(1000);
digitalWrite(D0, LOW); // Sets the relay 1 off
digitalWrite(LED_D0, LOW);
delay(1000);
// Closes and opens the contact of relay 2 and turns on/off led 2
digitalWrite(D1, HIGH); // Sets the relay 2 on
digitalWrite(LED_D1, HIGH);
delay(1000);
digitalWrite(D1, LOW); // Sets the relay 2 off
digitalWrite(LED_D1, LOW);
delay(1000);
// Closes and opens the contact of relay 3 and turns on/off led 3
digitalWrite(D2, HIGH); // Sets the relay 3 on
digitalWrite(LED_D2, HIGH);
delay(1000);
digitalWrite(D2, LOW); // Sets the relay 3 off
digitalWrite(LED_D2, LOW);
delay(1000);
// Closes and opens the contact of relay 4 and turns on/off led 4
digitalWrite(D3, HIGH); // Sets the relay 4 on
digitalWrite(LED_D3, HIGH);
delay(1000);
digitalWrite(D3, LOW); // Sets the relay 4 off
digitalWrite(LED_D3, LOW);
delay(1000);
}
Bin gerade an der OPTA Installation. Na ja Kompilieren tut es trotz mM. falscher Deklaration
Für Interessierte OPTA Pinout. @kev_1992 Wen man schon Programm für definierte Hardware schreibt (OPTA) sollte man die Pin Bezeichnung benutzen, nicht Procesor Pin Namen