Step 7 CP343-1 einbinden

Zuviel Werbung?
-> Hier kostenlos registrieren
Erstmal danke für Deine Ausführungen. Habe im FC11 die 1 und 2 auf 0 und 1 gestellt und siehe da,
die LED wird perfekt gesteuert :) So gefällt mir das.
Ein weiterer Schritt in die richtige Richtung.
Frage: Kann man den Namen "Platine_A" in "Platine1" usw. ändern oder ist das dann falsch?
Es sollen ja später doch viel mehr Platinen folgen.
Wie schalte ich die LED wieder aus? Also noch einen neuen Merker LED_aus setzen?
Korrigiere: Habe rausgefunden,wie die LED in der VAT wieder ausgeschaltet wird.
Werde nun mal ein einfaches Schalten mit Eingängen probieren.
Die VAT Send/Recv geht jetzt auch wieder. Muss nur die Steuerwerte in der ganz rechten Spalte ändern und dann Schuss :)
 
Zuletzt bearbeitet:
Im DB11 kannst und sollst du den Datenstrukturen sinnvolle Namen geben, die zu deiner Anlage passen. Und auch weitere Variablen anlegen, je Platine eine Instanz des UDT1. Du kannst auch weitere DBs anlegen. Ganz nach deinem Geschmack. In den Namen muss das Wort "Platine" nicht drin vorkommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe es geändert auf Platine_1 .... statt A,funktioniert.
Wie muss ich das verstehen mit einer weiteren Instanz des UDT1 ? Also ihm weiter aufüllen?
Habe den DB11 mal weiter aufgefüllt,das sollen 8 Weichen werden, jede Platine eine Weiche.

Wollte eben mit dem FC11 über den E16.0 den M 100.1 aktivieren,aber wenn ich den E16.0 auf 1 steuere gehts nicht weiter.
 
Zuletzt bearbeitet:
Ein UDT ist nur eine Deklaration, wie eine Datentyp/Struktur aussieht. Die belegt aber noch keinen Speicher, man kann nichts hineinspeichern. Eine Variable eines Datentyps im Speicher anlegen nennt man Instanz. Das gleiche bei FB, da werden die lokalen Variablen im FB nur deklariert. Um damit zu arbeiten, muss man eine Instanz anlegen (Instanz-DB oder Multiinstanz in einem DB).

Zum E16.0
Das Prozessabbild von Eingängen kann man nicht steuern, sondern nur "forcen", weil gleich danach der Wert im Prozessabbild durch den aktuellen Wert von der realen Baugruppe überschrieben wird.
Du müsstest an den E16.0 der Eingangsbaugruppe einen Taster oder Schalter oder Sensor anschließen und damit den Eingang steuern. Oder forcen - mit einer VAT. Siehe die Step7 Hilfe
 
Ah ok,ja danke für die Hinweise. Hatte es auch mit einem Taster probiert,aber da wrde es auch nicht durchgeschaltet.
Ist der FC11 der richtige Baustein,um Abhängigkeitsschaltungen im bahntypischen Sinne zu programmieren?
Oder ist es sinnvoller,einen neuen FB oder FC zu erstellen?
Habe auch mal den M100.1 versucht anzusteuern mit der " Brille" das klappte auch nicht.
Aber in der VAT läuft alles wie gewünscht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß nicht, was "Abhängigkeitsschaltungen im bahntypischen Sinne" sind.
Im Grunde ist es egal, wo du das programmierst. Ich würde in anderen FC oder FB die ganzen Logiken programmieren (z.B. strukturiert nach Anlagenteilen "Berlin", "Hamburg", "Honolulu" ...) und dort auch die Zuweisungen an BOOL-Variablen für die LED-"Ausgänge" machen (Merker oder nicht von Baugruppen belegte A100.0 .. A127.7 oder ein BOOL-Feld in einem DB) für jede LED, wann die leuchten und wann blinken soll (wie die beispielhaften M100.0 und M100.1 für LED 0). Und im FC11 nur das Übertragen/Rangieren der Soll-Zustände "Ein" oder "Blinken" an die Steuerbits in den Platinen-Steuerstrukturen.
 
signaltechnische Verknüpfungen für die Anlage oder im Reallive die Relaisräume der Stellwerke. ja strukturiet gefällt mir,zB. Weiche Hauptsignal,Rangiersignal usw. so habe ich mir das auch gedacht ,in anderen FC oder FB. Was wäre besser,FC oder FB,
also mit oder ohne Gedächtnis?
 
Das kannst du entscheiden.
Wenn du Flanken, SR-Glieder,... verwendest, dann nimm einen FB, sonst einen FC.
Wenn du dir unsicher bist, ob du einen FC bzw. FB nehmen sollst, dann nimm einen FB.

MfG Hannes
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend allerseits :)

