# Programm Simulation &Test



## duMMbatz (24 Januar 2011)

Hallo Jungs brauche mal Ideen um meine Projekte zu Testen und zu Simulieren.

Beispiel:

Ein Programm hat mehrere Ventile und dazugehörige Endlagen. 
Bei den Ansteuerungen der Ventile aus der Schrittkette, müsste man nun sehr schnell die Eingänge setzen und wieder entfernen. 

Nun die Frage wie realiesiert ihr sowas?

Im Moment haben wir an jedem baustein ein Bitsignal, welches die Endlagen überbrücken.

U SimMerker
U VentilAusgang
= EndlageAuf

eine andere Möglichkeit wäre in einem extra FC, den Ausgängen den Eingängen zuweisen.

U A1.0  //Ventil X
= E1.0  //EndlageAuf

UN A1.0 //Ventil X
= E1.1   //EndlageZu

Habt ihr noch andere Ideen?

Kann ich mit anderen Programmen oder Scripten evtl. automatismen in die PLCSIM bringen?


----------



## marlob (24 Januar 2011)

duMMbatz schrieb:


> ...
> Habt ihr noch andere Ideen?
> 
> ...


http://www.sps-forum.de/showthread.php?t=17140&highlight=winmod


----------



## duMMbatz (24 Januar 2011)

marlob schrieb:


> http://www.sps-forum.de/showthread.php?t=17140&highlight=winmod


 
Das klingt ja alles gut was die auch auf der Homepage schreiben. Und hier im Forum.

Was kostet denn der Spaß ca. ??


----------



## marlob (24 Januar 2011)

duMMbatz schrieb:


> Das klingt ja alles gut was die auch auf der Homepage schreiben. Und hier im Forum.
> 
> Was kostet denn der Spaß ca. ??


Das ist abhängig von der Konfiguration die du brauchst. Am besten mal selber anfragen.


----------



## duMMbatz (24 Januar 2011)

<LI class=sub_level>Softwaretest <LI class=sub_level>Peripheriesimulation  
Ja ich werd denen mal eine Anfrage senden..
Es geht ja dann bei WinMOD um die Peripheriesimulation  ...

Noch Andere Ideen?


----------



## Rainer Hönle (24 Januar 2011)

Eine weitere Möglichkeit ist ACCONtrol im sogenannten Bridged-Mode. Dort werden die Eingänge einer Instanz auf die Ausgänge der anderen Instanz (und umgekehrt) "verschaltet". Die eine Instanz bearbeitet ganz normal das SPS-Programm und die andere Instanz spielt Anlage. 
Für einfache Anwendungen ist dies durchaus ausreichend. Für komplexe Anlagen ist natürlich WinMod ein hervorragendes Tool.


----------



## WeissT (24 Januar 2011)

Hallo,

mit SPS-VISU sind solche Tests ebenfalls möglich. Im beschriebenen Fall können besipielsweise Zylinder verwendet werden. Die Endlagen der Zylinder werden dann mit den jeweiligen Eingängen verbunden (Im Dialog des Zylinders).

Nähere Beschreibung, Videos und Preise:
http://www.mhj-online.de/de/index.php?cat=c5_SPS-VISU.html&information

Gruss
T. Weiss


----------



## duMMbatz (24 Januar 2011)

WeissT schrieb:


> Hallo,
> 
> mit SPS-VISU sind solche Tests ebenfalls möglich. Im beschriebenen Fall können besipielsweise Zylinder verwendet werden. Die Endlagen der Zylinder werden dann mit den jeweiligen Eingängen verbunden (Im Dialog des Zylinders).
> 
> ...



Mit echter Hardware etste ich das auf jedenfall... das war aber nicht meine Frage...


----------



## WeissT (25 Januar 2011)

Hallo,

bei den Zylindern habe ich virtuelle Zylinder in SPS-VISU gemeint. Deren Endlagen können mit den Eingängen verknüpft werden. Bei Ansteuerung des Ausgangs für den Zylinder fährt dieser beispielsweise aus und beim Erreichen der Endlage wird der entsprechende Eingang belegt. Der Vorgang ist auf dem Bildschitm zu sehen und die Fortschaltbedingung erfüllt sich automatisch ohne händisches Umschalten eines Eingangs.

