Bitmeldungen KPT 600

Mcop2001de

Level-1
Beiträge
30
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe ein Problem mit dem Bitmeldungen beim KPT 600 es werden nur die ersten 10 Bitmeldungen ausgegeben.
zum Aufbau ich habe einen DB mit einer Array Länge von 4 angelegt das heist es müssten 32 Meldebits und 32 Quittierbits an das OP übertragen werden.Die Ansteuerung der Bits funktioniert aber am OP werden wie gesagt nur die ersten 10 Meldungen angezeit.
Ist das KPT 600 hier so eingeschrenkt das man nicht mehr Meldungen übertragen kann?
Ich habe es auch schon versucht die Array´s aufzuteilen aber auch ohne erfolg.
Gibt es betimmte Reihenfolgen auf die mann achten mus?
Kann mir bitte jemand helfen?

Gruß Mcop2001de
 
Ohne nachlesen zu müssen kann ich Dir garantieren, dass das KTP600 mehr Meldungen kann.
Sind die Triggerbits wirklich gesetzt?
Stimmt die Zuordnung Triggerbit <-> Meldung?
Reihenfolge muss man nicht beachten. Außer Vertauschung von Highbyte und Lowbyte gibt es auch keine Stolperfallen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Tigerente1974

Habe den Fehler eben gefunden.
Irgendwie wird der DB Aufruf nicht für den gesamten Baustein benutzt.
Wenn ich so alle 10 Meldungen eine mit dem DB direkt verbinde klappt es.
Wenn ich den FC wie Folgt progammiere

Code:
UNCTION "Meldungen" : VOID
TITLE =
AUTHOR : 'M.Möller'
NAME : Meldunge
VERSION : 0.1

VAR_INPUT
  Meldungsdb : BLOCK_DB ; 
END_VAR
VAR_TEMP
  Meldung1 : BOOL ; 
  Meldung2 : BOOL ; 
  Meldung3 : BOOL ; 
  Meldung4 : BOOL ; 
  Meldung5 : BOOL ; 
  Meldung6 : BOOL ; 
  Meldung7 : BOOL ; 
  Meldung8 : BOOL ; 
  Meldung9 : BOOL ; 
  Meldung10 : BOOL ; 
  Meldung11 : BOOL ; 
  Meldung12 : BOOL ; 
  Meldung13 : BOOL ; 
  Meldung14 : BOOL ; 
  Meldung15 : BOOL ; 
  Meldung16 : BOOL ; 
  Meldung17 : BOOL ; 
  Meldung18 : BOOL ; 
  Meldung19 : BOOL ; 
  Meldung20 : BOOL ; 
  Meldung21 : BOOL ; 
  Meldung22 : BOOL ; 
  Meldung23 : BOOL ; 
  Meldung24 : BOOL ; 
  Meldung25 : BOOL ; 
  Meldung26 : BOOL ; 
  Meldung27 : BOOL ; 
  Meldung28 : BOOL ; 
  Meldung29 : BOOL ; 
  Meldung30 : BOOL ; 
  Meldung31 : BOOL ; 
  Meldung32 : BOOL ; 
  Quittierbit1 : BOOL ; 
  Quittierbit2 : BOOL ; 
  Quittierbit3 : BOOL ; 
  Quittierbit4 : BOOL ; 
  Quittierbit5 : BOOL ; 
  Quittierbit6 : BOOL ; 
  Quittierbit7 : BOOL ; 
  Quittierbit8 : BOOL ; 
  Quittierbit9 : BOOL ; 
  Quittierbit10 : BOOL ; 
  Quittierbit11 : BOOL ; 
  Quittierbit12 : BOOL ; 
  Quittierbit13 : BOOL ; 
  Quittierbit14 : BOOL ; 
  Quittierbit15 : BOOL ; 
  Quittierbit16 : BOOL ; 
  Quittierbit17 : BOOL ; 
  Quittierbit18 : BOOL ; 
  Quittierbit19 : BOOL ; 
  Quittierbit20 : BOOL ; 
  Quittierbit21 : BOOL ; 
  Quittierbit22 : BOOL ; 
  Quittierbit23 : BOOL ; 
  Quittierbit24 : BOOL ; 
  Quittierbit25 : BOOL ; 
  Quittierbit26 : BOOL ; 
  Quittierbit27 : BOOL ; 
  Quittierbit28 : BOOL ; 
  Quittierbit29 : BOOL ; 
  Quittierbit30 : BOOL ; 
  Quittierbit31 : BOOL ; 
  Quittierbit32 : BOOL ; 
