TIA Elektronischer Schutzschalter, BASIC SMART in TIA V14 einbinden

meikelneit

Level-2
Beiträge
147
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen guten Tag und frohe Ostern,

ich habe mal eine Frage zu einem elektronischen Schutzschalter von Block, ich glaube er heißt PM FU DC24: http://www.block.eu/de_DE/products/5505134.htm#downloads (TIA V14)
Ich möchte diesen Baustein, der im Downloadbereich öffnetlich erhältlich ist, in ein bestehendes Projekt einbinden. Im enddeffekt möchte ich nur auf dem HMI ausgeben das der Schutzschalter einen Kreis stromfrei geschaltet hat, und welchen Stromkreis, dazu das ganze über einen Taster quitttierbar.
Ich bekomme den Stein aber im moment nicht im geringsten zum laufen.
Vielleicht kennt ja jemand schon diesen Stein, oder hat die Muße sich den mal herunter zu laden und anzugucken. Falls nicht müsste ich die Netze einmal kopieren und hier posten. Wie gesagt der Stein ist öffentlich.
Bis jetzt habe ich im wesentlichen die Anschlüsse S1 und S2 in einem leeren byte auf MB300.0 und MB300.1 gelegt, weil so wie ich das versatanden habe, wertet der Stein E-byte0.0 und E-byte0.1 aus, dann im ersten Netz das E-byte0 durch das Merkerbyte ersetzt und mal getesteet wie der Stein darauf reagiert. Bis jetzt keine lebenszeichen. Hatte aber auch nur 10 min am Donnerstag Zeit, natürlich kommt man mit sowas immer kurz vor Feierabend an.

Für jeden Rat oder Hinweiß wäre ich sehr dankbar, bin noch relativ neu in der SPS Programmierung.

PS: Mir stehen selbst leider nur die Dokus aus dem Downloadbereich zur Verfügung. (Katalog Datenblatt, Bedienungsanleitung, Das Kommunikationsprotocoll)

PSS: ich habe grade nochmal ein bischen in das Kommunikationsprotokoll geguckt. Falls jemand die Muße gefunden hat mal in den Baustein zu gucken. Meine Frage wäre direkt schonmal folgende, ich möchte ja rausfinden ob ein Kreis in Störung ist, und wenn welcher. Sowie ich das sehen ist da für mich Byte 2, bit 0-3 von interresse, ist das korrekt? Falls ja, wie lese ich die denn aus? Ich werde aus der Schnittstelle echt nicht schlau.
Muss ich da auch noch über das Konfigurationsbyte die Kommunikation jeweils anstoßen?

Mit freundlichem Gruß
Meikelneit
 
Zuletzt bearbeitet:
Hi,

um den Baustein in dein Projekt zu kommen tust du folgendes:

0. Das Beispielprojekt öffnen von Block
1. Ganz rechts im TIA auf Biblotheken klicken
2. Unterm Reiter "Globale Bibliotheken: das ganz Linke Symbol klicken (Buch mit Sonne?) -> Dadurch erstellst du eine neue Bibliothek die du irgendwie bennenst
3. Dann ziehst du den FB1 Tele_Generator_2 in deine neue Bibliothek unter "Kopiervorlagen"
4. Dein bestehendes Projekt öffnen und den Baustein aus der Bibliothek in dein bestehendes Projekt ziehen.

mfg Clyde
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi clyde, danke für die schnelle antwort. Ich fürchte ich habe den Thread dann sehr missverständlich betitelt, ich habe den Baustein schon in meinem Projekt. Ich weiß nur nicht wie ich ihn jetzt zum laufen bekomme.
 
Hey,

ich glaub ich verstehe dein Problem jetzt. Er verundet ja eigentlich nur einen Kanal (EB0) und schiebt es dann in MW204. Dann wertet er an Status_In nur M205.0 aus. Wie er jetzt die anderen Kanäle bekommt ist mir etwas schleierhaft. Ich guck nochmal in die Doku.
 
Zuletzt bearbeitet:
So,

