Verschiedene bereichslängen kopieren

-Melanie-

Level-1
Beiträge
31
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

Weiß Jemand wie ich einen Bereich Kopieren kann (Boolwerte).
Ich weiß das es den SFC20 und 21 gibt aber ich habe Datenlängen die nicht durch 8 Teilbar sind und deshalb kann ich diese Bausteine nicht nutzen.
Ich könnte sie Natürlich auch einzelnd kopieren find ich aber eher unschön.

Hoffe ihr gebt mir auf diese warscheinlich doofe Frage eine Antwort weiß es aber wirklich net

LG
 
So aus der Hüfte heraus sollte das kein Problem darstellen.

Selbst wenn ein DB nur ein Bit beinhaltet, vergibt Step 7 dafür automatisch 2 Byte. In der Hilfe von BLKMOV steht zwar was von "muss durch 8 teilbar sein...", aber normalerweise kannst Du mit BLKMOV einfach statt dem Datentyp BOOL einfach Byte vorgeben.

Also anstelle von:
p#dbx dbx0.0 BOOL 2 // was ja nicht geht

p#dbx dbx0.0 BYTE 1 angeben.

Sollte so funktionieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort.
Das kann ich ja gerade nicht machen.
ich habe einen DB (den ich nicht änder darf) wo Boolvariablen hochgezählt sind, von bit 0.0 bis etwa 7.6 oder so. habe verschiedende bereichslängen einmal 5Bit 16bit 23bit usw. die ich der Reihe nach in diesen DB schreiben will.
Also die ersten 5 Bits im DB von Bit 0.0 bis 0.4, 16Bit im DB von 0.5 bis 2.5 usw.
 
Zuletzt bearbeitet:
D.h. Du hast einen Zielbereich von sagen wir mal Bit 0 bis Bit 13. Die Bits 0 bis Bit 5 sollen beschrieben werden, die Bits 6 bis 13 unverändert.

So ungefähr?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
also eingeben läßt sich das aber ...
Code:
      CALL  SFC   20
       SRCBLK :=P#DB1.DBX 0.4 BOOL 20
       RET_VAL:=MW200
       DSTBLK :=P#DB1.DBX 5.6 BOOL 20
... ob der SFC das allerdings so ausführt weiß ich im Augenblick auch nicht ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Grubba:
Wenn das mit dem SFC so ist wie beschrieben (und ich zweifle da nicht an deiner Aussage), dann würde ich auf jedem Fall auch zu deinem Vorschlag (was selber bauen) tendieren ...
Sie schein es ja an verschiedenen Stellen in der Form gebrauchen zu können ...

Gruß
LL
 
So habe ich es selber schon versucht aber das geht nicht :-(

Wie kann ich sowas denn selberstricken hab ich noch nie gemacht.
vielleicht noch Angemerkt, muss in KOP schreiben :-(

@Larry
und nein ich brauche es eigendlich nur an einer einzigen Stelle im Programm aber die Menge der Werte lässt es unschön aussehen
 
Zuletzt bearbeitet:
Naja ...
mit KOP wirst du da nicht sehr weit kommen.
Ich würde das in SCL machen oder eventuell notgedrungen noch in AWL.
Du mußt dir dafür einen FC (oder FB) erstellen, dem du wie dem SFC20 die ANY-Pointer übergibst. In deinem Baustein mußt du diese dann zerlegen und entsprechend die Inhalte adressieren und kopieren.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nachträglich einen Beitrag ändern ist nicht so prickelnd ... Ich habe deine Änderung jetzt nur durch Zufall gesehen ...

@Larry
und nein ich brauche es eigendlich nur an einer einzigen Stelle im Programm aber die Menge der Werte lässt es unschön aussehen
Du mußt selber wissen, was du wie machen willst. Ich kann nur vorschlagen und ggf. bei der Umsetzung helfen.

Gruß
LL
 
Wenn Du unbedingt Bitweise kopieren willst, dann erzeuge dir jeweils einen Any-Pointer für Quelle und Ziel und kopiere die Bits über eine Schleife. Ist die Anzahl der zu kopierenden Bits durch 8 teilbar, dann kannst Du in deinem Kopierbaustein den SFC20 aufrufen, denn die Any-Pointer hast Du ja schon erzeugt.

Gruß Rolf
 
Zurück
Oben