Gruss
T. Weiss


----------



## duMMbatz (4 April 2011)

*Simulation*

So Jungs, die Programme die es gibt kosten richtig asche... ich denke für meine vorstellung wäre es mit kanonen auf spatzen geschossen...

ich suche eher etwas, wobei man mit VBS oder ähnlichem die PLCSim beinflussen kann. 

Meine Vorstellung wären wenn Pumpe XY angeht stellt sich der Druck von X ein sobald sie nicht angesteuert ist, dann ist der Wert 0. 

Hat jemand dahingehend Erfahrungen???


----------



## tnt369 (4 April 2011)

für einfache tests / simulationen habe ich zwei bausteine
programmiert die dann im plcsim bzw in der echten cpu
laufen können (solange die peripherie noch nicht da ist).

den einen rufe ich am zyklusende auf, der fragt die ausgänge
ab und legt die reaktionen fest. das ergebnis wird in einem
extra test-DB gespeichert.

der andere baustein wird am zyklusanfang aufgerufen und
belegt mir meine eingänge mit dem zustand laut dem
test-DB.

wenn die tests abgeschlossen sind lösch ich einfach den aufruf
und die bausteine aus dem programm.


----------



## duMMbatz (4 April 2011)

Ja, so mache ich es im Moment auch...

am Zyklusende rufe ich nen FC auf der mir durch diverse Ausgänge,Eingänge ( Endlagen oder Rückmeldungen ) überbügelt.

Genauso mit den Analogwerten. 

Ich dachte da aber eher an ein Skript das auf dem Rechner neben der PLCSim abläuft und dann die Werte in die Simulation schiebt.


----------



## PN/DP (4 April 2011)

Für kleinere Tests programmiere ich auch schon mal die Prozess-Reaktion im SPS-Programm in einem Baustein, der vor dem eigentlichen Programm aufgerufen wird und das PAE manipuliert. Macht sich auch gut bei der Simulation der Visu zusammen mit der SPS-Simulation - alles nur auf dem PG.

Harald


----------



## IBFS (5 April 2011)

PN/DP schrieb:


> Für kleinere Tests programmiere ich auch schon mal die Prozess-Reaktion im SPS-Programm in einem Baustein, der vor dem eigentlichen Programm aufgerufen wird und das PAE manipuliert. Macht sich auch gut bei der Simulation der Visu zusammen mit der SPS-Simulation - alles nur auf dem PG.
> 
> Harald



Ich kenne eine Firma aus Dresden, die hat eine komplette Anlage auf diese
Art als Simulation abgebildet. Vernünftig geht das aber nur in der Verfahrens-
technik und bei größeren wiederkehrenden Projekten, sonst ist das finanziell
nicht tragbar.

Frank


----------



## duMMbatz (5 April 2011)

Im moment arbeite ich an einer Lösung mit VBS script über PROSIM COM-Objekt....


----------



## Thomas_v2.1 (5 April 2011)

Bei verfahrenstechnischen Anlagen mache ich es auch über ein Simulationsprogramm welches in der SPS abläuft und das Eingangsabbild entsprechend überschreibt.
Hier habe ich entsprechende Bausteine für Schieber-/Pumpen-/Behälterfüllstandssimulationen usw.

Nachteil an dieser Lösung ist dass man Zugriffe über z.B. PEW die im Programm erfolgen damit nicht überschreiben kann. Gleiches gilt z.B. für Profibusteilnehmer. Um hier eine Simulation zu fahren muss das Programm dann leicht angepasst werden, bzw. eine Simulationsauswertung in den einzelnen Bausteinen gemacht werden (Simulation aktiv). Bei Plcsim kann ich mir zwar die PEWs in das Simulationsfenster legen und manuelle Werte setzen, aber eine Prozessimulation ist manuell natürlich etwas schwer.