jetzt ist mir alles klar. Er sendet über S2 ja ein Bitmuster an den FB was ausgewertet wird. D.h. wenn du EB0 und AB0 durch deine Adressen in der SPS ersetzt sollte es schon funktionieren. Du schreibst bei dir ist MW300 frei, dann müsstest du am Eingang Status_In auch M301.0 schreiben dann sollte es laufen. Ich frage mich nur warum er das so umständlich mit dem schreiben des EBs auf ein Merkerword macht. Bei TIA weiß ich es nicht 100 pro, aber in der S7 war es so. Wenn man im Weckalarm arbeitet und dort Eingänge oder Ausgänge entsprechend schnell lesen und schreiben wollte musste man erst das PEB laden und dann die einzelnen Bits auswerten. EB ist ja an den OB 1 gekoppelt bzw. an das Lesen und Schreiben des Prozessdatenwords. Es kann sein, dass das bei TIA eventuell noch genauso ist und er daher nicht einfach das Eingangsbit für S2 an Status_In schreiben konnte.

Quittieren kannst du über den Reset Eingang am FB. Deine gesperrten Kanäle stehen im Status des Visu-DBs. Du musst antürlich vorher darauf achten dass ach die Bits an IN_1 bis 8 auf true stehen, damit alle Kanäle ausgewertet werden können.

mfg Clyde
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, das Klingt relativ handlebar. Den Mechanismus hatte ich soweit auch erschlossen. Jetzt frage ich mich aber folgendes:
-Das Eingangsbyte habe ich auf das MB300 gelegt, was mache ich mit dem Ausgangsbyte? oder stan d das schon vorkonfiguriert in dem DB? "habs grad nicht offen"
-Und wie kann ich dann das zweite byte auswerten, um zu wissen welcher Kanal in Störung ist? Ist ja nicht so das der die ganzen bytes der kommunikation irgendwo in das Register legt.
 
Ich hab oben noch was dazugeschrieben, aber nochmal ganz wichtig du musst MW300 verwenden nicht MB300, sonst du müsstest du ein wenig was ändern, was du vllt auch tun solltest.

Ah grad noch gesehen, was ich jetzt auch noch nicht wusste. Er hat in der Variablentabelle EByte_0 deklariert, aber im Programm liest er EByte_0:p. Es reicht also in TIA das EB zu definierien und wenn man wie in deinem Fall das PEB braucht, schreibt er dahinter :p für Peripherie. Das gleiche macht er etwas unschön mit den Ausgängen. Am FB an "Out_Sig" schreibt er die Daten an AB0 und im Netzwerk danach transferiert er AB0 auf PAB0.

Mfg Clyde
 
Guten morgen, danke nochmal für dein Feedback, ich würde gerne nochmal ein paar Sachen abklären.
wenn du EB0 und AB0 durch deine Adressen in der SPS ersetzt sollte es schon funktionieren.
Was genau sagt mir das für das Ausgangsbyte. Für das Eingangsbyte habe ich einfach ein freies Merkerwort genommen und die Eingänge E0.0, E0.1, das ist jeweils S1 und S2, nach M300.0 und M300.1 geschrieben. Und dann das Eingangsbyte in Netz 1 einfach dadruch ersetzt.

-Den Eingang Check_Sum_On beschalte ich einfach mit einem always_true merker.

-Mx_Status_In Beschalte ich mit M301.0

-Reset beschalte ich mit meinem Button vom HMI, mit ner kleinen vVerzögerung, damit das Signal > 0,5 sek. gehalten wird

-An das Outsignal Setze ich dann das Ausgangsbyte0??? Ich habe das so verstanden als käme da die Adresse für S1 dran.

Und was mir jetzt noch nicht so ganz klar ist, wie kann ich genau sagen welche Channels er Auswerten soll, muss ich da einfach in dem SCL code

//transfer outputs on/off
#Write_Bit[9] := #In_1; //Channel 1 on/off
#Write_Bit[8] := #In_2; //Channel 2 on/off
#Write_Bit[7] := #In_3; //Channel 3 on/off
#Write_Bit[6] := #In_4; //Channel 4 on/off
#Write_Bit[5] := #In_5; //Channel 5 on/off
#Write_Bit[4] := #In_6; //Channel 6 on/off
#Write_Bit[3] := #In_7; //Channel 7 on/off
#Write_Bit[2] := #In_8; //Channel 8 on/off
"Das ist der Scl code ganz am Anfang des Steins"

die Channel die ich überwachen möchte auf dauer 1 setzen? Dann müsste ich doch bestimmt auch irgendwie das bit für das short telegram setzten oder?
So step by step gedacht.

PS: Jetzt habe ich ganz vergessen zu fragen as genau diese PBA und PBE sind, soweit ich weiß sind das sie Prozesseingangsbyte bzw. Ausgangsbyte, aber wieso sind die hier wichtig und welche aufgabe haben die genau?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

ich versuche es nochmal zu erklären:

Stell dir ein Zyklus des OB1 vor. Vor dem Aufruf vorm OB1 werden alle Eingänge im Prozessdatenwort gelesen und am Ende des OB1 alle Ausgänge geschrieben, d.h. sie werden nur mit dem OB1 aktualisiert. Wie wir wissen hat der OB1 ja keine feste Zykluszeit, sondern er braucht halt immer so lange bis er alles abgearbeitet hat. Wenn jetzt übertrieben dein OB1 1s braucht du aber etwas Regeln willst alle 100ms kannst du das Prozessdatenwort und den OB1 nicht verwenden, weil sie einfach zu langsam sind. Daher verwendet man dann einen Weckalarm (hier OB30) um unabhängig vom OB1 zu sein. Der Weckalarm hat immer eine Konstante Zeit und muss man z.B. auch immer verwenden wenn man etwas regelt mit PID oder PI etc..
Da kommt dann das lesen von der Peripherie ins Spiel. Wenn du im OB1 normalerweise L EB200 schreibst, musst du im 100ms Weckalarm L PEB200 schreiben. Damit lädest du die aktuellen Werte von den Eingängen unabhängig vom Zyklus des OB1 bzw. Prozessdatenwortes, analog für das Schreiben der Ausgänge. T AB200 würde erst das Ausgangsbyte 200 am Ende des OB1 aktualisieren, du willst es aber sofort aktualisieren also T PAB200. Aber Vorsicht, was nicht geht ist das direkte Lesen von Peripheriebits! Daher kannst du nicht PE0.0 bzw. PA0.0 verwenden, sondern du musst das gesamte Byte laden L PEB0 und es in eine temporäre Variable schreiben, wo du dann das Bit auswertest was du brauchst, so wie er es in Netzwerk 1 gemacht hat. Er liest ein Byte, wandelt es in ein Wort, die Verundung blendet alles aus bis auf S2 und in M205.0 steht der Wert von S2. Das kann man sicher wesentlich besser programmieren und ist verwirrend.

Dein Baustein funktioniert Prinzipell so, du hast 2 Signale mit denen gearbeitet wird: S1 und S2. S1 ist ein Ausgang zum Schutzschalter und S2 ist ein Eingang vom Schutzschalter. Daher kannst du schonmal nicht, wie du oben schreibst E0.0 und E0.1 haben sondern du müsstest E0.0 und A0.0 haben. Wenn du das Triggersignal (Trig) setzt, sendet er glaube ich 500ms eine "1" auf S1 und damit weiß der Schutzschalter, sende alle Informationen, über die Kanäle In_1 bis In_8 die auf "true" stehen, an S2. Dann wird ein Bitmuster nur an S2 geschickt (er wird in ganz genau definierten Zeitintervallen "0" und "1"). Dadurch erhält der Baustein alle nötigen Informationen und im Datenbaustein "Daten_SPS_Visu" steht unter "Status" dann eine 1 bei den ausgelösten Kanälen "Alarm_Kanal_1" bis "Alarm_Kanal_8". Aber Achtung: Laut beschreibung darfst du bei Anwahl des kurzen Telegramms Trig nur alle 1.6s auf 1 setzen und bei langem Telegramm nur alle 3.4s. Er arbeitet auch deswegen im Weckalarm (Zeit-OB) weil er Zyklusgenau arbeiten muss, damit die Zeiten stimmen (OB1 hätte bei jeden Durchlauf eine andere Zykluszeit).

Als Hinweis, beim Aufruf des FBs musst du nicht diesen Visu-DB verwenden, sondern kannst es auch einfach direkt beschalten. Wenn du Kanal 1-4 überwacht haben willst schreibste einfach "true" an In_1 bis In_4 oder deinen 1-Merker, den Rest setzte auf false.

An aus Out_Sig muss das Ausgangsbit stehen wo dein S1 in der Hardware ist, wenn es A0.0 bleibt brauchste da nichts ändern.

Ich hoffe du verstehst das jetzt besser ^^

Mfg Clyde
 
Zuletzt bearbeitet:
Ja auf jeden fall hast du mir weitergeholfen. Ich danke dir auch herzlich dafür das du dir jetzt in den Osterfeiertagen die Zeit genommen hast. Ich werde mal gucken was ich mit den Infos morgen an der Anlage erreiche. Wenn man neu in der Programmierung ist, steht man im großen und ganzen bei der Umsetzung auf dem Schlauch. Vorallem bei so einer Schnittstelle.

Ja bei dem E0.0 und E0.1 habe ich mich vertan, ich hab genau so wie du schreibst. Bei dem Eingangsbyte ist mir das jetzt auch noch schlüssig, dass ich da die beiden Bits in ein leeres MW schreibe. Was aber will der im Ausgangsbyte haben, im dritten Netzwerk.
Für das Eingasbyte habe ich mir vor dem ersten ein NEtz eingefügt um da die Bits rein zu schieben. Was schiebe ich ins Ausgangsbyte? Bis dato habe ich das einfach rausgenommen.
 
Hmm,

du musst 2 Kabel haben zu dem Schutzschalter eines davon geht auf irgendeinen Eingang E50.3 z.B. und eins geht von deiner SPS von einem Ausgang A55.7 oder so zu dem Schalter. Wenn das nicht so ist wurde es falsch verdrahtet.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, könnte das dann sein das ich das immoment falsch mache? Im Grunde schreibe ich nicht S1 und S2 in das Eingabsbyte_0, sondern S2 kommt ins Eingangsbyte0.0 und S1 kommt dann ins Ausgangsbyte0.0? Ich empfange ja von S2 und sende an S1. Was sollten die beiden dann im Eingangsbyte?
 
Weiß nicht woher du das hattest, dass beide im Eingangsbyte sind. Jedefalls gehört S1 an einen Ausgang und S2 an einen Eingang. (Im Beispiel Programm ist es ja auch so)
 
Zuletzt bearbeitet:
Ok es läuft. Habe aber das Netzwerk 1 & 3 gelöscht, und arbeite direkt mit der bit Zuweisung über :p. Klappt einwandfrei.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

solange dein Weckalarm (OB30) langsamer ist als dein OB1 funktioniert das so, problematisch würde es nur werden, wenn es umgedreht ist.

Aber schön dass es geklappt hat.

mfg Clyde
 
Anders wäre mir jetzt aber auch die Lösung nicht klar gewesen. An dem Baustein werden doch eh nur die bits verarbeitet und nicht das byte.
Welche probleme gibts denn wenn die Zykluszeit vom OB1 größer ist als die vom Interrupt?
 
Versuch nochmal die etwas längeren Posts auf der ersten Seite von mir zu verinnerlichen, besonders die Sache mit dem Prozessabbild und das Lesen und Schrieben von der und auf die Peripherie.

mfg Clyde
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok ich glaube ich habs. Wäre das Problem dann das der OB30 mehreremale im OB1 aufgerufen würde, und dann mehrmals die selbe Information abholen würde?
Da könnten man doch zum einen die Aufrufzeit vom OB30 anpassen, oder das Triggerbit am Anfang von OB1 setzen und am Ende vom OB30 zurück. Dann würde er zwar mehrmals aufgerufen, aber holt die Infos in diesem Zyklus nicht mehr ab.

PS: Woher hast du eigentlisch, dass man den OB30 nur alle 1,6sek aufrufen soll? Ich finde in der Doku nur eine Angabe zur minimalen Übertragungsdauer von 1,2sek. beim short telegramm. Die ich jetzt aber auch aus der Anwendung heraus nicht bestätigen könnte. Ich rufe den OB30 jetzt alle 35 millisek. auf, bei einer OB1 Zykluszeit von 6 millisekunden.
 
Zuletzt bearbeitet:
Ich hab die SMART Schutzschalter ivm Twincat am laufen.
Da ist mir für die Aufrufzeit des Bausteins eine Zykluszeit vorgegeben.
Sicher kannst Du den OB30 häufiger aufrufen, musst dann aber sicherstellen, das der Kommunikationszyklus zum SMART wie vorgesehen abläuft mit seinem Timing. Der Baustein für Codesys scheint jedenfalls in seinem Timing von der Taskzykluszeit abzuhängen.
Wie lange die Übertragung dauert ist auch von der Zahl der Kanäle abhängig. Insgesamt ist es ein serielles Protokoll über digitale E/A. Das dauert nunmal etwas. Wenn ich das aber richtig interpretiere ist beim TIA-Code eine Weckalarmzeit zwischen 35 und 100ms zulässig.
 
Zuletzt bearbeitet:
Hallo,

an einer anderen Anlage bekomme ich jetzt einen Communication Error, das wird dann jetzt wohl das Problem sein. Woran könnte das liegen? Bzw wie kann ich auf die Syncronisierung der Kommunikation Einfluss nehmen.
Die Zykluszeit an der Anlage ist minimal höher.
 
Zuletzt bearbeitet:
Zurück
Oben