END_VAR
BEGIN
NETWORK
TITLE =
      AUF   #Meldungsdb; 
NETWORK
TITLE =Meldung 1
//Notaus hat Ausgelöst
      UN    "Notausrelais"; 
      =     DBX    1.0; 
NETWORK
TITLE =Meldunge 2
//Türnotaus hat Ausgelöst
      U     "Tür Notausrelais"; 
      =     DBX    1.1; 
NETWORK
TITLE =Meldunge 3
//Notaus Tür 1
      UN    "Tür 1 Notaus"; 
      =     DBX    1.2; 
NETWORK
TITLE =Meldunge 4
//Notaus Tür 2
      UN    "Tür 2 Notaus"; 
      =     DBX    1.3; 
NETWORK
TITLE =Meldunge 5
//Notaus Tür 3
      UN    "Tür 3 Notaus"; 
      =     DBX    1.4; 
NETWORK
TITLE =Meldunge 6
//Plug zu lang
      U     "Plug zu Lang"; 
      =     DBX    1.5; 
NETWORK
TITLE =Meldunge 7
//Plug zu kurz
      U     "Plug zu kurz"; 
      =     DBX    1.6; 
NETWORK
TITLE =Meldunge 8
//Motorschutz Servo
      UN    "Motorschutz Servo"; 
      =     DBX    1.7; 
NETWORK
TITLE =Meldunge 9
//Motorschutz Auslaufband
      UN    "Motorschutz Auslaufband"; 
      =     DBX    0.0; 
NETWORK
TITLE =Meldunge 10
//Störung Servomotor
      U     "Axis_TVB+MDI_TLG110".pos.RD_PZD_POSBETR.ZSW1.Stoerung_wirksam; 
      =     DBX    0.1; 
NETWORK
TITLE =Meldunge 11
//Störung Plugstation
      U     "Meldung 1"; 
      =     DBX    0.2; 
NETWORK
TITLE =Meldunge 12
//Auslaufband Voll
      U     "Auslaufband"; 
      [B]=     DB3.DBX    0.3; 
[/B]NETWORK
TITLE =Meldunge 13
//Keine Dosen am Einlauf
      UN    "Einlaufband"; 
      =     DBX    0.4; 
NETWORK
TITLE =Meldunge 14
//Keine Dosen auf Vereinzelungsband
      UN    "Überlauf"; 
      =     DBX    0.5; 
NETWORK
TITLE =Meldunge 15
//Keine Dose an Überlauf
      UN    "Vereinzelungsband"; 
      =     DBX    0.6; 
NETWORK
TITLE =Meldunge 16
//Schlepfehler Servo
      U     "Axis_TVB+MDI_TLG110".pos.RD_PZD_POSBETR.ZSW1.Kein_Schleppfehler; 
     [B]=     DB3.DBX    0.7; 
[/B]NETWORK
TITLE =Meldunge 17
//Störung Frequenzumrichter Vereinzelungsband
      UN    "Motorschutz EInlaufband"; 
      =     DBX    3.0; 
NETWORK
TITLE =Meldunge 18
//Dose nicht entnommen
      U     "Plug schlecht"; 
      U     "Dose Messung Vorhanden"; 
      U     "Start"; 
      =     DBX    3.1; 
NETWORK
TITLE =Meldung 19
      U     #Meldung19; 
      =     DBX    3.2; 
NETWORK
TITLE =Meldung 20
      U     #Meldung20; 
      =     DBX    3.3; 
NETWORK
TITLE =Meldung 21
      U     #Meldung21; 
      =     DBX    3.4; 
NETWORK
TITLE =Meldung 22
      U     #Meldung22; 
      =     DBX    3.5; 
NETWORK
TITLE =Meldung 23
      U     #Meldung23; 
      =     DBX    3.6; 
NETWORK
TITLE =Meldung 24
      U     #Meldung24; 
      =     DBX    3.7; 
NETWORK
TITLE =Meldung 25
      U     #Meldung25; 
      =     DBX    2.0; 