Nun habe ich mal mit E16.0 und E16.1 die Merker 100.0 oder 100.1 angesteuert,in der VAT auch korrekt zu sehen.
Aber wie kriege ich den Sendeanstoss dafür hin? Das bekomme ich noch nicht hin.
Der M99.0 wäre dafür der richtige,aber den sehe ich nicht in der Symboltabelle.
Bitte um Rat.
Nachtrag: Habe das erstmal so hinbekommen,mit E16.2 stosse ich den Sendeauftrag manuell an.
Bleibt aber nicht so, so kann ich wenigstens schonmal die LED physisch von aussen schalten.

Gruss Helmut
 

Anhänge

  • 013.PNG
    013.PNG
    164,6 KB · Aufrufe: 12
Zuletzt bearbeitet:
Der M99.0 wäre dafür der richtige,aber den sehe ich nicht in der Symboltabelle.
Na dann gibt dem M99.0 halt selber ein Symbol in der Symboltabelle oder verwende eine andere BOOL-Variable ...

Aber wie kriege ich den Sendeanstoss dafür hin? Das bekomme ich noch nicht hin.
Wie ich schon paarmal schrieb: du musst entscheiden, ob du zyklisch senden willst oder nur bei Änderungen. Und was für deine noch so unbekannt schlummernden späteren Ideen das besser geeignete Verfahren ist.
• Immer alles zyklisch senden ist einfach. (so arbeitet z.B. ein Feldbus)
• Nur bei Änderungen senden ("azyklische Dienste"): da musst du was zusätzlich programmieren, was die Änderung erkennt.

Um eine Änderung zu erkennen, muss man sich einen Zustand merken und bei der nächsten Auswertung vergleichen, ob da immer noch der gleiche Zustand wie beim letzten Merken herrscht.

Bei dir bietet es sich an, den Zustand der Eingangsbits für die LED-Platinen zu merken und zu vergleichen. Weiter bietet sich an, nicht jedes Bit einzeln zu merken und zu vergleichen, sondern das für möglichst viele Bits gleichzeitig zu tun - z.B. immer 32 Bits auf einmal als DWORD verarbeiten.

Nimm dir ein Blatt Papier und einen Stift und male dir übersichtlich auf, was du da machst und was du noch brauchst.

Die Eingangsbits für den LED-Platinen-"Treiber" sind die M100.x ff. (unabhängig von der spezifischen Platinen-Hardware) oder die Bits in den DB-Strukturen der Platinen (DB11, Hardware-abhängig). Als Merk-Bits könntest du Merker M200.x ff. nehmen. Oder auch Bits/Bools in DB, die lassen sich allerdings nicht so einfach sowohl als Bit als auch als DWORD symbolisch ansprechen (wobei du die Merkbits für die Änderungs-Erkennung nur als DWORD ansprechen musst). Du hast eine uns unbekannte Anzahl von LED-Platinen. Da musst du schon wieder selber entscheiden, ob du die Änderungen erkennen und das Senden für jede Platine einzeln machst oder für alle Platinen zusammen (was einfacher ist).

Dein Programm müsste für den Sendeanstoß bei Änderung etwa sowas realisieren:
Code:
// Änderung erkennen und signalisieren
--| MD100 <> MD200 |--+--(S M99.0)
                      |
--| MD104 <> MD204 |--+
...                   |
--| MD1xx <> MD2xx |--+

// Zustände merken für nächsten Zyklus
MD100--|MOVE|--MD200

MD104--|MOVE|--MD204
...
MD1xx--|MOVE|--MD2xx
 
Guten Morgen Harald :)

Danke für die Ausführungen von Dir,werde das mal sacken lassen.
Grundsätzlich sollen nur Änderungen senden. Es werden fürs Erste 8 Weichenplatinen und 6 Signalplatinen
zum Einsatz kommen.
Bin grade dabei,erste eisenbahnsignaltechnische Logiken zu erstellen. Geht bei mir nicht ganz so schnell,aber ich übe.
Bei der Bauart WSSB (DDR-Stellwerkstechnik) werden maximal acht LEDs und ein Taster pro Gleisbildfeld benötigt.
Kann ich Deinen AWL-Script so verwenden,auch wenn ich schon etwas in KOP erstellt habe?
So wie ich das nun verstehe,könnte ich sozusagen 4 Platinen Mit eienm DWORD abarbeiten.
8 LEDs auf auf 4 Platinen verteilt. Oder sehe ich da wieder was falsch?

Anbei mal ein Bild der Gleisbildfelder in WSSB-Technik,damit Du siehst wovon ich rede.
Wenn willst,kannst ja mal ins Zip reinschauen.

Gruss Helmut
 

Anhänge

  • Gleisbildfelder_1.jpg
    Gleisbildfelder_1.jpg
    168,1 KB · Aufrufe: 17
  • Lan3.zip
    Lan3.zip
    1,8 MB · Aufrufe: 2
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann ich Deinen AWL-Script so verwenden,auch wenn ich schon etwas in KOP erstellt habe?
Was für ein "AWL-Script"? Meinst du meine Programm-Skizze aus Beitrag #150? Das ist kein AWL, sondern soll stark vereinfacht angedeutetes KOP sein, was nur zeigt, welche Anweisungs-Boxen in KOP wie verschaltet werden sollen.

