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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Allen Bradley Word in Bool-Array kopieren

  1. #1
    Registriert seit
    01.12.2009
    Ort
    Rosenheim
    Beiträge
    31
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe unter einer Allen Bradley SPS (Rev 17) ein Problem. Und zwar möchte ich die Werte eines EtherNet/IP Slaves auf ein Boolsches Array kopieren. Das ganze sollte ungefähr so aussehen:

    Code:
    a200[0] := CPX_PS4:I.Data[0];
    Wobei a200 ein Boolarray mit 255 und CPX_PS4:I.Data[0] ein SINT ist.
    Diese Anweisung akzeptiert RsLogix 5000 nicht. Gibt es eine möglichkeit einen SINT, INT, DINT Wert einfach ab einen bestimmten Array Index in ein Array zu kopieren? Also das a200[5] im Prinzip CPX_PS4:I.Data[0].5 wäre?
    PS: Muss nicht in ST passieren, wenn es in Ladder leichter gehen sollte. Bloß Funktionsplan möchte ich nicht verwenden.

    Gruß
    Matthias
    Zitieren Zitieren Allen Bradley Word in Bool-Array kopieren  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Probiere mal COP bzw. CPS
    Damit sollte es gehen

  3. #3
    Registriert seit
    01.12.2009
    Ort
    Rosenheim
    Beiträge
    31
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    CPS hatte ich auch schon angedacht, aber
    Code:
    cps(CPX_MCP1:I.Data[0].0, a200[0],8);
    cps(CPX_MCP1:I.Data[0], a200[0],8);
    funktionieren auch beide nicht. Die Syntax an für sich sollte ja stimmen, oder?
    Gibt es denn noch weitere Möglichkeiten? Ich hatte noch das Bitfeld probiert, aber bei dem meckert er auch, wegen unpassendem Typ.

    Gruß
    Matthias

  4. #4
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von mazoellner Beitrag anzeigen
    CPS hatte ich auch schon angedacht, aber
    Code:
    cps(CPX_MCP1:I.Data[0].0, a200[0],8);
    cps(CPX_MCP1:I.Data[0], a200[0],8);
    funktionieren auch beide nicht. Die Syntax an für sich sollte ja stimmen, oder?
    Gibt es denn noch weitere Möglichkeiten? Ich hatte noch das Bitfeld probiert, aber bei dem meckert er auch, wegen unpassendem Typ.

    Gruß
    Matthias
    Leider ist das CPS COP nicht zu vergleichen mit einem Blockmove aus der S7.
    Und leider ist den Array mit 255 Elementen nunmal nicht durch 8 teilbar.
    Sonst konnte man die gesamte Struktur, also ohne DATA[0] kopieren.
    Das ist aber auch für mich immer etwas Herumprobiererei wenn man
    vorher lange mit S7 programmiert hat.

    Frank
    Grüße Frank

  5. #5
    Registriert seit
    01.12.2009
    Ort
    Rosenheim
    Beiträge
    31
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Oha, da ist natürlich ein Tippfehler drin, es handelt sich um ein Array mit 256 Werten. Wobei die 256 auch nur ein versuch waren, eigentlich ist es immer der Wert x*8.
    Das bedeutet, ich könnte das ganze eigentlich nur mit einer Schleife lösen, oder? Wobei mir das nicht gefallen würde, da mit Bitzugriffen natürlich ordentlich CPU Leistung verbraucht wird.
    Eine Konvertierungsfunktion wie BoolArray to int oder in der art gibt es auch nicht, oder?

    Gruß
    Matthias

  6. #6
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Wenn das bis Montag Zeit hat, schaue ich mal drüber!
    Ideal wäre ein Rumpfprojekt von dir. Die Geheimnisse kannst du
    vorher herauslöschen.

    Gruß

    Frank
    Grüße Frank

  7. #7
    Registriert seit
    01.12.2009
    Ort
    Rosenheim
    Beiträge
    31
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Im Prinzip ist in dem Projekt eigentlich noch nichts drin. Konfiguration für Ethernet/IP Teilnehmer und ein paar Variablen.

    Eigentlich lässt sich mein Problem ja in einer Zeile zusammenfassen:
    Ich will einen (S/D)INT wert auf ein Bool-Array kopieren und anders herum.

    Aber wenns ist, dann erstell ich natürlich gerne ein Rumpfprojekt, bin natürlich für jede Hilfe dankbar. Allerdings dann erst am Montag.
    Danke schon einmal.

    Gruß
    Matthias

  8. #8
    Registriert seit
    13.09.2010
    Beiträge
    113
    Danke
    0
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Da bleibt wohl nur das manuelle Zerlegen übrig.
    Geändert von Bitmanipulator (10.07.2011 um 23:50 Uhr)

  9. #9
    Registriert seit
    11.07.2004
    Beiträge
    1.597
    Danke
    10
    Erhielt 213 Danke für 183 Beiträge

    Standard

    memcpy(adr(Ziel), adr(Quelle), sizeof(Ziel)); ?
    Allen Bradley ist gefragt, nicht Codesys.

    COP oder CPS geht nicht auf BOOL (siehe auch "F1"), wenn's unbedingt BOOLs sein sollen (warum auch immer verstehe ich nicht, wozu kann man jedes einzelne Bit eines SINT/INT/DINT direkt ansprechen oder aber einen BOOL anlegen als Alias auf ein Bit eines SINT/INT/DINT), dann geht's nur über einen UDT.

  10. #10
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Bitmanipulator Beitrag anzeigen
    Da bleibt wohl nur das manuelle Zerlegen übrig.
    Wenn ich was nicht leiden kann, dann ist es:

    Beiträge nachträglich komplett zu ändern!

    Das ist für mich NO-GO!

    Frank
    Grüße Frank

Ähnliche Themen

  1. Bool in Word für blutigen Anfänger!!
    Von schroppae im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 22.09.2011, 06:33
  2. BOOL to WORD
    Von giro im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 10.07.2011, 16:49
  3. Allan Bradley, Bool´s / Eingänge zählen
    Von Kiste2002 im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 08.09.2008, 00:33
  4. bool Signal mit Move in DB kopieren.
    Von swisscrane im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.06.2008, 15:04
  5. Bool-Array in Byte-Array
    Von Techniker im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 13.01.2006, 19:12

Lesezeichen

Berechtigungen

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