hilfe bei programmieraufgabe?

bolle
2007-07-02
2007-07-04
  • bolle - 2007-07-02

    hallo an alle =)

    haett da ein kleines problem

    in meinem sps-kurs haben wir vor kurzem eine progammieraufgabe bekommen.es geht grob gesagt um ein förderband auf denen verschiedene pakete bis in einen bestimmten bereich (ident station) gefahren werden dort stoppt das band und indentifiziert das paket als typ A ,B oder Fehler(=fehlerhaft) Nach der erkennung wird das einzelne paket auf einen tisch weiterbefördert der je nach typ entweder nach links rechts oder noch vorn kippt.

    mein problem is des ich natuerlich kein reelles förderband sondern stattdessen einen datenstrom erzeugen soll der eine abfolge von paketen simuliert und sich zyklisch wiederholen soll.

    wie mach ich das ,bin total ratlos wie ich sowas anstell?????

    ich kopier einfach mal diese teilaufgabe rein

    und hoffe ihr koennt mir helfen

    Teilaufgabe 2 – Ident-Station

    Simulieren Sie die Funktion der Ident-Station und des Förderbandes, indem Sie in einem Funktionsbaustein in einem angemessen Taktzeitraster einen fortlaufenden Datenstrom erzeugen, der eine Reihenfolge von Teilen A, B oder „fehlerhaft“ signalisiert. Der fortlaufende Datenstrom kann z. B. durch zyklische Wiederholung eines Datenarrays „A A A B B „Fehler“ B B B A“ erzielt werden.Bedenken Sie bei der Erstellung Ihrer Simulation, dass hier die Funktion des Förderbandes einfließt. Der Datenstrom sollte sich also starten und stoppenlassen.

    Erstellen Sie zu diesem Steuerungsablauf einen Funktionsbaustein in einer

    IEC-Programmiersprache Ihrer Wahl.

    Die Verwendung von globalen Variablen in Funktionsbausteinen ist nicht

    gruss bolle

     
  • Erik Böhm - 2007-07-02

    Moin

    Als kleine Anregung ein Projekt anbei das den Datenstrom erzeugt.

    Gruss Erik

    DataStream.zip [4.46 KiB]

     
  • bolle - 2007-07-02

    hi erki

    wo denn???

    du hast den anhang vergessen

    bolle

     
  • bolle - 2007-07-02

    passt scho war nur net eingeloggt

    schaem

    =)

     
  • Erik Böhm - 2007-07-03

    Moin

    Und ? Hats weitergeholfen ?

     
  • bolle - 2007-07-03

    hi erik =)

    ja doch war ein sehr grosse hilfe

    jetzt weiss ich zumindest welche befehl ich dafuer brauch.

    aber wie mach ichs des das ich einen array erzeug mit der abfolge affbababbbfaabf , den stück fuer stück durchlaufe und ihn dann wieder von vorne beginnen lasse???also kurzgesagt wie kann ich die einzelnen stellen eines arrays ansprechen???

    ausserdem bin ich mir net ganz sicher was diese befehlszahlen einzeln genau bedeuten sollen???

    (die kommentare sind zwar sehr hilfreich aber wenns um die einzelenen befehle geht kann ich nur von der wortbedeutung erahnen wozu sie da sind)

    danke im vorraus fuer die hilfe!

     
  • Erik Böhm - 2007-07-03

    Hallo

    Also das Besipiel macht ja eigentlich genau dieses. Das Array wird bereits bei der Deklaration initialisiert (also mit Inhalt befüllt)

    Siehe Deklarationsteil Zeile 12.


    Hast Du schon mal einen Befehl (Schlüsselwort in BLAU) markiert und dann F1 gedrückt ?

    Da passieren manchmal die tollsten Dinge

    Und der einzigste Befehl der da benutzt wird ist ein IF...


    Zugriff auf ein Element eines ARRAYS funktioniert so:

    0010 | siPacketState := asiStateSimulationArray[i];

    Der Variable "siPacketState" wird der Inhalt des ARRAY Elements [i] zugewiesen. Wobei i eine Zahl zwischen 1..20 sein MUSS. Das ist die definierte Grösse des Arrays.

    Ebenfalls siehe Deklarationsteil Zeile 12.


    Und mal nur so nebenbei: Was habt ihr eigentlich bisher in der Schule gelernt ? Papierflieger falten ?

    Gruss

    Erik

     
  • Erik Böhm - 2007-07-03

    Noch was.

    Falls Du die Aufgabenstellung wirklich wörtlich nimmst und ein Array mit A, B, usw. befüllen willst, dann geht das (unter anderem auch) so:

    astrTest: ARRAY[1..20] OF STRING(1) := 'A','B','B','A',' ', 'F','O','R','E','V', 'E','R';

    Das halte ich aber für reichlich ungeschickt und glaube auch nicht dass das vom Aufgabensteller so gedacht war.

    Und im grössten Notfall hast Du ja meine Telefonnummer / Mail Adresse.

     
  • bolle - 2007-07-03

    passt jetzt hab ich auch verstanden

    jo

    papierflieger war mein leistungskurs

    ne ohne witz

    wir haben halt gelernt was arrays und schleifen sind und andere programmiertechniken aber eben in anderen porgrammiersprachen.der sps kurs war ein freiwilliges nebenfach und deswegen nich wirklich ausfuehrlich^^

    keine angst werd mich demnächste eh fuer nen sps-kurs anmelden

    by the way

    kannst mir da einen empfehlen???

    einen fuer relativ fortgeschrittenen wos nich nochmal so sachen wie schleifenstrukturen oder boolsche algebra erklären oder so sachen wie dnf und knf,des kann ich nämlich schon und wenn ich schon 500euro zahl naja........

     
  • Erik Böhm - 2007-07-04

    Moin

    Empfehlen kann ich da leider nichts. Ich hab nie einen Kurs gemacht.

    Learning by doing...

    3S bietet auch diverse Kurse an.

    Das Buch SPS-Programmierung bach IEC 61131-3 ist ganz gut.

    ISBN 3-7723-5801-2

    Bei CoDeSys solltest du dir auch vorab schon mal überlegen in welcher Programmiersprache du bevorzugt arbeiten willst. Wir benutzen mittlerweile ausschliesslich ST. Auch meine Kollegen die vorher in AWL programmiert haben sind auf ST umgestiegen.

    Gruss

    Erik

    PS: Ich bin ab heut ne Woche in Dänemark. Kuck also vermutlich erst danach wieder hier rein.

     

Log in to post a comment.