Anfängerfragee CODESYS V3.5 SP8

mario1

Level-1
Beiträge
41
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Anfängerfrage CODESYS V3.5 SP8

Hallo Forum,

ich arbeite gerne in Step7 mit dem AWL Editor und möchte das ganze auch mal mit CODESYS probieren.
Frage:
Ist es richtig das bei CODESYS einen neue Zeile nur über einen Befehl eingefügt bzw. angefügt werden kann und nicht einfach über die RETURN- Taste?
Kann man eine Sprungmarke nicht beliebig in einem AWL- Netzwerk positionieren? Bei meinen Versuchen konnten die Sprungmarken nur in das folgende Netzwerk oder in die erste Zeile des Netzwerkes eingefügt werden.
Mein Versuch ein Beispielprojekt http://www.es.hs-mannheim.de/sps/Beispiele/Kapitel4/Beispiel4_4.html zu Erstellen endete mit 584 Fehlern und 37 Meldungen eine Aktualisierung der Bibliotheken konnte die Probleme auch nicht beseitigen.

mfG
Mario
 
Zuletzt bearbeitet:
Wahrscheinlich ist das für Codesys 2.3 geschrieben, da hilft nur Handarbeit bei der Fehlerbeseitigung, ggf. hift auch das Transfer Programm in Codesys 3.x.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
nein das ist schon ein V3 Projekt denke du musst folgendes tun: (Wie immer wenn du ein Projekt mit neuerer CODESYS Version verwendest, würde ich empfehlen das zu tun)
1. Projekt öffnen - beim öffnen des Projekt fragt CODESYS dich ob du es mit neuem Compiler Version übersetzen willst -> Ja alles aktualisieren
2. dann rechtslick im Gerätebaum auf Control Win V3 und -> Gerät aktualisieren auf die dir angebotene Version

3. Sonderfall da es momentan einen Fehler gibt, der verhindert das man mit VisuProjekten in Simulation arbeiten kann -> VISU_NO_EXCEPTION_HANDLING setzen als Compiler define
(dieses Problem wird dann mit dem Release im Juni ->3.5SP9 behoben sein)

Dann einloggen/also Simulation und dann geht erst mal das bestehende Projekt mit aktueller Version.
Klar alternativ kannst du dich ja auch auf der SPS (Control Win) einloggen, die ist ja immer dabei auf dem Rechner auf dem dein CODESYS installiert hast. (einfach die SPS im Tasktray starten -dann in CODESYS dann scannen und einloggen)

Zu deiner AWL Frage: denke ja das ist so... aber ehrlich gesagt unsere Aussage zu AWL folgende:

„In der IEC 61131-3 in der dritten Edition, ist AWL als veraltet/nicht empfohlen kennzeichnet,
3S wird keine Verbesserungen mehr am AWL-Editor in V3 vornehmen"
Muss es also unbedingt AWL sein, wenn das irgendwann eventuell rausfliegt?

Grüße
 

Anhänge

  • Compilerdefine.jpg
    Compilerdefine.jpg
    96,5 KB · Aufrufe: 84
Zuletzt bearbeitet:
Hallo,

danke für die Antworten.
Schade das AWL irgendwann rausfliegt, weil mit AWL kann man sehr effektive, schlanke und besonders schnelle Maschinenprogramme erstellen.

Eine neue Frage:
Ich habe ein Projekt mit Modbus erstellt und kann nicht verstehen warum das Eingangswort %IW3 sich aus Bit %IX6.0 bis %IW7.7 zusammensetzt (siehe Bild).

CoDeSys.JPG

mfG
 
Wie sehen denn die ersten beiden Worte aus? Ist da irgendwo ein offset drin? Ist das vllt wegen des IW1 vom Array und noch mal IW1 als WORD das es irgendwie doppelt zählt? Dann käme das hin.
Aber Codesys hab ich noch kaum Ahnung, aber möchte das gern ändern ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich nehem an es gibt ein IW0 dann setzt sich dieses aus IB0, IB1 zusammen.
somit:
IW1 setzt sich aus IB2 und IB3 zusammen
IW2 setzt sich aus IB4 und IB5 zusammen
IW3 setzt sich aus IB6 und IB7 zusammen
 
Das ist so Standard bei Codesys. Es wird, anders als bei Siemens, jeder Datentyp absolut von 0 gezählt. Heißt von Byte nach Word wird die Adresse quasi halbiert. Aus IB 300 wird IW 150 wird ID 75
 
Da bricht für mich eine kleine Welt zusammen wenn I 300.0 Bestandteil von IB 300, IW 150 und ID 75 ist. Warum nach man denn so etwas???? Bei 3S findet man leider nur sehr wenige Informationen zu ihrem Produkt.:!:
 
Hmm,

Wenn man sich den Speicherbereich ähnlich einem Zollstock vorstellt, bei dem jede Speicherstelle einem cm entspricht und nun daneben mehrere Schablonen legt, die die Zusammengehörigkeit der Speicherstellen anzeigen, so ist diese Einteilung eigentlich gar nicht so unlogisch.
Ich habe mal versucht, meine Gedanken in einer kleinen Grafik darzustellen:

Speicherbereiche.jpg

