Eingänge forcen mit Libnodave möglich?

poppycock

Level-1
Beiträge
253
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin noch nicht richtig warm mit Libnodave geworden, aber ich möchte es gerne zur Übung einsetzen.
Dank diesem Forum habe ich auch gute Unterstützung von einem Mitglied für die ersten Schritte bekommen!

Jetzt stelle ich mir aber die Frage, ob man mit Libnodave auch einzelne Eingänge forcen kann. Das wäre natürlich total genial, oder kann man das mit Libnodave nur indirekt machen, indem man einen Merker setzt, der in der SPS einen vorhandenen Eingang vortäuscht, also quasi

Code:
O     E      0.0 // erwarteter Eingang
O     M      1.0 // vorgetäuschter Eingang mit Libnodave
=     A      2.0 // Ausgang
????

Gruß,
poppycock
 
Im Prinzip ja, aber ...

Hallo,

Cock schrieb:
ob man mit Libnodave auch einzelne Eingänge forcen kann. Das wäre natürlich total genial,

Das geht so wie bei Radio Eriwan. Im Prinzip ja, aber spätestens am Anfang des nächsten SPS-Zyklus wird vom Systemprogramm der SPS der Status der Eingangsbaugruppen in das Prozeßabbild geladen. Und damit dein S/R der Eingänge aus LibNoDave überschrieben.

Gruß

Question_mark
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,



Das geht so wie bei Radio Eriwan. Im Prinzip ja, aber spätestens am Anfang des nächsten SPS-Zyklus wird vom Systemprogramm der SPS der Status der Eingangsbaugruppen in das Prozeßabbild geladen. Und damit dein S/R der Eingänge aus LibNoDave überschrieben.

Gruß

Question_mark
Wenn auf einer 300er diese Eingangsbaugruppe NICHT vorhanden ist (besser diese Eingangsadresse nicht belegt ist), dann funktioniert es. Wenn es sich um eine 400er handelt, kann diese eventuell beleidigt sein.
 
Hallo ihr beiden und danke für die Antwort.

Es handelt sich hierbei um eine S7-300, aber die Eingänge sind tatsächlich vorhanden.
Also geht das im Grunde nur über den Umweg mit einer ODER-Verknüpfung von Eingang+Vortäuschung...

Dann kann ich mir ja einen Merkerbereich für das Simulieren von Eingängen definieren und wenn die Merker gesetzt sind, könnte man das visuell mit Libnodave darstellen.

Vielen Dank,
poppycock
 
Das Problem an dieser Lösung ist dann, dass mit der Simulation kein EIngang auf 0 gesetzt werden kann, wenn am physikalischen Eingang eine 1 ansteht.
Eine "Holzhammermethode" dafür: Merkerbereich auswählen der dem Eingangsbereich entspricht. Ein Bit als Simulationsbit definieren. Wenn dieses gesetzt ist, wird der Merkerbereich am Anfang des OB1 in das Prozessabbild Eingänge kopiert. Dadurch wird auch eine aufwändige Programmänderung (überall das Oder einfügen) vermieden. Dies funktioniert nur für Daten im PAE, für den Peripheriebereich darüber hinaus geht diese Lösung nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Rainer,

diese Methode hört sich sehr vielversprechend an.
Es geht dabei um eine Übungsanlage, bei der man z.B. Endschalter simulieren kann, die gar nicht vorhanden sind.
Quasi, dass man diese Eingänge softwaretechnisch brückt.
Und bei deinem Vorschlag braucht man nicht die vielen ODER-Glieder in den betroffenen Bausteinen.

Trotzdem verstehe ich wohl nicht ganz, wie du das meintest...

Ich habe z.B. einen Eingangsbereich von einem Byte: EB10
Jetzt definiere ich mir dazu ein Merkerbyte: MB10
Nun noch ein Simulationsbit: M11.0

So, aber wie gebe ich im OB1 an, dass bei gesetztem Simulationsbit der Eingang von einem Merker gesetzt wird?
Code:
U M11.0
U M10.2
= E10.2
So richtig?

Wäre super, wenn du mir das nochmal genauer erklären könntest.
Ich bilde mich nur privat in Sachen SPS weiter, habe leider noch keinen Lehrgang bekommen.
Möchte mir deshalb viel Wissen aneignen wie es nur geht!

Gruß,
poppycock
 
Trotzdem verstehe ich wohl nicht ganz, wie du das meintest...

Ich habe z.B. einen Eingangsbereich von einem Byte: EB10
Jetzt definiere ich mir dazu ein Merkerbyte: MB10
Nun noch ein Simulationsbit: M11.0

So, aber wie gebe ich im OB1 an, dass bei gesetztem Simulationsbit der Eingang von einem Merker gesetzt wird?
Code:
U M11.0
 U M10.2
= E10.2
So richtig?

so funktioniert es, allerdings kannst du bei diesem Code deine Simulation nicht abschalten, da der Eingang immer zugewiesen wird, um die Simulation richtig auszuschalten, solltest du die anweisungen überspringen wenn der Merker 11.0 false ist zb. so:

Code:
U M11.0
spbn next
L MB 10
T EB 10
next: nop 0
 
Im Prinzip richtig, aber je nach Datenaufkommen sehr aufwändig.
Weitere Möglichkeiten sind:
Code:
      UN M11.0
      SPB Ohne  // Ohne "Simulationsforcen"
      U M 10.0
      = E 10.0
      U M 10.1
      = E 10.1
      ...
Ohne: NOP 0

oder

Code:
      UN M11.0
      SPB Ohne  // Ohne "Simulationsforcen"
      L MB 10
      T EB 10
      ...
Ohne: NOP 0

oder die Verwendung des SFC 20
 
Zuletzt bearbeitet:
Zurück
Oben