Mit Plcsim und über die Prosim-Schnittstelle kann ich die Peripherie jedoch überschreiben. So eine Simulation hat den Vorteil dass am Programm keine Änderungen vorzunehmen sind, darum will ich auch beizeiten meine Simulationen auf diese Variante umstellen.
Dort könnte man entsprechende wiederverwendbare Simulationsobjekte erstellen, wie z.B. Profibusteilnehmer (FUs) die sich wie ein realer FU verhalten.

Ich bin momentan dabei sowas mittels Python zu realisieren, weil ich dann kein Visual-Studio (für C# oder VB) auf meinem Programmierrechner benötige. Außerdem entfällt dann die ganze Kompiliererei usw. Eine grafische Darstellung ist eigentlich nicht besonders wichtig, denn meistens hat man ein Panel oder Leitsystem welches einem die Daten anzeigt.
Eigentlich wäre das ein schönes Gemeinschaftsprojekt, bei dem eine kleine Bibliothek an Simulationsobjekten zusammenkommen könnte - aber das wird wohl ein Traum bleiben ;-)


----------



## duMMbatz (5 April 2011)

also ich kann euch des gerne mal vorstellen wenn ich fertig bin.


Ich lese einzelne Ausgangs Adressen wie nen Ausgang für ne Pumpe sobald der da ist stell ich nen Druck ein (Schreib des PEW).


----------



## Jochen Kühner (5 April 2011)

Thomas_v2.1 schrieb:


> Ich bin momentan dabei sowas mittels Python zu realisieren, weil ich dann kein Visual-Studio (für C# oder VB) auf meinem Programmierrechner benötige. Außerdem entfällt dann die ganze Kompiliererei usw. Eine grafische Darstellung ist eigentlich nicht besonders wichtig, denn meistens hat man ein Panel oder Leitsystem welches einem die Daten anzeigt.
> Eigentlich wäre das ein schönes Gemeinschaftsprojekt, bei dem eine kleine Bibliothek an Simulationsobjekten zusammenkommen könnte - aber das wird wohl ein Traum bleiben ;-)



Warum das ganze nicht in C# oder VB machen? Das ganze .NET Framework hat man doch heute eh schon auf dem PG (braucht man ja für WinCC flex, SEW, Sick und auf Step7 V11) und VS braucht man ja zum kompilieren nicht. (SharpDevelop könnte man ja noch draufpacken ist ja nicht so groß).

Da könnt Ich mir ein schönes Tool vorstellen, in dem die ganzen Komponenten (al la Umrichter, Ventile, ...) als Plugin DLLs realisiert sind welchen man einfach noch einen E-A Bereich gibt, welche dann auf bestimmte Ausgangswerte bestimmte Eingangswerte zurückgeben.

Falls du doch was in C# machen willst, könnt Ich mir vorstellen da mitzuhelfen...


----------



## duMMbatz (5 April 2011)

Jochen Kühner schrieb:


> Warum das ganze nicht in C# oder VB machen? Das ganze .NET Framework hat man doch heute eh schon auf dem PG (braucht man ja für WinCC flex, SEW, Sick und auf Step7 V11) und VS braucht man ja zum kompilieren nicht. (SharpDevelop könnte man ja noch draufpacken ist ja nicht so groß).
> 
> Da könnt Ich mir ein schönes Tool vorstellen, in dem die ganzen Komponenten (al la Umrichter, Ventile, ...) als Plugin DLLs realisiert sind welchen man einfach noch einen E-A Bereich gibt, welche dann auf bestimmte Ausgangswerte bestimmte Eingangswerte zurückgeben.
> 
> Falls du doch was in C# machen willst, könnt Ich mir vorstellen da mitzuhelfen...




mit C hab ich leider nur in der Schule nen bissl was am Hut gehabt und des meiste vergessen. Intressieren würde es mich aber schon.... Ich denke in VBS bekomm ich des schneller und besser gebacken... wenn du dich mit nem C anfänger zusammentun willst könnte man mal überlegen ob man sowas mal zusammen angeht


----------



## WeissT (6 April 2011)

Hallo,

ich will niemanden davon abhalten etwas selbst zu programmieren und dabei seine Kenntnisse zu erweitern. 