Das ganze muss natürlich so gestaltet sein, das die Datenformate kongruent bleiben. Wenn man nun auf dem Index des ersten Bytes besteht, so ergeben sich "Lücken" in der Bennung. Wie man in der Grafik sieht gäbe es dann EW0 und als nächstes wäre dann EW2, bei den Double sind die Lücken natürlich noch größer-> ED0, das nächste wäre dann ED4.

Ich denke, das ist letztlich eine Frage der Gewöhnung.

Viele Grüße

Christian
 
Wieso interessiert eigentlich welche Adresse dahinter steht?
Man arbeitet doch mit der Variable (dem Array), oder?
Mich hat noch nie interessiert wo die genau liegt.
 
Noch eine Anmerkung zu diesem Zitat:
>Bei 3S findet man leider nur sehr wenige Informationen zu ihrem Produkt.:!:
Ich weis man macht es nicht gerne (ich manchmal auch nicht ;-) - heutzutage "googelt" man erst mal los bevor man das Naheliegende (die CODESYS Hilfe mit F1) durchsucht)
Hast du mal die Hilfe aufgerufen hier findest du unter:

CODESYS Development System > Referenz Programmierung > Operanden > Adressen

Da ist es eigentlich schon auch beschrieben.
Grüße
 
Zuletzt bearbeitet:
Moin,

ich habe mal wieder ein paar Fragen und Probleme bei der mir die CODESYS Hilfe mit F1 auch nicht weiter helfen kann!

Ich habe eine Modusverbindung zwischen einem Energiemessgerät und einem Raspberry hergestellt. Die Kommunikationsverbindung war sehr leicht einzurichten:TOOL:

Bild1.JPG
die Register wurden gemapt auf IW9 u. IW10, IW11 u. IW12, IW13 u. IW14.
2.JPG
wenn mann mehrfach mit der linken Maustaste auf das IW klickt erscheint ein M im blauen Kreis. Was ist das?
Die zwei Modbusregister pro Kanal beinhalten einen Messwert in Float32. Da es leider nach IEC Programmierung:confused: nicht möglich ist das ganze als Doppelwort aufzurufen und die Wörter zu tauschen wie z.B

L ED9
TAK
T Real

habe ich das ganze versucht so zu lösen:confused:

3.JPG
Die zwei Wörter nach Schmiermerker und dann Merkerdoppelwort laden.
So, nun alles in richtiger Reihenfolge in temp2 (Datentyp Real)
Erwarteter Wert 213.41623 . Wieso wird mir der falsche Wert angezeigt?
Im Netzerk 12 habe ich versucht einen Float32 in dualer Darstellung (2#0100001101000111111100100001010) = (199.97281dez) in die Variable temp4 (Datentyp Real) zu übertragen.
Ich bekomme aber einen Wert angezeigt (siehe Bild) der einer ganz anderen Dualzahl entspricht.

mfG
 
Zuletzt bearbeitet:
Hi,
das blaue 'M' bedeutet das du manuell Adressen festlegen willst/kannst würde ich nie tun... das kann doch CODESYS selber automatisch besser. (steht in der Hilfe, schimpf mich nicht dafür ;-) )
ja, ja Modbus kennt halt nur Wörter sonst nichts darum musst du die reals eben selber zusammenbauen IEEE
Standard 754 format. Das kann ja auch von Slave zu Slave unterschiedlich sein ob du noch swappen musst oder eben nicht. Ein gepfrickel eben... (Vielleicht hört man das ich nicht so der Modbus Fan bin... geht noch nichts über einen modernen Feldbus mit dem man auch die SLaves einfach scannen usw... kann)
Grüße
 

Anhänge

  • manuellAdressen.jpg
    manuellAdressen.jpg
    250,5 KB · Aufrufe: 26
Zuletzt bearbeitet:
Hallo,

jetzt habe ich nur noch das Problem mit der Gleitpunktzahl.
Float32 ist doch das selbe wie Datentyp Real. Nach dem move wird doch die Dualzahl nur anders interpretiert.

mfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zeigt Codesys beim Beobachten des AWL-Programms die Werte der Operation oder das was am Zyklusende in der Variable steht? Vielleicht ist der falsch angezeigte Wert in "temp2" nur ein Beobachtungsproblem?

16#4355_6A8E = 2#01000011_01010101_01101010_10001110 = 213.41623

Harald
 
Ich habe es auch mit einem Merkerdoppelwort versucht und in der Visu angezeigt.
In der Visualisierung habe ich aber keine Möglichkeit gefunden das Merkerdoppelwort bei der Textvariable s%MD40 als Gleitpunktzahl interpretieren zu lassen.
Gibt es bei CoDeSys die Möglichkeit die Typprüfung auszuschalten?

mfG
 
Ich kenne mich mit Codesys nicht aus, habe aber eine Idee: Kann man in Codesys eine REAL-Variable und eine DWORD-Variable per UNION oder AT auf die selbe Adresse legen?

Alternativ: Kann man in Codesys-AWL sowas programmieren?
Code:
VAR
  dwVar : DWORD;
  rVar : REAL;
  pt_REAL : POINTER TO REAL;
END_VAR

LD 16#43556A8E
ST dwVar

LD dwVar
ADR
ST pt_REAL
LD pt_REAL^
ST rVar

Wenn es in AWL nicht funktioniert, dann programmiere in ST:
Code:
dwVar := 16#43556A8E;  //Testwert

pt_REAL := ADR(dwVar);
rVar : = pt_REAL^;     //sollte hier 213.41623 ergeben

Harald
 
Zurück
Oben