DotNetSiemensPLCToolBoxLibrary (LibNoDave) Zugriff auf Dual-Port RAM / FB15

Zuviel Werbung?
-> Hier kostenlos registrieren
Wie Adressiert man den So eine NCK Variable in der Siemens HMI? Würde das dann gerne in die PLCTag Objekte so einbauen, das es geht so eine Variable über einen String aufzubauen! z.b. kann Ich ja sowas machen:
var aa=new PLCTag("P#M30.0 BYTES 10"), oder var bb=new PLCTag("DB30.DBw40"), wie könnte das bei NCK Variablen aussehen?
 
Hallo zusammen,

ich suche eine Möglichkeit mit der "DotNetSiemensPLCToolBoxLibrary" (LibNoDave) auf den DualPort RAM zuzugreifen.

Die SPS macht dies per FB15, welcher vom FC21 aufgerufen wird.
Zudem kann per FB15 (anhand FB2, FB3) auf NC und Antriebsmaschinendaten zugegriffen werden.
Ich kann ja verstehen das man mit LibNoDave auf die NC zugreifen will,

Aber ein Lesen/ Schreiben des DualPort Ram was soll das ?.

es gibt wohl 2 Fälle
Ich schreibe von de NC Daten in den DualPort Ram -> also kann ich die Daten auch aus der NC Lesen kostet halt was solange man nicht mit LibNoDave zugreifen kann.
Ich schreibe von der PLC Daten in den DualPort Ram -> kann ich auch mit LibNoDave die PLC Daten Lesen

also ist aus meiner Sicht ein befummeln des DualPort Ram Unsinn.

ein 3 Fall fällt mir noch ein.
Ich möchte wisse was CompileZyklen ins oder durch den Ersteller geschützte Zyklen ins DualPort Ram schreiben .
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie Adressiert man den So eine NCK Variable in der Siemens HMI? Würde das dann gerne in die PLCTag Objekte so einbauen, das es geht so eine Variable über einen String aufzubauen! z.b. kann Ich ja sowas machen:
var aa=new PLCTag("P#M30.0 BYTES 10"), oder var bb=new PLCTag("DB30.DBw40"), wie könnte das bei NCK Variablen aussehen?

HMI_NC-PLC-Variablen.png

Weiß aber nicht ob das so einfach geht. Je nach NC können die Bereiche unterschiedlich sein.
Für die PLC werden die Bereiche per NC-Var-Selector(Siemens Tool) ermittelt.
V[5] M r0027 float 27 4 V5_M_r0027_27
V[5] M r0035 float 35 4 V5_M_r0035_35

Beispiel für FB2 Adresse:
Addr FB2.png
 
Zuletzt bearbeitet:
Ich kann ja verstehen das man mit LibNoDave auf die NC zugreifen will,

Aber ein Lesen/ Schreiben des DualPort Ram was soll das ?.

es gibt wohl 2 Fälle
Ich schreibe von de NC Daten in den DualPort Ram -> also kann ich die Daten auch aus der NC Lesen kostet halt was solange man nicht mit LibNoDave zugreifen kann.
Ich schreibe von der PLC Daten in den DualPort Ram -> kann ich auch mit LibNoDave die PLC Daten Lesen

also ist aus meiner Sicht ein befummeln des DualPort Ram Unsinn.

ein 3 Fall fällt mir noch ein.
Ich möchte wisse was CompileZyklen ins oder durch den Ersteller geschützte Zyklen ins DualPort Ram schreiben .


Oder du möchtest schnell einen Versuch durchführen ohne erst etwas lange in der PLC zu programmieren. Durch den DualPort Ram hast du ja bereits einen definierten, synchronaktion fähigen Bereich, der nicht vom Anwender verwendet wird. Im Gegensatz zu R-Parametern.
 
Danke...

Hab Ich irgendwie beim mergen der libnodave änderungen in meinen fork übersehen...


Habs mal eingebaut, gibt neue Tags vom Typ: "PLCNckTag" damit müsste man es mal versuchen! ie haben dann Felder "NckArea, NckUnit, ...". Wie groß ist den eine so gelesene Variable? Im Moment targe ich fix 1 Byte als große pro req. ein!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für die PLC werden die Bereiche per NC-Var-Selector(Siemens Tool) ermittelt.

Beispiel für FB2 Adresse:
Anhang anzeigen 31628

Habs mal eingebaut, gibt neue Tags vom Typ: "PLCNckTag" damit müsste man es mal versuchen! ie haben dann Felder "NckArea, NckUnit, ...". Wie groß ist den eine so gelesene Variable? Im Moment targe ich fix 1 Byte als große pro req. ein!

Die Größe der Variable ist vom Datentyp abhängig. Im Bild für den FB2 Aufruf steht bei "laenge" die Länge des Datentyps. Da es sich hier um eine Real (Type 0x8) handelt ist die länge 4.
 
Ok, Ich nehm die gleiche größe wire bei den anderen Tags.

So solltest du nun vlt einen Tag Definieren und lesen können:

Code:
[COLOR=blue]var[/COLOR] tag=[COLOR=blue]new[/COLOR] [COLOR=#2b91af]PLCNckTag[/COLOR]() { TagDataType = [COLOR=#2b91af]TagDataType[/COLOR].Float, NckArea = 0xa, NckUnit = 0x8,NckColumn = 0x23, NckLine = 0x1,NckModule = 0x1a,NckLinecount = 0x1};

kannst du das mal testen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wollte es testen. Bekomme beim Kompelieren aber immer folgenden Fehler:

Der Typ- oder Namespacename 'DotNetSiemensPLCToolBoxLibrary' konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

Mit der alten .dll (v1.0.0) funktioniert es.
 
Wie funktioniert NuGet? Hab den Befehl aus dem Link ausgeführt. Anschließend konnte ich dein Projekt nicht mehr compilieren

2016-02-12 12_00_51-DotNetSiemensPLCToolBoxLibrary.jpg
 
Hab das Beispiel einmal gestartet und dabei beim "ReadValue(tag)" folgendes Exception bekommen.

2016-02-12 19_07_57-PlcReadExample (Debugging).jpg

Am Montag werde ich mir das ganze genauer anschauen.
 
Zurück
Oben