Aber dass was der Fragesteller hier programmieren möchte, ist in dem oben genannten SPS-VISU schon beinhaltet. 
In SPS-VISU ist eine über TCP/IP ansprechbare S7-SoftSPS vorhanden, über die Bauteile in SPS-VISU kann die Anlage abstrahiert werden, damit die Fortschaltbedingungen nicht von Hand herbeigeführt werden müssen.
Ebenso kann WinCC flexible, eine Visualisierung, Touchpanel mit Ethernet usw. mit der S7-SoftSPS verbunden werden.

Bei privatem Einsatz kann die sehr kostengünstige Standardversion (59 Euro) verwendet werden.


Gruss
T. Weiss


----------



## duMMbatz (6 April 2011)

WeissT schrieb:


> Hallo,
> 
> ich will niemanden davon abhalten etwas selbst zu programmieren und dabei seine Kenntnisse zu erweitern.
> 
> ...


 

Der versteh ich noch net so ganz....

Ich will eigentlich meine Programmierung testen und dafür möglichst wenig umschreiben im Programm. Es sind Zusammenhänge über die PLCSIM oder auch gern ein anderes Tool zu realiesieren.

Beispiel 1: Rohwasserventil AUF = Durchfluss von X m³/h an dem dazugehörigem IDM ( Analog Wert )

Beispiel 2: Pumpe an = Druck an dem dazugehörigen Drucktransmitter von X bar

Beispiel 3: FU geregelte Pumpe möglichst ist das komplette Regelverhalten zu Simulieren

Beispiel 4: Wenn die Dosierpumpe angesteuert wird = stellen sich gewisse Werte an den dazugehörigen Qualitätsmessungen ein

Undsoweiter und etc. ...........


----------



## WeissT (6 April 2011)

Hallo,


zu Beispiel 1:
Es wird ein Schieberegler für den analogen Eingangskanal verwendet. Auf diesem wird der Eingangsbereich (0-10V, 4-20mA ...) selektiert. Damit kann der physikalische Wert innerhalb dieses Bereichs verändert werden. Der analoge Kanal wird dabei mit dem entsprechenden EW verknüpft.
Ebenso könnte das Verschieben simuliert werden, indem in SPS-VISU ein Positionsmess-Stab verwendet wird. Der Mess-Stab liefert den Bereich 0-27647 und wird dabei über ein sich bewegendes Objekt überfahren und  verändert. Dass den Mess-Stab betätigende Objekt bewegt sich, sobald ein bestimmter Ausgang im SPS-Programm den Wert 1 hat.


Beispiel 2: 
Ähnlich wie Beispiel 1. Druck wird über einen analogen Kanal vorgegeben oder über Mess-Stab.


Beispiel 3:
Das komplette Regelverhalten eines FU kann nicht simuliert werden. Hier sollte man unter Umständen einen anderen Modus von SPS-VISU verwenden, nämlich die Möglichkeit, dass die Eingangssignale der Anlage auf eine reale CPU geschrieben werden. In diesem Fall wird der realen CPU die virtuelle Anlage aufgeprägt. Die S7-SoftSPS in SPS-VISU ist dabei abgeschaltet.

Beispiel 4:
Qualitätsmessungen ist etwas unspezifisch. Wenn es sich um analoge Werte handelt, dann siehe oben. Bei Binärsignalen kann dies über Taster, Schalter, Endschalter, sich bewegende Objekte usw. realisiert werden.


Wenn man ein 100%iges Zeitverhalten simulieren möchte, dann ist dies meiner Meinung nach auf einem Windows-PC (ohne Hilfsmittel) nicht möglich, denn hier liegen die Reaktionszeiten in anderen Zeitkategorien. 


Gruss
T. Weiss​


----------



## duMMbatz (7 April 2011)

Das ist gar net so einfach, es hängt an allen ecken und Kanten 

Kennst sich wer von euch so richtig gut in Visual basic 2008 Express Edition aus???


----------



## matt (8 April 2011)

Hallo Dummbatz,

Wenn es "hackt", dann sollte man sich vielleicht die vielen, tausenden Video-Blogs zu "Visual Basic" im Internet ansehen.