NETWORK
TITLE =Meldung 26
      UN    #Meldung26; 
      =     DBX    2.1; 
NETWORK
TITLE =Meldunge 27
      U     #Meldung27; 
      =     DBX    2.2; 
NETWORK
TITLE =Meldunge 28
      U     #Meldung28; 
      =     DBX    2.3; 
NETWORK
TITLE =Meldunge 29
      U     #Meldung29; 
      =     DBX    2.4; 
NETWORK
TITLE =Meldunge 30
      U     #Meldung30; 
      =     DBX    2.5; 
NETWORK
TITLE =Meldunge 31
      U     #Meldung31; 
      =     DBX    2.6; 
NETWORK
TITLE =Meldunge 32
      U     #Meldung32; 
      =     DBX    2.7; 
NETWORK
TITLE =Quittierbit 1
//Notaus hat Ausgelöst
      U     "Notausrelais"; 
      U     "Restetschalter"; 
      =     DBX    5.0; 
NETWORK
TITLE =Quittierbit 2
//Türnotaus hat Ausgelöst
      UN    "Tür Notausrelais"; 
      U     "Restetschalter"; 
      =     DBX    5.1; 
NETWORK
TITLE =Quittierbit 3
//Notaus Tür 1
      U     "Tür 1 Notaus"; 
      U     "Restetschalter"; 
      =     DBX    5.2; 
NETWORK
TITLE =Quittierbit 4
//Notaus Tür 2
      U     "Tür 2 Notaus"; 
      U     "Restetschalter"; 
      =     DBX    5.3; 
NETWORK
TITLE =Quittierbit 5
//Notaus Tür 3
      U     "Tür 3 Notaus"; 
      U     "Restetschalter"; 
      =     DBX    5.4; 
NETWORK
TITLE =Quittierbit 6
//Plug zu lang
      UN    "Plug zu Lang"; 
      =     DBX    5.5; 
NETWORK
TITLE =Quittierbit 7
//Plug zu kurz
      UN    "Plug zu kurz"; 
      =     DBX    5.6; 
NETWORK
TITLE =Quittierbit 8
//Motorschutz Servo
      U     "Motorschutz Servo"; 
      U     "Restetschalter"; 
      =     DBX    5.7; 
NETWORK
TITLE =Quittierbit 9
//Motorschutz Auslaufband
      U     "Motorschutz Auslaufband"; 
      U     "Restetschalter"; 
      =     DBX    4.0; 
NETWORK
TITLE =Quittierbit 10
//Störung Servomotor
      UN    "Axis_TVB+MDI_TLG110".pos.RD_PZD_POSBETR.ZSW1.Stoerung_wirksam; 
      U     "Restetschalter"; 
      =     DBX    4.1; 
NETWORK
TITLE =Quittierbit 11
//Störung Plugstation
      U     "Restetschalter"; 
      =     DBX    4.2; 
NETWORK
TITLE =Quittierbit 12
//Auslaufband Voll
      U     "Auslaufband"; 
      =     DBX    4.3; 
NETWORK
TITLE =Quittierbit 13
//Keine Dosen am Einlauf
      U     "Einlaufband"; 
      =     DBX    4.4; 
NETWORK
TITLE =Quittierbit 14
//Keine Dosen auf Vereinzelungsband
      U     "Vereinzelungsband"; 
      =     DBX    4.5; 
NETWORK
TITLE =Quittierbit 15
//Keine Dose an Überlauf
      U     "Überlauf"; 
      =     DBX    4.6; 
NETWORK
TITLE =Quittierbit 16
//Schleppfehler Servo
      UN    "Axis_TVB+MDI_TLG110".pos.RD_PZD_POSBETR.ZSW1.Kein_Schleppfehler; 
      U     "Restetschalter"; 
      =     DBX    4.7; 
NETWORK
TITLE =Quittierbit 17
//Störung Frequenzumrichter Vereinzelungsband
      U     #Quittierbit17; 
      =     DBX    7.0; 
NETWORK
TITLE =Quittierbit 18
//Dose nicht entnommen
      U     "Plug schlecht"; 
      UN    "Dose Messung Vorhanden"; 
      U     "Start"; 
      =     DBX    7.1; 
NETWORK
TITLE =Quittierbit 19
      U     #Quittierbit19; 
      =     DBX    7.2; 
