Touchpanel gibt nicht immer Signal an SPS weiter

Gerdo

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forengemeinde,
Meine Aufgabe: Ich soll eine neue Beleuchtung planen, dabei soll die Beleuchtung in 6 verschiedene Beleuchtungsbereiche eingeteilt werden. Die Bereiche sollen alle einzeln an- und ausgeschaltet werden können. Das ganze soll über ein Touchpanel (Siemens Simatic Panel KTP1000) in Verbindung mit einer S7-1200 gesteuert werden können.Mein SPS Programm müsste normalerweise richtig sein, da ich mit Externen Tastern die Eingänge ansteuern kann und dabei hat alles so geklappt wie es soll.Für die einzelnen Beriche schalten zu können habe ich im TIA Portal
Schaltflächen benutzt mit dem Ereignis „SetzeBitWährendTasteGedrückt“ und dann die passende Variable zu den jeweiligen Bereichen zugeordnet

Mein Problem: Wenn ich über das Touchpanel die Eingänge ansteuern will funktioniert dies nur ab und zu, manchmal muss man 5 mal die Schaltfläche auf dem Touchpanel drücken bis sich etwas an der SPS tut.
Im Anhang noch Bilder von meinem SPS Programm und ein Bild von der Touchpanel Bedienoberfläche.

Über eure Hilfe wäre ich sehr dankbar :p
 

Anhänge

  • Programm Netzwerk1.gif
    Programm Netzwerk1.gif
    65,4 KB · Aufrufe: 104
  • Programm Netzwerk2.gif
    Programm Netzwerk2.gif
    34,3 KB · Aufrufe: 72
  • Touch.gif
    Touch.gif
    97,8 KB · Aufrufe: 86
Da kann ich den Ralf nur zustimmen, da diese FUP Malerei unübersichtlicher ist als
AWL mit Pointer, es ist schwer nachzuvollziehen.

Im ersten Bild schaltest du über Flanken mit S2 'Ein' und wieder 'Aus', vielleicht gibt es da
Überschneidungen. Kannst du das Programm mal in AWL wandeln, damit man die ablauffolge
des Code aufdröseln kann?
 
Hallo Gerdo,
Hallo Euch alle,

ich habe gerade kein PG zur Verfügung, somit kann ich die Hilfe nicht einsehen.
Kann es sein, dass man "Setze Bit während Taste gedrückt" bei S7-Steurungen nicht verwenden soll (Irgendwie was mit bit in Byte oder so)?
Ich verwende "Setzte Bit" bei Ereignis "Schaltfläche Drücken" und "Rücksetzte Bit" bei Ereignis "Schaltfläche loslassen".


Gruß
S7_Programmer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine "offizielle" Anweisung dazu habe ich noch nicht gesehen.

Allerdings war das Verhalten von Tasten bisher nicht immer einheitlich, wenn "SetzeBitWaehrendTasteGedrückt" projektiert wurde.

In flexible 2008 gab es mal ein hotfix, dass den "bug" behoben hat: Bit bleibt an, wenn Taste losgelassen wird.

Mit TIA jetzt wieder so ein Käse. Bit bleibt an, wenn bei Tastendruck ein Bildwechsel von der SPS ausgelöst wird... :confused:

Scheinbar war es wohl in der Vergangenheit immer so, dass die Anweisung mit "SetzeBit / RücksetzeBit" so funktioniert hat wie erwartet.
Ich werde in Zukunft nur noch so projektieren, auch wenn das zunächst einen Mehraufwand darstellt.
 
Also, das mit der Funktion setzebitwährendtastegedrück funktioniert bei meinem tp 700 einwandfrei.
Ich gehe eher von einem Programmierfehler aus.
Die Funktion solltest du lieber mit xoder programmieren.
Weniger Programmieraufwand und leichter zu verstehen.

Gesendet von meinem ARCHOS 101G9 mit Tapatalk 2
 
und wofür sollen die ganzen Eingänge e0.2-e0.6 am Rücksetzeingang des m88.0 sein?:confused:

in AWL sieht so ein xover in so aus

u e0.0
fp m0.0
x m0.1
= m0.1


in FUP etwa so (hoffe das passt in der Darstellung).

m0.1
e0.1---P---x------=m0.1
m0.1-------'

So, und nun: fröhliches Programmieren:p

edit: sag mal, bearbeitest du mit dem Panel direkt die Eingänge?
ich möchte dir ja wirklich nicht zu nahe treten, aber schon mal was von Datenbausteinen gehört?
Man beackert nicht einen Eingang mit dem Programm, HMI oder so.
Nur mal am Rande
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
edit: sag mal, bearbeitest du mit dem Panel direkt die Eingänge?
ich möchte dir ja wirklich nicht zu nahe treten, aber schon mal was von Datenbausteinen gehört?
Man beackert nicht einen Eingang mit dem Programm, HMI oder so.
Nur mal am Rande

Muss ich hier insofern Zustimmen, dass im Bild 1 der E0.1 mir zu häufig an den Flankenauswertungen steht :ROFLMAO:
 
Ich war heut erst wieder auf der Arbeit un konnt eure Vorschläge heut erst ausprobieren ;)

Also ich hab verschiedene Dinge jz ausprobiert, Touch kalibriert -> keine Änderung, dann hab ich die Ereignisse von den Schälflächen auf Setze und Rücksetze Bit geändert aber das Problem besteht immernoch.


und wofür sollen die ganzen Eingänge e0.2-e0.6 am Rücksetzeingang des m88.0 sein?:confused:

Die einzelnen Bereiche sollen entweder über die jeweilige Schaltfläche des Bereiches ein und aus oder komplett über die Schaltfläche "Ein" eingeschaltet bzw "Aus" ausgeschaltet werden können. Wenn man "Ein" drückt werden die Bereiche über Timer nacheinander in einem Abstand von 10ms eingeschaltet. E0.2-E0.6 am rücksetzeingang setzen den im "Ein-Fall" gesetzen Timer zurück damit man einzelne Bereiche, in denen das Licht gerade nicht gebraucht wird, mit der dazugehörigen Schaltfläche wieder ausschalten kann


edit: sag mal, bearbeitest du mit dem Panel direkt die Eingänge?
ich möchte dir ja wirklich nicht zu nahe treten, aber schon mal was von Datenbausteinen gehört?
Man beackert nicht einen Eingang mit dem Programm, HMI oder so.
Nur mal am Rande

Also ich habe die Schaltflächen direkt mit den Eingängen der SPS verknüpft. Was meinst du mit Datenbausteinen? Ich habe mein Programm in einem FC geschrieben.

Ich versuche morgen das Programm auch mal in AWL hochzuladen.
Tut mir leid wenn ich nicht gleich alles verstehe aber ich bin neu auf diesem Gebiet..

Vielen Dank für eure Hilfe bis jetzt
icon14.png


Gruß Gerdo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du darfst hier keine Eingänge setzten.
Eingänge ist das was du als Hardware an der CPU hast.

Wenn du vom Touch Bits zum steuern verwenden willst, nimmst du am besten Datenbausteine oder notfalls Merker.
 
Ich hab beim Ereignis von den Schaltflächen "Setze Bit" zB. S1 als Variable gemacht. Und das S1 hab ich mit E0.1 vom PLC verknüpft.
Ist das der Fehler den du meinst oder meinst du was ganz anderes?
 
Ich hab beim Ereignis von den Schaltflächen "Setze Bit" zB. S1 als Variable gemacht. Und das S1 hab ich mit E0.1 vom PLC verknüpft.
Ist das der Fehler den du meinst oder meinst du was ganz anderes?

Das geht schon wenn es den E0.1 nur Virtuell gibt, allerdings muß du daran denken das Bit
wieder zurückzusetzen. Entweder in der HMI mit 'Taste Loslassen' durch die Funktion
'Rucksetze Bit'. Oder in der CPU am Programende.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab beim Ereignis von den Schaltflächen "Setze Bit" zB. S1 als Variable gemacht. Und das S1 hab ich mit E0.1 vom PLC verknüpft.
Ist das der Fehler den du meinst oder meinst du was ganz anderes?

Um den ganzen aus dem Weg zu gehen, nimm für die HMI-Tasten mal Merker, schließlich
willst du ja zu allererst sichere Schaltvorgänge vom HMi aus erreichen.
 
Wenn du vom Touch Bits zum steuern verwenden willst, nimmst du am besten Datenbausteine oder notfalls Merker.

Was genau ist mit Datenbausteinen gemeint? Soll ich in einem Datenbaustein anstatt in einem Funktionsbausteiin mein Programm schreiben oder kann man so ein Datenbaustein ins programm einbringen?

Um den ganzen aus dem Weg zu gehen, nimm für die HMI-Tasten mal Merker, schließlich
willst du ja zu allererst sichere Schaltvorgänge vom HMi aus erreichen.

Also ich hab jetzt anstatt E0.1 den Merker M0.6 beim Ereignis einer schaltfläche gesetzt bzw. rueckgesetzt. Entweder hab ich das jz komplett falsch verstanden oder es funktioniert nicht, weil jetzt kann ich so auf aufs HMI hauen wie ich will un es tut sich gar nix ;)

Nochmal Sorry das ich ned gleich alles verstehe, wie gesagt bin noch ziemlich neu auf dem Gebiet.
 
Hallo,
vielleicht ist einfach der Erfassungszyklus deiner Variable zu lang . Wenn 1s eingestellt ist, ist dies in manchen Fällen schon zu lang. Gerade bei Tasten sollten die Zyklen recht kurz gehalten sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Als erstes solltest du dein Programm überarbeiten.
Denk mal über die xoder-Variante nach, damit kannst du in deinem Fall alles realisieren.
Wenn das dann steht, da du ja mehrere Lichtkreise hat, definierst du eine Schnittstelle. Am besten ist auch, du machst das in einem fb und nicht im fc.
Dann rufst du pro Lichtkreis den fb auf und liegt an die Schnittstelle die Ein- und Ausgänge

Gesendet von meinem GT-I9100 mit Tapatalk 2
 
Ist AWL überhaupt möglich mit einer 1200? Mir war bis jetzt nur FUP und KOP bekannt. Aber das war noch im TIA-Portal V10.

Jetzt wollen wir dich mal ein wenig an die Hand nehmen.
überlege dir, von wie vielen Schaltstellen maximal ein Lichtausgang geschaltet wird.
Also z.B. 4 Taster und einaml über das Display einzeln und einmal Alle über das Display.
Somit hast du nun 6 In-Variablen.
Dann brachst du eine Out-Variable um den Ausgang für das Lichtband anzusteuern.
Deine zeitversetze Einschaltung bei Alles-an würde ich z.B. über eine Schrittkette mit automatischer Weiterschaltung realisieren.
Du rufts in jedem Schritt einen Timer auf, wenn der sein Soll erfüllt hat, schaltet er die In-Variable für das Lichtband und macht zugleich die Weiterschaltung der Schrittkette zur Einschaltung des nächsten Lichtbandes.
Legst du den Zeitwert in einer Variable ab, und benutzt als Sollzeit für jeden Timer diese Variable, ist die Zeit Pause zwischen der Automatischen Lichtbandeinschaltung variabel üder das Display einzustellen.
So, hoffe, ich überfordere dich im Moment nicht.
 
Zuletzt bearbeitet:
Hab mal auf die Schnelle was gemacht:


Schnittstelle für den FB1
FB_Stromstossschalter_Schnittstelle.gif

Das Programm des FB1
FB_Stromstossschalter_Programm.gif


1. Aufruf im OB1 mit DB1
OB1_netzwerk1.gif


2. Aufruf im OB1 mit DB2
(andere Eingänge an der Schnittstelle)
ob1_netzwerk2.gif

Um die Zeitschaltung kannst du dich jetzt kümmern...:ROFLMAO:
 
Zurück
Oben