Viel Erfolg.


----------



## duMMbatz (8 April 2011)

Die helfen mir grad auch nicht denke ich, ich bin schon am googlen wie sau,... für Visual basic 6.0 oder .NET gibt es auch schon Beispiele von Siemens zur Einbindung von S7ProSim. Bei 2008 allerdings kommt er damit nicht klar. Beim Debuggen kommt ne Fehlermeldung und er benutzt des COM Objekt nicht.


----------



## duMMbatz (8 April 2011)

langsam geht es voran


----------



## Thomas_v2.1 (9 April 2011)

Ich musste doch wieder auf C# wechseln, bei Python gibt es so ein paar Beschränkungen.

Ich habe mal eine Grundstruktur aufgebaut wie man so eine Simulationsbibliothek aufbauen könnte. Quasi als Diskussionsgrundlage.

Die Ganze Plcsim-Anbindung habe ich in eine eigene Klasse gepackt, so kann man einfach über ein Write("E0.0", true) oder Write("PEW256", 27648) Werte in die Simulation schreiben oder mit Read("A0.0") Daten lesen.
Die Verwaltung von mehreren Plcsim Instanzen geht auch. Z.B. mit Write("3EW256", 27648) würde der Wert 27648 in die 3. Plcsim-Instanz geschrieben.

Ich habe mal ganz einfache zwei Simulationsobjekte erstellt.
- eine Pumpe mit Einschaltbefehl von der SPS und einer Betriebsrückmeldung
- ein Pumpendurchfluss mit einem analogen Eingang

Die Simulationsobjekte werden so angelegt:

```
P1 = new Pumpe("Pumpe 1", "A1.0", "E1.0");
P2 = new Pumpe("Pumpe 2", "A1.1", "E1.1");
P1_Durchfl = new PumpenDurchfluss("Pumpe 1 Durchfluss", "PEW512", P1.IsOn);
P2_Durchfl = new PumpenDurchfluss("Pumpe 2 Durchfluss", "PEW514", P2.IsOn);
```

Über den Callback P1.IsOn wird der Pumpendurchfluss mit der Betriebsmeldung der Pumpe verknüpft.

Die Simulationsobjekte werden einer Liste hinzugefügt und dann in einem Timer-Event nacheinander abgeklappert, womit man aber letztendlich nicht mehr viel zu tun hat.
Das Erstellen und Verknüpfen der Simulationsobjekte beschränkt sich also letztendlich auf den Code oben.

Meinungen?


----------



## vierlagig (11 April 2011)

Thomas_v2.1 schrieb:


> Meinungen?



hübsch!
und besonderes Lob verdient der Verzicht auf FensterSchablonen!


----------



## marlob (11 April 2011)

Thomas_v2.1 schrieb:


> Ich musste doch wieder auf C# wechseln, bei Python gibt es so ein paar Beschränkungen.
> 
> ...


Welche Beschränkungen gibt es denn dabei?


----------



## Thomas_v2.1 (11 April 2011)

marlob schrieb:


> Welche Beschränkungen gibt es denn dabei?



Die Beschränkung liegt nicht direkt bei Python, sondern in der pywin32 Bibliothek mit der man überhaupt erst Zugriff von Python auf das Prosim-COM-Objekt bekommt.
Der Zugriff funktioniert generell zwar, aber man kann nur einzelne Bits oder 4 Byte Typen auf mal schreiben. Also einzelne Bytes oder Int/Word, kann ich nicht schreiben. Das hat was mit dem Variant-Datentyp zu tun, denn an dem Typfeld des Variant entscheidet Plcsim wie viele Bytes geschrieben werden sollen. Das Lesen geht aber, weil man da die Zugriffsbreite über einen Parameter einstellt.


----------



## duMMbatz (18 April 2011)

*Alles im Griff*

So Jungs bis jetzt sieht es gut aus...

Jetzt nur noch erweitern.

Ich kann BITS, BYTES, Worte oder Doppelworte lesen und schreiben...

Kann die PLC Sim beeinflussen wie ich mag... die COM Schnittstelle zur PLCSIM über das PROSIM geht super...