Man kann KOP- und AWL-Netzwerke allerdings im Baustein mischen. siehe z.B. die Bausteine FB100 und OB1, da sind einige Netzwerke in AWL und die anderen in KOP.


Bei der Bauart WSSB (DDR-Stellwerkstechnik) werden maximal acht LEDs und ein Taster pro Gleisbildfeld benötigt.
Wie kommt der Taster zur SPS? Wird der direkt auf Digitaleingänge der SPS verdrahtet oder muss der mit dem CP343-1 abgefragt werden? Da müsste die Abfrage zyklisch stattfinden ("nur bei Änderung" geht da ja schlecht).


Es werden fürs Erste 8 Weichenplatinen und 6 Signalplatinen zum Einsatz kommen.
(...)
So wie ich das nun verstehe,könnte ich sozusagen 4 Platinen Mit eienm DWORD abarbeiten.
8 LEDs auf auf 4 Platinen verteilt. Oder sehe ich da wieder was falsch?
Ist so ein "Gleisbildfeld" genau die von dir so genannte "Platine"? Sind die Steuertelegramme für die Platinen gleich oder unterschiedlich, wenn weniger als 16 LED drauf sind?
Oder sind da (universelle) Platinen für 16 LED und die müssen zu den Gleisbildfeldern verdrahtet werden, so dass mehrere Gleisbildfelder an einer Platine sind oder ein Gleisbildfeld auch an mehreren verschiedenen Platinen hängen kann?

Jede "Platine" hat ein Steuertelegramm für (max) 16 LED mit je 2 Steuerbits = genau 1 DWORD Steuerbits
Oder haben die unterschiedlichen Platinen unterschiedlich lange Steuertelegramme, wenn weniger LED vorhanden sind?
Wenn ich nicht groß über die Details nachdenke und keine Detailinformationen vom Fragesteller habe, dann würde ich je Platine genau 1 DWORD vorsehen (Maximalausbau), auch wenn nicht alle 16 LED angeschlossen und genutzt werden. Das vereinfacht das SPS-Programm. Welche LED-Ausgänge genutzt sind und gesteuert werden sollen, machst du über die Zuweisungen an die M100.x ff. Unbenutzte LED-Ausgänge benötigen keine Zuweisungen an die M100.x, allerdings sollten die unbenutzten Merker irgendwann einmal auf 0 initialisiert werden (was die SPS bei jedem STOP->RUN macht), weil die unbenutzten Merker Einfluß auf die DWORD-weise Änderungs-Erkennung haben. Wenn man Merker sparen will/muss, dann kann man natürlich auch nur Merker für tatsächlich vorhandene LED vorsehen (unabhängig davon wie die LED auf die Platinen verteilt sind), dann wird aber das Programm etwas umständlicher und vielleicht größer.


Wenn willst,kannst ja mal ins Zip reinschauen.
Zuweisungen an Variablen sollte man im Programm machen bevor man den Inhalt verknüpft (auch wenn die Variablen den Inhalt speichern können), damit man nicht unnötige Signalverzögerungen bekommt. Deine Zuweisungen an die M100.x im FC11 nach der Verknüpfung der M100.x werden erst im nächsten OB1-Zyklus an die Platinen weitergegeben. Und ich würde die Zuweisungen nicht im FC11 machen, sondern in einem anderen FC/FB, der vor dem FC11 aufgerufen wird. Im FC11 soll nur das umrangieren von M100.x an die Platinen-Bits sein.
 
Nabend Harald :)

Jedes Gleisbildfeld soll eine Platine ansteuern. Ja, das mit mit dem DWORD ist gut (Maximalausbau),die LEDs kann ich dann
selbst an der Platine verdrahten. Damit wäre dann alles gleich für jede Platine,hört sich gut an.
Mit der Tasterabfrage bleibe ich erstmal an den direkten Eingängen der SPS,aber über CP343-1 wäre auch nicht schlecht.
Möchte erstmal das Senden für die LEDs abarbeiten,bevor es ans Empfangen geht.
Deine wertvollen Anmerkungen müssen erstmal bei mir oben in der Denkschale einsickern,geht nicht ganz so schnell bei mir.
Aber Geduld führt zum Erfolg.

Gibt Neuigkeiten : Habe die 314 gegen eine 316-2DP ausgetauscht und Netzwerk am Laufen.
Beide VATs laufen somit weiter wie gewohnt. Staune,dass ich das so zügig hinbekommen habe.
Diese CPU ist wohl die bessere Wahl, habe auch noch eine 315-2DP in Reserve.


Gruss Helmut
 
Zuletzt bearbeitet:
Zurück
Oben