16.12.2009 10:27 | |
Beiträge: 5 Bewertung: (0) |
Ich habe mir auf der Siemensseite den Sekundenwandler FB1 https://supportstage.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&objId=27774290&nodeid0=10805384&nodeid4=34677186&cspltfrm=0&cssw=0&csbinh=8&load=treecontent&lang=de&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=WW)
geladen. Funktioniert einwandfrei. Dieser Baustein schreibt auch den errechneten Wert als String in eine Variable. Nun möchte ich diesen FB aber als Multiinstanz aus einem übergeordneten FB aufrufen. Leider funktioniert dabei die Ausgabe in den String nicht mehr, da er dabei immer den Pointer übers AR1 sich holt (TB [AR1,P#12.0]) und damit im Instanz-DB an die falsche Stelle schreibt. Wie muss ich den Programmcode ändern, damit ich den FB1 aus einem Instanz-FB mehrfach aufrufen kann, und er auch an die richtigen Adressen den String schreibt. |
18.12.2009 13:09 | |
Beigetreten: 07.10.2005 Letzter Bes: 07.09.2024 Beiträge: 3018 Bewertung: (1054) |
Hallo holgie da hat der Stefan_K im Grunde schon recht, Du must aber bei seiner Loesung beachten das sie nur gueltig ist wenn derInstanz DB nicht mehr als 4096 Bytes hat da +AR1 "nur"Werte von -32768 bis +32767 (bits) aufrechnet (+AR1 benutzt nur ACCU1-L). SollteDein Instanz DBtatsaechlich laenger seinkannst Dudie folgende syntax einsetzen: TAR2// Multi Instance offset --> accu 1 AD DW#16#FFFFFF// mask out memory area value L P##variable // Instance DB variable +D // add to Multi instance offset LAR1 // accu 1 --> AR1 Ich hoffe es hilft |
Cheers |
|
Für diesen Beitrag bedanken sich1 Benutzer |
18.12.2009 13:38 | |
Beiträge: 5 Bewertung: (0) |
Schönen Dank für die Hilfe... Klappt jetzt einwandfrei |
Für diesen Beitrag bedanken sich1 Benutzer |
Folgen Sie uns auf