String-Deklaration CoDeSys

Solaris

Level-2
Beiträge
500
Reaktionspunkte
135
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Spezis,

in CoDeSys kann man Variablen direkt einer Adresse/Merker zuordnen.

Eine Variablendeklaration hat folgende Syntax:
<Bezeichner> {AT <Adresse>}:<Typ> {:= <Initialisierung>};

das sieht dann etwa so aus:
Code:
var1 [COLOR=Blue]AT[/COLOR] [COLOR=Magenta]%MW10[/COLOR]: [COLOR=Blue]INT[/COLOR]:=13;
nun möchte ich das auch mit einem String machen:
Code:
name1 [COLOR=Blue]AT[COLOR=Magenta]......[/COLOR][/COLOR]:[COLOR=Blue]STRING[/COLOR](15);
ist so etwas möglich, was muß ich dann dort einsetzen?
Es geht darum den ensprechenden String direkt über seine Speicheradresse anzusprechen.


Gruß
Soli
 
Ich kenne es von TwinCAT her so, dass dort die Adressvergabe automatisch geschieht. Ist das bei Codesys auch so??

Zusätzlich gibt es in TwinCAT die Möglichkeit über ADR(VarName) die Adresse der Variablen zu bekommen. Gibt es das auch in Codesys??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Müsste gehen

Ich habe bereits Strings auf feste Adressen gelegt (Spezielle Visualisierungs Rechner bei INTERCONTROL Displays) und der Adress Operator sollte immer gehen, da man sonst nicht mit Zeigern arbeiten könnte.
 
Also ich würde es so deklarieren:

Code:
name1 AT %MB10: STRING(15):='ini';
pt: pointer to string (15);
Für den Zugriff dann:
Code:
pt:=ADR(%MB10);
pt^:='neu'; 
//oder
name1:='neu';
Wobei MB10 bis 24 dann natürlich nicht anderweitig belegt werden sollten.

EDIT: Wieso soll der String eigentlich auf einen Merkerbereich gelegt werden?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Na dann müsste:

Code:
name AT %MB10: STRING(15):='string_text';
...eigentlich reichen. Die Zeichen des Strings liegen dann (entsprechend der ASCI-Tabelle) in den entsprechenden Merkerbereich. Kommt halt auf die Visu an, wie die Werte interpretiert werden.
 
Zurück
Oben