Hilfe zu Programmierung

OP #1438596
Lesenswert?

Hallo,

ich habe das Problem, dass ich in kürze mein Abschlussprojekt bearbeiten 
muss. In dem Projekt kommt die Automatisierung eines Ablaufes vor, 
welchen ich als Mechatroniker normalerweise mit einer einfachen SPS 
realisieren würde. Jetzt darf ich aber aus Mobilitäts- und Platzgründen 
keine S7 einbauen, sondern soll die Steuerung anhand eines 
Microcontrollers realisieren.

Nur ich hab 0 Ahnung von der Programmierung in C bzw vom Anschluss eines 
solchen Microcontrollers.



Weiss jemand ob es die Möglichkeit gibt, eine AWL Programmierung aus S7 
einfach in C zu übersetzen? Oder gibt es vielleicht jemanden der mir 
geren dabei helfen würde?



Ich habe auch schon versucht mir C beizubringen aber habe gleich 
gemerkt, dass die Zeit zu knapp ist um ein vernünftiges Ergebniss zu 
erzielen. Mit etwas Hilfe von euch werd ich es aber bestimmt packen.

Wer interesiert ist, mir etwas zu helfen oder sonstige Tipps für mich 
hat, bitte bitte melden!



LG
Gast #1438608
Lesenswert?

Bist Du ganz sicher das Du die Aufgabenstellung richtig verstanden hast?
Ist es heute üblich Auszubildende so vor vollendete Tatsachen zu 
stellen?

Als ich damals Energieelektronikler/Anlagentechnik lernte (gibts ja auch 
schon nicht mehr), da war an C überhaupt nicht zu denken (zumindest 
nicht bei Prüfungen).

Gruss Mücke


p.s.: Meines Erachtens ist Mikrocontrollerprogrammierung auch nicht 
Aufgabe eines Mechatronikers oder?
#1438782
Lesenswert?

Yannick Frank schrieb:

> Ich habe auch schon versucht mir C beizubringen aber habe gleich
> gemerkt, dass die Zeit zu knapp ist um ein vernünftiges Ergebniss zu
> erzielen.

Habe mich jetzt ein bischen über AWL schlau gemacht.
Das sieht eigentlich ziemlich simpel aus:
  Es gibt einen Akku
  Operationen arbeiten auf diesem Akku
  komplexere Strukturierungsmöglichkeiten gibt es keine

Sobald du die Hürde gemeistert hast, den I/O Teil deines Prozessors 
anzusprechen, sollte das Umsetzen eines AWL Programms in C eigentlich 
nicht sooo schwer sein, wenn du exakt weißt was welcher Befehl genau 
macht.
Wobei sich natürlich die Frage stellt, ob man in C eine AWL 'emulieren' 
soll, oder ob man das gleich vernünftig macht.
1
    LD  INPUT1
2
    AND INPUT2
3
    ST  OUTPUT1

kann man in C natürlich so schreiben
1
int main()
2
{
3
  uint8_t Akku;
4

5
  ...
6
  // Ports korrekt auf Ein / Ausgabe konfigurieren
7
  ...
8

9
  while( 1 ) {
10
    Akku = INPUT1;
11
    Akku = Akku & INPUT2;
12
    OUTPUT1 = Akku;
13
  }
14
}

(mit geeigneten Makros für INPUT1, INPUT2 und OUTPUT)
man würde as aber in C kanonischer schreiben als ...
1
int main()
2
{
3
  ...
4
  // Ports korrekt auf Ein / Ausgabe konfigurieren
5
  ...
6

7
  while( 1 ) {
8
    OUTPUT1 = INPUT1 & INPUT2;
9
  }
10
}

... und den Akku komplett links liegen lassen, denn man kann ja 
schliesslich arithemtisch/logische Ausdrücke so schreiben, das links vom 
= eine 'Variable' steht, welche das Ergebnis aufnimmt und rechts vom = 
ein beliegib aufgebauter arithmetischer Ausdruck, der nicht von ungefähr 
an die Formelschreibweise der Mathematiker erinnert.

    i = 8 * 5 + 7;

ist nun einmal leichter zu lesen (und auch zu schreiben) als ...

     LD    8
     LD    5
     *R
     LD    7
     +R
     ST    i

(keine Ahnung ob dieses AWL in der Syntax korrekt ist)
... wo man sich auch noch um die richtige Auswertereihenfolge (Punkt vor 
Strich Rechnung) selber kümmern muss.

Klar wird es da noch ein paar AWL Spezialitäten geben, die sich nicht so 
trivial umsetzen lassen aber das hängt dann natürlich auch von der zu 
lösenden Aufgabe ab
Gast #1439361
Lesenswert?

Danke erst einmal für die zahlreichen und schnellen Antworten!

Die Mikrocontrollerprogrammierung hat nichts mit dem Ausbildungsinhalt 
eines Mechatronikers zu tun.
Es handelt sich um die Umsetzung eines betrieblichen Auftrages und meine 
Prüfung wird ein Teil dieses Gesamtauftrages, wobei ich natürlich den 
Mikrocontroller nicht beachte.
Es wurde im Auftrag die Herausforderung gestellt den Ablauf über eine 
"kompakte Elektronik" zu realisieren und so bin ich auf den 
Mikrocontroller gekommen.

Zur Beschreibung des Programmes an sich:

3 Spannungen sollen miteinander verglichen werden, je nachdem welche am 
größten ist, fährt ein Schlitten eine von 3 Positionen an und verweilt 
dort, bis eine andere Position ermittelt wurde.
Der Vergleich findet alle 30min statt. Zusätzlich sollen über den 
Mikrocontroller noch weitere Ausgabefunktionene, wie zum Beispiel das 
Anzeigen eines analogen Spannungswertes auf einem LCD-Display statt 
finden.

Ich werde mal versuchen mich in BASCOM einzuarbeiten und die weiteren 
Tipps zu befolgen!

Danke!
#1439540
Lesenswert?

Yannick F. schrieb:

> Zur Beschreibung des Programmes an sich:
>
> 3 Spannungen sollen miteinander verglichen werden, je nachdem welche am
> größten ist, fährt ein Schlitten eine von 3 Positionen an und verweilt
> dort, bis eine andere Position ermittelt wurde.
> Der Vergleich findet alle 30min statt. Zusätzlich sollen über den
> Mikrocontroller noch weitere Ausgabefunktionene, wie zum Beispiel das
> Anzeigen eines analogen Spannungswertes auf einem LCD-Display statt
> finden.

Na ja, das ist ja nicht gerade Raketentechnik.
Das schwierigste dürfte sein, die 30 Minuten einigermassen genau 
hinzukriegen :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren