Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 39

Thema: Eingangswort über Pointer einlesen (Anfängerfrage)

  1. #1
    Registriert seit
    17.12.2013
    Beiträge
    11
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich (noch ein Anfänger) möchte gerne aus einem Funktionsbaustein heraus ein Eingangswort einlesen und dieses Wort an einem Ausgangswort wieder ausgeben. Die Anfangsadresse wird mir dazu als INT-Wert am FB als Eingang angegeben. Ich habe mir bereits was überlegt, weiß aber nicht, ob das so funktionieren wird, da ich keine Simulationssoftware habe kann ich es leider nicht prüfen. Also schaut bitte mal drüber und berichtigt mich (GANZ WICHTIG) bei Fehlern!

    Beispiel: Eingangsvariable am FB (INT) Anfangsadresse zum Einlesen des Einangswortes 50: #Eingang=50
    Eingangsvariable am FB (INT) Anfangsadresse zum Ausgeben am Ausgangsworte 40: #Ausgang=40

    Es soll nun also das Merkerwort 50 in den FB eingelesen werden, Bitmanipulation vorgenommen werden und anschließend wieder in das Ausgangswort Mein Vorschlag (AWL):

    Code:
    L            #Eingang               // einlesen
    SLD        3
    LAR1                                   // ergibt einen Pointer von P#50.0 im Adressregister1
    L            EW[AR1, P#0.0]     // lädt das EW50
    T            MW0
    
    (...Bitmanipulation am MW0...)
    
    L              #Ausgang             // einlesen
    SLD          3
    LAR1                                    // ergibt einen Pointer von P#40.0 im Adressregister1
    L             MW0
    T             AW [AR1, P#0.0]   // transferiert in das AW40
    Ich wüsste gerne, ob das so funktioniert! (Ich bin mir vor Allem bei dem Einlesen des Integer-Zahlenwertes nicht ganz sicher, ob ich daraus wie angegeben den Pointer machen kann, der dann auch wirklich auf das richtige Eingangswort bzw. Ausgangswort zeigt.)

    Vielen Dank im Voraus,
    Marcus
    Geändert von MarcusSPunkt (17.12.2013 um 21:49 Uhr)
    Zitieren Zitieren Eingangswort über Pointer einlesen (Anfängerfrage)  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Also grundsätzlich könnte das schon so funktionieren,
    nur machen deine Kommentare mit "lädt das MW50" wenn du ein EW liest nicht wirklich sinn, selbiges beim AW.

    Abgesehen davon, ist das eine stinkordinäre IN-OUT Variable, das muss und sollte man nicht so umständlich (indirekte Adressierung) machen.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    MarcusSPunkt (17.12.2013)

  4. #3
    MarcusSPunkt ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.12.2013
    Beiträge
    11
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Manuel,

    vielen Dank für deine schnelle Antwort!

    Entschuldige, ich habe meinen Code oben noch mal verbessert (Natürlich sollte das auch im Kommentar lädt EW50 heißen). Ich hatte die Aufgabenstellung vorhin beim Erstellen ein wenig geändert und vergessen die Kommentare anzupassen.

    Du würdest es also nicht so umständlich machen, meintest du! Wie würde es denn deiner Meinung nach einfacher gehen?

    LG,

    Marcus

  5. #4
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Es sind in letzter Konsequenz immer noch nur IN oder OUT oder IN-Out Variablen, nichts wofür sich eine indirekte Adressierung lohnen würde ...
    Ein MW hat in einem derartigen FB schon mal aus Prinzip nichts zu suchen ... aber abgesehen davon, würde das wohl durchaus so funktionieren.
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. #5
    MarcusSPunkt ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.12.2013
    Beiträge
    11
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Stimmt, es muss sich bei dem "MW0" um z.B. eine temporäre Variable handeln!
    Aber da ich an den Eingängen des FB nur die Adressen als Integer-Werte vorliegen habe, weiß ich nicht genau wie ich das sonst anders programmieren sollte.

  7. #6
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Zitat Zitat von MarcusSPunkt Beitrag anzeigen
    Aber da ich an den Eingängen des FB nur die Adressen als Integer-Werte vorliegen habe, weiß ich nicht genau wie ich das sonst anders programmieren sollte.
    Stellt sich jetzt natürlich die Frage warum ist das so, und muss das so sein?

    Kurzum, um was es mir geht:
    Du kannst indirekt adressieren wie du willst, nur bin ich aus verschiedenen Gründen absolut kein Freund davon, das elementare Sachen wie EA nicht in Querverweisen zu finden sind.
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  8. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    Paul (18.12.2013)

  9. #7
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Stellt sich jetzt natürlich die Frage warum ist das so, und muss das so sein?

    Kurzum, um was es mir geht:
    Du kannst indirekt adressieren wie du willst, nur bin ich aus verschiedenen Gründen absolut kein Freund davon, das elementare Sachen wie EA nicht in Querverweisen zu finden sind.
    Du hast absolut recht.
    Wenn man nicht findet, wo etwas gelesen oder geschrieben wird, ist fehlersuchen schwer.
    Aber es ist doch inzwischen so chick alles indirekt und/oder mit Zeiger zu machen.
    Das ist der neue Zeitgeist.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  10. #8
    Registriert seit
    05.12.2013
    Ort
    Graz / Austria
    Beiträge
    149
    Danke
    9
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Code:
    L #Eingang
    //SLD 3
    T LD 0
    L #Ausgang
    //SLD 3
    T LD 4
    L EW [LD 0]
    
    (Bitmanipulation)
    
    //L EW [LD 0]
    T AW [LD 4]
    LD 0 und LD 4 sollen auch "Namen" haben obwohl man sie hier nur absolut benutzen DARF ! ... sonst wenn man auch andere Temporäre Lokal Daten hat ... etc.

    Ein paar Siemens REGELN von einem Freund (...von mir ) :

    1-Verwende immer symbolische Adressierung außer (wenn nicht anderes möglich) bei Indirekte Adressierung .
    2-Vor Gebrauch zusammengesetzten Datentypen in FC oder FB(In-Out) AR1 retten (oder hinterher re-initialisieren).
    3-Vor CALL FB und vor CALL FC/SFC ohne Parameter AR2 retten (oder hinterher re-initialisieren).
    Geändert von Sioan (18.12.2013 um 00:10 Uhr) Grund: Ergänzung

  11. #9
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Zitat Zitat von Sioan Beitrag anzeigen
    LD 0 und LD 4 sollen auch "Namen" haben obwohl man sie hier nur absolut benutzen DARF ! ... sonst wenn man auch andere Temporäre Lokal Daten hat ... etc.
    Wie kommst Du darauf? Ich darf und kann die an dieser Stelle auch symbolisch verwenden.
    Zitat Zitat von Sioan Beitrag anzeigen
    1-Verwende immer symbolische Adressierung außer (wenn nicht anderes möglich) bei Indirekte Adressierung .

    Zitat Zitat von Sioan Beitrag anzeigen
    2-Vor Gebrauch zusammengesetzten Datentypen in FC oder FB(In-Out) AR1 retten (oder hinterher re-initialisieren).
    Es ist in der Regel nicht nötig, das AR1 zu retten.
    Zitat Zitat von Sioan Beitrag anzeigen
    3-Vor CALL FB und vor CALL FC/SFC ohne Parameter AR2 retten (oder hinterher re-initialisieren).
    Es ist nur dann nötig, das AR2 zu retten, wenn man schreibend darauf zugreift. In diesem Fall ist es aber sinnvoller, das AR2 VOR und nicht erst IN dem betreffenden Baustein zu retten.
    Gruß
    Michael

  12. #10
    Registriert seit
    14.10.2010
    Ort
    Telgte
    Beiträge
    654
    Danke
    97
    Erhielt 129 Danke für 99 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Michael, Hi Sioan,
    In diesem Fall ist es aber sinnvoller, das AR2 VOR und nicht erst IN dem betreffenden Baustein zu retten.
    Vor CALL FB
    Das hatte Sioan glaube ich so gemeint, vorm CALL zu retten.
    Ich habe das bislang so gehandhabt das ich das Retten der Register in NW1 gemacht habe und das Rücksichern im letzten NW.
    Wo liegt der Unterschied ob ich das vor dem CALL des FB mache oder im ersten NW?
    Ich möchte die Register nach erfolgtem Aufruf so verlassen wie ich sie "vorgefunden" habe,
    daher finde ich irgendwie das das zum Baustein selbst gehört (daher handle ich das innerhalb des Bausteins)
    Anders kann ich mein Vorgehen derzeit nicht begründen. Wenn es einen funktionellen oder anderen Hintergrund geben sollte
    das Save and Resave vorm CALL zu machen, dann würde ich mein Vorgehen überdenken.
    Gruß, Toki
    Programmierumgebung: Step7 V5.5, WinCCflex2008-SP3, TIA-PortalV13, MicroWinV4.0

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 01.11.2013, 19:26
  2. Antworten: 9
    Letzter Beitrag: 12.12.2009, 00:27
  3. Anfängerfrage über Textmeldungen.... Hilfe
    Von Pusher im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 16.01.2009, 09:39
  4. Antworten: 9
    Letzter Beitrag: 14.12.2007, 18:07
  5. Anfängerfrage über array
    Von noeppkes im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 19.09.2007, 16:22

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •