Step 7 Programmierhilfe FUP

Heute nachdem ich die neue CPU genommen habe, ist bei mir Start 1 und Start 2 und Ausgangszähler rot.
TIA meint ich soll diese Operanten definieren.
Was mache ich schon wieder falsch.
Du hast andere Variablen definiert/deklariert, als Du im Programmcode verwendet hast:
In der Schnittstelle steht "Start 1", "Start 2" und Ausgangszähler (also mit Leerzeichen bzw. Umlaut), während es im Programmcode "Start1", "Start2" und "Ausgangszaehler" (ohne Leerzeichen bzw. mit ae) geschrieben ist.
Für die SPS ist das ein riesen Unterschied!




Habe z.B. EIngang I124.0 eingegebn aber der nimmt den nicht.
Was mache ich schon wieder falsch.
Den Eingang gibt es bei Deiner projektierten SPS nicht. Das kannst Du auf dem 3. Bild unten in der Geräteübersicht bei den E- und A-Adressen nachlesen:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Ich habe ein Problem bei der Simu.

Also ich habe jetzt einfachmal bei Start1 und Start2 irgendwelche beliebigen EIngänge ( E124.0 und E124.1) verwendet. Da ich V11 habe und somit keine 1500 CPU verwenden kann habe ich eine 414 ner CPU genommen.
Anstatt den Taktmerker habe ich jetzt einfachmal E124.4 genommen und takte die ganze Sache zum probieren selber.
Aber irgendwie will das nicht funktioniren.
Darf ich das eigentlich schon mit den Eingängen machen? Oder muss z.B. Start1 als Eingang davor irgendwie definiert werden?

Anhang anzeigen 21729

Anhang anzeigen 21730


@SoftMachine

Was willst du jetzt damit zum Ausdruck bringen?

LG

EMZ
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Besser den Main beobachten, wo man die Ein- und Ausgänge des FBs ständig sieht.
Im FB selber sind sie wegen der Flankenauswertung immer nur einen Zyklus High. Zu kurz, zum Beobachten. Oder den Simulator immer nur einen Zyklus weiterschalten lassen.
 
Auf der Karte sind ja weder mein noch Dein Dorf verzeichnet.
:(

Meins allerdings nur (nicht), weil's hinter der Legende abgetarnt ist.
:p


PS: Mußte gerade feststellen, dass Du ja soviele Nachbarn hast, das Dein Dorf sich "schon" Großstadt nennen darf. Das war mir bis dato gar nicht bewußt.




Achja, sorry für den OT, aber soviel Zeit muss sein.
 
Also ich habe folgenden Problem:

da ich aus irgendwelchen Gründen meinen Merker (400er CPU) nicht wie bei Step 7 laufen lassen bzw. takten kann, takte ich über einen Eingang manuell.
Dabei ist es so, dass ich einmal 100 Impulse erzeuge, der Ausgang bei mir gesetzt wird, aber nach 4 Impulsen nicht mehr zurückgesetzt wird.
Woran kann es liegen ?
Theoretisch ist es ja egal, ob ich bei der Simulation mit einem Taktmerker die Impulse zählen lasse, oder selber über einen Eingang die Impulse auf den Takteingang des DB´s takte.
Ich habe auch mal den merkerbyte von z.b. "100" auf "10" unprogrammiert aber, getaktet wird trotzdem nicht.

siehe Bild

SCL Simulation.jpg

http://www.bilder-upload.eu/show.php?file=bd069b-1379444915.png

Woran kann es denn liegen?


@SoftMachine

wenns so ist, will ich auch gern ein Harzer sein :D


LG
EMZ
 
Zuletzt bearbeitet:
Was auch immer Du machst, das Bild geht zumindest bei mir schon wieder nicht.


Ob Du per Hand taktest oder über einen Taktmerker sollte keinen Unterschied machen.

Hast Du die Starteingänge auch nach einem Takt wieder ausgemacht?
(Start1 und Start2 werden nicht auf Flanke abgefragt, sondern nur, ob sie nach dem letzten Schieben beide wieder/noch an sind.)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß selber nicht woran es liegt.

Habe es diesmal noch über einen externen Link hochgeladen.

Warum funktioniert eigentlich mein taktmerker nicht? warum taktet er nicht?

Jap habe die auch ausgemacht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab' den Code mal noch 'n bißchen aufgemotzt, um mehr Kontrollmöglichkeiten zu haben:
Code:
[FONT=Courier New]    // Schrittbegrenzung
    IF #Schritte > 500 THEN
        #Schritte := 500;
    END_IF;
    
    // Startbedingung erfüllt?
    IF #Start1 AND #Start2 AND SEL (G:= #Flanke, IN0:= true, IN1:= NOT #Start_Old) THEN
        #Start := true;
      END_IF;
      #Start_Old:= #Start1 AND #Start2;
    
    // Flankenerkennung Eingang Takt
    #Schieben := #Takt AND NOT #Takt_Old;
    #Takt_Old := #Takt;
    
    
    // Schieberegister
    IF #Schieben THEN
        
        // Register weiterschieben
        FOR #Index := #Schritte TO 1 BY -1 DO
            #Schieberegister[#Index] := #Schieberegister[#Index - 1];  
        END_FOR;
        
        // Startbedingung ins Schieberegister übernehmen
        #Schieberegister[0] := #Start;
        #Start := false;
        
        // Ausgang Schieberegister
        IF #Schieberegister[#Schritte] THEN
            #Ausgangszaehler := #Laenge;
        END_IF;
        
        // Ausgabe
        #Ausgabe := #Ausgangszaehler > 0;
        
        // Zähler Ausgabelänge
        IF #Ausgabe THEN
            #Ausgangszaehler := #Ausgangszaehler - 1;
        END_IF;
        
        // Zähler
        #Ausgabelaenge := SEL (G:= #Ausgabe, IN0:= 0, IN1:= #Ausgabelaenge + 1);
        #Taktzaehler:= SEL (G:= #Reset, IN0:= #Taktzaehler + 1, IN1:= 0);
        
    END_IF;[/FONT]



@EMZ,
versuch' mal, die neuen Variablen selbst richtig in die Schnittstelle einzutragen. Das Bild und der bisherige Code sollten genügend Hinweise dafür geben.
 
Also ich habe das mit dem programmieren glaub ich nicht ganz hinbekommen.
Zumindest habe ich Probleme beim Übertragen, aber nur das der Aufgemotzten Version. Kann es daran liegen, dass ich irgendwelche Variablen falsch zugeordnet habe?

LG
EMZ


Input
Start1 Bool ... false True Startbedienung
Start2 Bool ... false True Startbedienung 2
Takt Bool ... false True Impuls-Eingang
Schritte Int ... 100 True Impulszahl bis zur Ausgabe
Flanke Bool ... false True Flanke
Reset Bool ... false True Quittieren
Laenge Int ... 4 True Ausgabelänge des Impulses in Takten
Output
Ausgabelaenge Int ... 0 True Laenge
Taktzaehler DWord ... 0 True Taktzaehler
Ausgabe Bool ... false True Impulsausgabe
InOut

Static
Takt_Old Bool ... false True Flankenmerker für Eingang Takt
Start Bool ... false True Startbedingung erfüllt
Schieberegister Array [0..500] of Bool ... True statische Variablen
Ausgangszaehler Int ... 0 True Zähler für Ausgabelänge
Start_Old Int ... 0 True
Temp
Schieben Bool ... False positive Flanke Eingang Takt
Index Int ... False Array-Zeiger


Und nochmal als Bilddatei:

Anhang anzeigen 21814

http://www.bilderhoster.net/safeforbilder/5gyspbhm.png

Ich habe Probleme mit der "Start_Old" Variable. Die bleibt bei mir rot, habe es vermutlich falsch gemacht, aber ich weiß nicht wie ich die Variable definieren soll.


LG

EMZ

PS: Sorry war eine Zeitlang leider mit umziehen beschäftigt.
 
Zuletzt bearbeitet:
Ich habe Probleme mit der "Start_Old" Variable. Die bleibt bei mir rot, habe es vermutlich falsch gemacht, aber ich weiß nicht wie ich die Variable definieren soll.
Code:
[FONT=Courier New]//Variablendeklaration
//Start1: Bool;
//Start2: Bool;
//Start_Old: Int;

#Start_Old:= #Start1 AND #Start2[/FONT]
Einfach mal das Problem extrahieren und dann analysieren!
Na, wo ist das Problem?
 
Zurück
Oben