'Get MB10 cyclic by Visual Basic Timer
PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Initialiesierung und Definition der Werte
Dim Value AsUShort
Dim Pumpe AsBoolean
Dim Druck As Int16
Dim Druck2 As Int16
Dim Ausgang_Pumpenbyte As Int16
Dim Ausgang_Pumpenbit As Int16
Dim Rueck_Pumpenbyte As Int16
Dim Rueck_Pumpenbit As Int16
Dim Druck_eingabe As Int16
Dim Druck_PEW As Int16
Dim Druck_eingabe2 As Int16
Dim Druck_PEW2 As Int16


'Anlagenwort lesen der Dezimalzahl
MyProSim.ReadFlagValue(10, 0, S7PROSIMLib.PointDataTypeConstants.S7_Byte, Value)
txtValue.Text = Value
'Anlagenwort lesen der einzelnen Bits
MyProSim.ReadFlagValue(10, 7, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit7.Checked)
MyProSim.ReadFlagValue(10, 6, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit6.Checked)
MyProSim.ReadFlagValue(10, 5, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit5.Checked)
MyProSim.ReadFlagValue(10, 4, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit4.Checked)
MyProSim.ReadFlagValue(10, 3, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit3.Checked)
MyProSim.ReadFlagValue(10, 2, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit2.Checked)
MyProSim.ReadFlagValue(10, 1, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit1.Checked)
MyProSim.ReadFlagValue(10, 0, S7PROSIMLib.PointDataTypeConstants.S7_Bit, chkbBit0.Checked)
'Pumpe1 lesen des Ausgangs
Ausgang_Pumpenbyte = NumericUpDown1.Value
Ausgang_Pumpenbit = NumericUpDown2.Value

MyProSim.ReadOutputPoint(Ausgang_Pumpenbyte, Ausgang_Pumpenbit, S7PROSIMLib.PointDataTypeConstants.S7_Bit, Pumpe)
'Abfrage auf den Zustand der Pumpe und eingebaren Wert f�r das PEW sowie R�ckmeldung
Rueck_Pumpenbyte = NumericUpDown4.Value
Rueck_Pumpenbit = NumericUpDown3.Value
'Lesen aus Eingabefelder
Druck_eingabe = NumericUpDown5.Value
Druck_PEW = Int(NumericUpDown6.Value)
Druck_eingabe2 = NumericUpDown8.Value
Druck_PEW2 = Int(NumericUpDown7.Value)
'Abfrage
If Pumpe = TrueThen Druck = Druck_eingabe Else Druck = 0
If Pumpe = TrueThen Druck2 = Druck_eingabe2 Else Druck2 = 0
'Schreiben der R�ckmeldung
MyProSim.WriteInputPoint(Rueck_Pumpenbyte, Rueck_Pumpenbit, Pumpe)
'Schreiben der PEWs wenn checkBox gesetzt
If CheckBox1.Checked = TrueThen
MyProSim.WriteInputPoint(Druck_PEW, 0, Druck)
MyProSim.WriteInputPoint(Druck_PEW2, 0, Druck2)
EndIf
EndSub


__________________________________________________________

Nen Teil an Code hab ich weggelassen, weil es das Siemens Beispiel Projekt ist. Wichtig ist das Format INT16 weil in der "hochsprache" das INT 32 Bits hat. Das hat ne menge Zeit beim Debuggen gefressen, weil man das Nachbar PEW mit überbügelt hat.


----------



## Verpolt (18 April 2011)

Hallo,

Wie wäre es, Haltepunkte im Programm zu setzen?


----------



## duMMbatz (18 April 2011)

Verpolt schrieb:


> Hallo,
> 
> Wie wäre es, Haltepunkte im Programm zu setzen?


 

Ähm... noe...

Des läuft ja ... und des super... 

Klar hab ich beim Debuggen auch Haltepunkte gesetzt.


----------



## Thomas_v2.1 (18 April 2011)