NETWORK
TITLE =Quittierbit 20
      U     #Quittierbit20; 
      =     DBX    7.3; 
NETWORK
TITLE =Quittierbit 21
      U     #Quittierbit21; 
      =     DBX    7.4; 
NETWORK
TITLE =Quittierbit 22
      U     #Quittierbit22; 
      =     DBX    7.5; 
NETWORK
TITLE =Quittierbit 23
      U     #Quittierbit23; 
      =     DBX    7.6; 
NETWORK
TITLE =Quittierbit 24
      U     #Quittierbit24; 
      =     DBX    7.7; 
NETWORK
TITLE =Quittierbit 25
      U     #Quittierbit25; 
      =     DBX    6.0; 
NETWORK
TITLE =Quittierbit 26
      U     #Quittierbit26; 
      =     DBX    6.1; 
NETWORK
TITLE =Quittierbit 27
      U     #Quittierbit27; 
      =     DBX    6.2; 
NETWORK
TITLE =Quittierbit 28
      U     #Quittierbit28; 
      =     DBX    6.3; 
NETWORK
TITLE =Quittierbit 29
      U     #Quittierbit29; 
      =     DBX    6.4; 
NETWORK
TITLE =Quittierbit 30
      U     #Quittierbit30; 
      =     DBX    6.5; 
NETWORK
TITLE =Quittierbit 31
      U     #Quittierbit31; 
      =     DBX    6.6; 
NETWORK
TITLE =Quittierbit 32
      U     #Quittierbit32; 
      =     DBX    6.7; 
END_FUNCTION

Warum muss ich denn den DB nochmas Aufrufen?

Mcop2001de
 
Hallo Mcop,
das du deinen 'DB' noch einmal neu aufschlagen musst, scheint daran zu liegen weil du zwischenzeitlich
einen anderen DB aufrufst.
Code:
TITLE =Meldunge 10
//Störung Servomotor
      U     [COLOR="#FF0000"]"Axis_TVB+MDI_TLG110"[/Color].pos.RD_PZD_POSBETR.ZSW1.Stoerung_wirksam; 
      =     DBX    0.1;

Da dein FC ja nur normalen Programmablauf als Inhalt hat, brauchst du deine DB ja garnicht über die
Bausteinschnittstelle übergeben und machst nur Vollqualifizierte Zugriffe auf deine Variablen.

Code:
=     DB3.DBX    0.3

Wenn du deinen DB3 noch einen Symbolnamen gibst, ist das Programm auch besser zu lesen.

Was ich nicht verstehe, warum du auf deine Temp.-Variablen 'Meldung.XY' zugreifst, ohne diese
vorher zugewiesen zu haben. Ich glaube da besteht noch ein verständnisproblem deinerseits, beschreib
doch mal was du mit diesen Variablen erreichen möchtest.
 
Zuletzt bearbeitet:
Jedes mal, wenn du Daten aus einem anderen DB als deinen Meldungs-DB öffnest, MUSST du deinen MeldungsDB erneut öffnen.

z.B.
Code:
      U     "Axis_TVB+MDI_TLG110".pos.RD_PZD_POSBETR.ZSW1.Stoerung_wirksam;       
      =     DBX    0.1;

Hier beschreibst du nun also DBX0.1 im DB "Axis_TVB+MDI_TLG110"

Weil der Befehl U "Axis_TVB+MDI_TLG110".pos.RD_PZD_POSBETR.ZSW1.Stoerung_wirksam;
in
Code:
AUF ""Axis_TVB+MDI_TLG110"
U DBX Irgendwas
zerfällt, und du somit für die folgenden Zeilen eben den "falschen" DB benutzt.

Ebenso ist es Käse den Meldebits TEMP-Variablen zuzuweisen, da wäre es noch besser die freien Meldebits gar nicht zu benutzten, oder denen wenigstens vernünftig ein LOW zuweisen (z.B. mit CLR)
weil du sonst relativ sicher davon ausgehen kannst, das deine vermeintlich freien Meldebits immer mal sporadisch ansprechen werden.

Edit: Helmut war zwar schneller, aber inhaltlich waren wir uns voll einig :cool:

Mfg
Manuel
 
Zuletzt bearbeitet:
Zurück
Oben