@dummbatz
Ist das nur ein Testprogramm, oder willst du deine Simulation wirklich in diesem Stil programmieren?
Ich meine wenn du jedes Objekt so ausprogrammieren willst, ist erstens nichts wiederverwendbar und zweitens ist das doch total aufwändig.
Diese Verquickung von GUI und Programmlogik ist bei VB-Programmen symptomatisch, das kann man wohl nicht ändern.

Hast du dir meinen Ansatz mal angesehen? Auch wenn es in C# geschrieben ist, in VB.net kann man genauso objektorientiert programmieren.


----------



## duMMbatz (18 April 2011)

Thomas_v2.1 schrieb:


> @dummbatz
> Ist das nur ein Testprogramm, oder willst du deine Simulation wirklich in diesem Stil programmieren?
> Ich meine wenn du jedes Objekt so ausprogrammieren willst, ist erstens nichts wiederverwendbar und zweitens ist das doch total aufwändig.
> Diese Verquickung von GUI und Programmlogik ist bei VB-Programmen symptomatisch, das kann man wohl nicht ändern.
> ...


 
Das auf den Windows Forms ist grad nur ein Versuch, des wird noch anders aufgebaut. Dann arbeite ich auch als Objekt eine Windoof Form als Ventil, wo ich die Daten schreibe und das zig mal Aufrufe je nach dem wieviele Ventile ich habe. Bei Pumpen genauso. 

Ich wollte euch hiermit eigentlich nur die Problematik mit dem Integer Format in Visual_Basic und S7 nahe bringen. Damit nicht weitere über diese steine stolpern.

Int16 ist hierfür der Schlüssel zum Erfolg. 

Auf jedenfall ist das mit den Dropdown Menüs eine gute sache. 
So möchste ich später am Objekt auch die Adressen zuweisen. 

ROFLMAO::-D


----------



## Verpolt (18 April 2011)

duMMbatz schrieb:


> Ähm... noe...
> 
> Des läuft ja ... und des super...
> 
> Klar hab ich beim Debuggen auch Haltepunkte gesetzt.




Ups.....

War auf der ersten Seite des Threads steckengeblieben.

Da waren ja noch 3-4...... ROFLMAO:

Naja, trotzdem Viel Spass


----------



## Thomas_v2.1 (18 April 2011)

duMMbatz schrieb:


> Ich wollte euch hiermit eigentlich nur die Problematik mit dem Integer Format in Visual_Basic und S7 nahe bringen. Damit nicht weitere über diese steine stolpern.
> 
> Int16 ist hierfür der Schlüssel zum Erfolg.


Das ist nicht nur bei VB so, sondern auch bei allen anderen Sprachen in denen das COM-Objekt verwendet wird. Bei C# sind die Datentypen ebenfalls Int16 und Int32. Wie das Prosim-Objekt mit dem Variant Typ umgeht, habe ich direkt einen Post über die (bzw. Seite vorher) geschrieben.



duMMbatz schrieb:


> Auf jedenfall ist das mit den Dropdown Menüs eine gute sache.
> So möchste ich später am Objekt auch die Adressen zuweisen.


Warum willst du die Adressen denn über die GUI einstellbar machen, wenn der eigentliche "Prozess" nur im Code ausprogrammiert werden kann? Das könnte man nur gebrauchen, wenn du immer das gleiche Programm hast, sich aber nur die Adressen verändern. Und das ist doch eher unwahrscheinlich.

Aber wenn das nur ein Anfang ist, wirst du irgendwann selber dahinterkommen dass du mit diesem Ansatz ab einer gewissen Komplexität in einer Sackgasse landest.


----------



## duMMbatz (19 April 2011)

@Thomas_v2.1

Ich hab leider kein C hier auf meinem Rechner, konnte mir des leider nicht so anschauen. Und mit dem Editor bekomm ich es nicht auf.

Mein ziel ist es so auszuprogrammieren, das ich die Adressen über die Menüs in eine Art Liste schiebe....

Bezeichnung /  Ausgang / Rückmeldung / Analogwert1 / Analogwert2
Eintrag1
Eintrag2
.
.
.
Eintrag 150

dieses für Ventile  und für Pumpen

Je nach Anzal der Einträge wird der Code bearbeitet.


----------

