Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all 49908 articles
Browse latest View live

Sonstiges Visualisierung mit Tablet bzw. HTML 5 (Beckhoff)

$
0
0
Hallo Leute,

ich beschäftige mich gerade mit der Hausautomatisierung und finde den Gedanken ganz Praktisch statt ein Panel an der Wand anzubringen ein Tablet oder Handy zu verwenden für eine Zentrale Bedienung.
Da ich etwas mit Beckhoff Programmiert (Grundkenntnisse) möchte ich die Automatisierung mit Beckhoff durchführen.
Ich habe mir also mal die Visualisierung von Beckhoff angeschaut und finde diese naja hässlich/altmodisch und weiß auch nicht wie man eine HTML Struktur aufbauen kann.

Zur Hardware / Software kann ich zurzeit nichts sagen und bin für alles offen (günstig sollte es sein :) )

Zur meinen Fragen:
1) Wie bekomme ich eine HTML5 fähige (also Responsive) Visualisierung mit TwinCat 3 hin?

2) Kann man eigene Grafiken und Buttons erstellen, damit diese modern aussehen? (z.B. http://www.beckhoff-verl.de/loesunge...steuerung.html oder http://www.computer-automation.de/up...automation.jpg

3) Oder geht das nur über Drittsoftware z.B. spider Control?

Mit freundliche Grüßen
Maoam

TIA Scrollbares Bild WinCC Tia Advance Runtime

$
0
0
Hi
Ist es irgendwie möglich im TIA Portal V14 Sp1 im WinCC Advance eine Seite zu gestalten, die grösser ist als die normale, so dass man die Seite runter scrollen kann/muss?
Hintergrund ist, dass ich viele Parameter habe, die eingegeben werden müssen.
Ich weiss, mann kann auch einfach eine zweite oder dritte Seite machen aber es wäre scho schick die ganze sache scrollbar zu machen.

Gruss blimaa

Step 7 Frage zu Emsize.

$
0
0
Frage ins Forum.

Habe einen Kunden aus der Möbelindustrie

Hat sich zur Verpackung eine Emsize EM 5 zugelegt. Aus Fa. Emsize wurde mittlerweile Fa. Packsize.

Der Service von Emsize wurde eingestellt.

Frage: Ist jemand hier in diesem Forum der sich damit auskennt.

Danke
Wilhelm

EL2262 "Zyklusüberlauf"

$
0
0
Abend,

Ich habe eine Frage zu der Klemme EL2262 ( https://www.beckhoff.de/default.asp?ethercat/el2262.htm ), vielleicht weiß da ja jemand was zu.
Ich will ein Signal erstellen das deutlich schneller als die Zykluszeit der SPS ist, dafür passt genau diese Klemme. So wie ich das verstehe gebe ich der Klemme für eine Zykluszeit n Datensätze die nacheinander ausgegeben werden. Soweit so gut.
Aber wie verhält es sich wenn das erstellte Signal länger als ein Zyklus der SPS ist? Ich kann mein Signal auf mehrere SPS Zyklen aufteilen, kein Problem.

Aber wie verhält sich die Klemme bei den Übergängen von den Zyklen? Der SPS Zyklus wird ja nicht auf 1µS genau aufgerufen (das ist die Genauigkeit der Klemme), oder etwa doch?
Wie wird das gehändelt?


Freue mich auf eure Antworten ;)

TIA indirekte Eingangsabfrage funz nicht

$
0
0
Hallo,

ich erhalte im TIA 13 die Fehlermeldung

Hilfe zur Meldung 619:58
Glossar
Indirekte Adressierung von Variablen (Panels, RT Advanced)
Die neuen Funktionen der S7-1500-CPU im Überblick (S7-1200, S7-1500)
Grundlagen zu Adressregistern (S7-1200, S7-1500)
Indirektes Adressieren von Variablen (S7-300, S7-400)
Hilfe zur Meldung 619:58
Indirekte Adressierung von Variablen (Panels, RT Advanced)
Hilfe zur Meldung 619:58
Indirektes Adressieren von Variablen (S7-300, S7-400)
Hilfe zur Meldung 619:58
Indirektes Adressieren von Variablen (S7-300, S7-400)
Grundlagen zum Bausteinaufruf in SCL
Beschreibung

Der Aufruf des Funktionsbausteins ist ungültig.

Behebung

Prüfen Sie, ob der eingegebene Name bereits an anderer Stelle verwendet wurde.

Weitere Informationen zum Bausteinaufruf finden Sie unter "Siehe auch".

...wenn ich ein E-Wort mit %EW(var) abfrage.
Code:

#i := 2;
FOR #i := 2 TO 8 DO
  #IN := %EW(#i);
END_FOR;

Was passt nicht? Danke.

Datenaustausch einer ET200s und einem externen Partner mit einer 1200 CPU

$
0
0
Mein Projekt besteht aus einer ET200s und einem HMI Panel mit einer PN/IE Verbindung.
Der externe Partner (eine übergeordnete Steuerung hat eine 1200 er CPU. Diese ist per LAN-Kabel mit meiner CPU verbunden.

ich habe in meinem Projekt einen Datenbaustein über den der Datenaustausch funktionieren soll.

Fragen:
1) muss ich in meinem Projekt die CPU vom externen Partner unter "Geräte und Netze" projektieren?
2) muss der externe Partner in seinem Projekt meine CPU unter "Geräte und Netze" projektieren?
3) habe gelesen, dass für den Datenaustausch der Baustein TCON und Get und Put Befehle benötigt werden und bei der CPU der "Schutz" konfiguriert werden muss, aber wie alles?
4) wie wird das insgesamt projektiert und programmiert?

Der Datenbaustein ist aus einigen Werten in REAL und einigen in Bool aufgebaut. Fast alle Werte stelle ich zur Verfügung und sollen vom Partner gelesen werden. 2 Werte (Bool) sendet der externe Partner zu mir.
Ich denke, dass einer der Master (Server) ist und der andere der Slave (Client)
Der externe Partner soll der Server sein.
Der externe Partner (übergeordnete Steuerung will wohl Get/Put nutzen) Was miss ich in meinem Projekt dann machen?

SafetyProg Anleitung?

$
0
0
Hallo,

ich habe zwar bereits einiges an Erfahrung mit SPS-Programmierung, bin aber bei PHOENIX im Allgemeinen und Safety-Programmierung im Speziellen noch total neu.
Ich habe schon einiges im Netz und hier im Forum gesucht, habe aber bisher keine Anleitung dazu gefunden, wie ich ein Safety Projekt in einer Steuerung einrichte und korrekt in den Rest des Programms einbinde. Die Hilfe von PC WORX schweigt sich dazu auch komplett aus.

Anforderung ist ganz simpel:
- Lüftungsanlage mit ein paar abgesetzten Schaltschränken, ist alles über Profinet gekoppelt.
- An zwei Profinet-Inline Kopplern hängen Safety-Module
- Eingänge sind Not-Aus und Brandalarm, Ausgänge sind Not-Aus-Weiterleitung für andere Anlagen.
- Ich verwende PC WORX 6.30 und SafetyProg 3.40 (falls das notwendig sein sollte)

im Folgenden der Relevante Teil der Hardwarekonfiguration:

Code:

Steuerung              RFC 470S PN 3TX

INLINE Buskoppler      IL PN BK DI8 DO4 2TX-PAC
INLINE Powerklemme      IB IL 24 PWR IN/2F-DF-2MBD-PAC
INLINE SafetyModul      IB IL 24 PSDI 8-PAC
                            IN0_1    Not-Halt Kanal 1
                            IN0_2    Not-Halt Kanal 2
                            ...
                           
                           
INLINE Buskoppler      IL PN BK DI8 DO4 2TX-PAC
...
INLINE Powerklemme      IB IL 24 PWR IN/2F-DF-2MBD-PAC
INLINE SafetyModul      IB IL 24 PSDI 8-PAC
                            IN0_1    Brandalarm Zuluft
                            IN0_2    Brandalarm Kabine 1
                            IN1_1    Brandalarm Kabine 2
                            ...
INLINE Boostklemme      IB IL 24 PWR IN/R/L-0.8A-PAC
INLINE SafetyModul      IB IL 24 PSDOR 4-PAC
                            OUT0_1    Not-Aus an Fördertechnik
                            OUT0_2    Not-Aus an Fördertechnik
                            OUT1_1    Türen Fördertechnik Kabine 1
                            OUT1_2    Türen Fördertechnik Kabine 2

Tc3: Vererbung von Aktionen

$
0
0
Ich bin zwar mit TwinCat unterwegs, aber mein Problem ist wohl eher eine Codesys-Sache. Die Experten von 3S sind daher herzlich zum Mitlesen eingeladen.
Ich deklariere zwei FBs:
Code:

FUNCTION_BLOCK fblBase
VAR_INPUT
    inpBase:BOOL;
END_VAR

und
Code:

FUNCTION_BLOCK fblExtd EXTENDS fblBase
VAR_INPUT
    inpExtd:BOOL;
END_VAR

"fblBase" hat eine Aktion "pubBaseActn".
Im Hauptprogramm deklariere ich von jedem FB eine Instanz
Code:

PROGRAM MAIN
VAR
    varBase:fblBase;
    varExtd:fblExtd;
END_VAR

und rufe beide Aktionen auf
Code:

varBase.pubBaseActn(
    inpBase:=TRUE);
varExtd.pubBaseActn(
    inpBase:=TRUE,
    inpExtd:=TRUE);

Beim Übersetzen erhalte ich für den Aufruf von "varExtd.pubBaseActn" den Fehler "inpExtd ist kein Eingang von fblBase".
Sicher, der FB, von dem die Aktion geerbt wurde, kennt "inpExtd" nicht. Ich rufe aber ausdrücklich eine Instanz von "fblExtd" auf, die diese Variable beinhaltet.
Ist das wirklich so gewollt? Mir ist schon klar, dass so etwas bei unterschiedlich grossen VAR_IN_OUT-Bereichen nicht funktionieren kann, weil die geerbten Aktionen für die Stackgrösse der Basisklasse kompiliert sind.
Aber hier handelt es sich um eine statische Variable des FBs. Wenn ich es so schreibe,
Code:

varExtd.inpExtd:=TRUE;
varExtd.pubBaseActn(
    inpBase:=TRUE);

funktioniert es ja. Und an sich sollte doch beides identisch sein.

Verkaufe Wago 750 Komponenten und Relais/Schütze

$
0
0
Hier die Aufstellung.

Komponenten sind alle so gut wie neu nur für Testzwecke ausgepackt.


Hersteller Artikelnummer Bezeichnung Menge OVP Online Preis Stk abzgl. 35% Gesamtpreis
WAGO 750-400 WAGO Digitale Eingangsklemme 2-Kanal DC24V 3.0ms 750-400 1 Nein 33 € 21 € 21 €
WAGO 750-430 WAGO Digitale Eingangsklemme 8-Kanal DC24V 3.0ms 750-430 2 Nein 60 € 39 € 78 €
WAGO 750-451 WAGO Analog Eingangsklemme 8-K. RTD frei konfi. 750-451 3 Ja (2 von 3) 233 € 151 € 454 €
WAGO 750-459 WAGO Busklemme 4AI 0-10VDC S.E. 750-459 1 Nein 180 € 117 € 117 €
WAGO 750-461 WAGO Analog Eingangsklemme 2AI 1 Ja 245 € 159 € 159 €
WAGO 750-463 WAGO Analogeingangsklemme 4-Kanal 750-463 1 Nein 164 € 107 € 107 €
WAGO 750-501 WAGO Digitale Ausgangsklemme 2DO 1 Nein 48 € 31 € 31 €
WAGO 750-559 WAGO Analog Ausgangsklemme 4AO 0-10VDC 750-559 2 Nein 218 € 142 € 283 €
WAGO 750-600 WAGO Bus-Endklemme 12x64mm grau 750-600 1 Nein 19 € 12 € 12 €
WAGO 750-1504 WAGO Digital Ausgangsklemme 16-Kanal 24VDC 0,5A 750-1504 1 Nein 115 € 75 € 75 €
WAGO 750-1607 WAGO Potentialvervielfältig.-Kl 8+/8- 750-1607 2 Nein 30 € 19 € 39 €
WAGO 750-843 WAGO Feldbuscontroller 750-843 1 Ja 299 € 194 € 194 €
WAGO 750-880 WAGO Feldbuscontroller Ethernet 750-880 1 Nein 595 € 387 € 387 €
WAGO 787-1022 WAGO Stromversorgung 24V 4A primär getakt 787-1022 1 Ja 69 € 45 € 45 €
WAGO 787-1012 WAGO Stromversorgung 24V 2,5A primär geta 787-1012 1 Nein 89 € 58 € 58 €
EATON DILEEM-10-G 24V 3kW Schütz 3 Ja 23 € 15 € 44 €
ELTAKO KR09-24V UC 24 Reali 1 S 7 Ja 20 € 13 € 91 €
Gesamt 2.195 €

Macht mir einfach ein Angebot!.

Grüße
Angehängte Grafiken

Wago 750-841 Kommunikation Helios Lüftungsanlage

$
0
0
Hallo Zusammen,

ein sehr spezielles Thema ;) Ich habe o.g. Konstellation bei mir im Einsatz und wurde nun von einigen
Leuten gefragt wie ich das ganze umgesetzt habe. Deshalb habe ich mir gedacht das es für andere auch interessant sein könnte.

Anbei mein Code, er ist nicht perfekt läuft aber nun seit > 1 Jahr sehr gut.

Info vorne Weg:

Folgende Variablen werden von der Anlage gelesen:

Temperatur_Aussen: REAL;
Temperatur_Zuluft: REAL;
Temperatur_Fortluft: REAL;
Temperatur_Abluft: REAL;
Filterwechsel_Restlaufzeit_Tage: DINT;

Folgende Variablen werden geschrieben:


Lueftung_Plus: BOOL;
Lueftung_Minus: BOOL;

Die zwei o.g. Bool steuern die Luefterstufe die dann an
die Lüftungsanlage gesendet wird


Luefterstufe: BYTE;


Bypass_Min_Aussentemperatur: INT;
Bypass_Ablufttemperatur: INT;
Maximalwert_Temperatur_Aussen: REAL;

Bypass:

Den Bypass kann man nicht direkt steuern, daher manipuliere ich
die beiden Schwellwerte.

Max. Außentemp: Ist es zu warm schaltet die Anlage ab,
da sonst das Haus zu sehr aufheizt.


Das mal im groben, anbei nun das Programm.
Fragen beantworte ich gern.


Deklaration:

Code:

PROGRAM LUEFTUNG_ALLGEMEIN
VAR

    LUEFTUNGSANLAGE: ETHERNET_MODBUSMASTER_TCP;
    Lueftung_Empfangsdaten: ARRAY[0..19] OF BYTE;
    Lueftung_Sendedaten: ARRAY[0..9] OF WORD;
    Lueftung_Sendedaten_Puffer: ARRAY[0..5,0..9] OF WORD;
    Lueftung_Senden_Start: BOOL;
    Lueftung_Reset: BOOL;

    Temperatur_Aussen: REAL;
    Temperatur_Zuluft: REAL;
    Temperatur_Fortluft: REAL;
    Temperatur_Abluft: REAL;
    Filterwechsel_Restlaufzeit_Tage: DINT;

      Lueftung_Plus: BOOL;
    Lueftung_Minus: BOOL;


    SK1_NR: INT;
    SK1_NR_ALT:INT;
    R_TRIG_SENDEN: R_TRIG;
    TON_TIMEOUT_SENDEN: TON;
    TON_AUSSENTEMP_MAX: TON;
    R_TRIG_AUSSENTEMP: R_TRIG;
    F_TRIG_AUSSENTEMP: F_TRIG;
    TON_CLK:TON;
END_VAR

VAR RETAIN PERSISTENT
    Luefterstufe: BYTE;
      Bypass_Min_Aussentemperatur: INT;
    Bypass_Ablufttemperatur: INT;
      Maximalwert_Temperatur_Aussen: REAL;
END_VAR

VAR_TEMP
    TMP_ZEHNERSTELLE: INT;
    TMP_EINSERSTELLE:INT;
    TMP_CNT_I:INT;
END_VAR
VAR_INPUT
    ueftung_Sendedaten_Puffer: BOOL;
END_VAR

Programm:

Code:

LUEFTUNGSANLAGE(
strIP_ADDRESS:='192.168.51.40',
wPORT := 502,
bUNIT_ID := 180
bFUNCTION_CODE := 16#17,
wREAD_ADDRESS := 1,
wREAD_QUANTITY := 10,
ptREAD_DATA := ADR(Lueftung_Empfangsdaten),
wWRITE_ADDRESS := 1,
wWRITE_QUANTITY := 10,
ptSEND_DATA := ADR(Lueftung_Sendedaten),
xSTART := (Lueftung_Senden_Start),
xRESET :=Lueftung_Reset,
tTIME_OUT := t#3s
);

TON_TIMEOUT_SENDEN(IN:= Lueftung_Senden_Start, PT:= t#5s);
R_TRIG_SENDEN(CLK:=LUEFTUNGSANLAGE.xREADY);

(* Sendepuffer verwalten *)
(* ########################################################### *)

(* Wenn etwas im Sendepuffer steht dies senden *)
IF Lueftung_Sendedaten_Puffer[0,0] <> 16#00 THEN
Lueftung_Sendedaten[0] := Lueftung_Sendedaten_Puffer[0,0];
Lueftung_Sendedaten[1] := Lueftung_Sendedaten_Puffer[0,1];
Lueftung_Sendedaten[2] := Lueftung_Sendedaten_Puffer[0,2];
Lueftung_Sendedaten[3] := Lueftung_Sendedaten_Puffer[0,3];
Lueftung_Sendedaten[4] := Lueftung_Sendedaten_Puffer[0,4];
Lueftung_Sendedaten[5] := Lueftung_Sendedaten_Puffer[0,5];
Lueftung_Sendedaten[6] := Lueftung_Sendedaten_Puffer[0,6];
Lueftung_Sendedaten[7] := Lueftung_Sendedaten_Puffer[0,7];
Lueftung_Sendedaten[8] := Lueftung_Sendedaten_Puffer[0,8];
Lueftung_Sendedaten[9] := Lueftung_Sendedaten_Puffer[0,9];
Lueftung_Senden_Start  := TRUE;
END_IF;



(* Wenn Daten erfolgreich gesendet wurden diese löschen *)
IF R_TRIG_SENDEN.Q THEN

    Lueftung_Senden_Start  := FALSE;

    Lueftung_Sendedaten[0] := 16#00;
    Lueftung_Sendedaten[1] := 16#00;
    Lueftung_Sendedaten[2] := 16#00;
    Lueftung_Sendedaten[3] := 16#00;
    Lueftung_Sendedaten[4] := 16#00;
    Lueftung_Sendedaten[5] := 16#00;
    Lueftung_Sendedaten[6] := 16#00;
    Lueftung_Sendedaten[7] := 16#00;
    Lueftung_Sendedaten[8] := 16#00;
    Lueftung_Sendedaten[9] := 16#00;

(* Puffer aufrücken *)
FOR TMP_CNT_I:=0 TO 4 DO
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),0];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),1];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),2];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),3];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),4];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),5];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),6];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),7];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),8];
    Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] :=  Lueftung_Sendedaten_Puffer[(TMP_CNT_I+1),9];

END_FOR

    (* Letzten Puffereintrag löschen *)
    Lueftung_Sendedaten_Puffer[5,0] := 16#00;
    Lueftung_Sendedaten_Puffer[5,1] := 16#00;
    Lueftung_Sendedaten_Puffer[5,2] := 16#00;
    Lueftung_Sendedaten_Puffer[5,3] := 16#00;
    Lueftung_Sendedaten_Puffer[5,4] := 16#00;
    Lueftung_Sendedaten_Puffer[5,5] := 16#00;
    Lueftung_Sendedaten_Puffer[5,6] := 16#00;
    Lueftung_Sendedaten_Puffer[5,7] := 16#00;
    Lueftung_Sendedaten_Puffer[5,8] := 16#00;
    Lueftung_Sendedaten_Puffer[5,9] := 16#00;

END_IF;

(* Bei Timeout senden zurücksetzen *)
IF TON_TIMEOUT_SENDEN.Q THEN
    Lueftung_Senden_Start  := FALSE;
END_IF;

(* Takt erzeugen für zyklische Abfragen *)
TON_CLK(IN:=NOT TON_CLK.Q,PT:=t#10s);

(* SK1 NR Wegsichern und erhöhen mit jedem Takt *)
SK1_NR_ALT := SK1_NR;
IF TON_CLK.Q THEN
    SK1_NR:=SK1_NR + 10;
END_IF;

(* Wenn die SK1_NR zu groß ist diese zurücksetzen *)
IF SK1_NR > 60 THEN
    SK1_NR:=0;
END_IF;

(* Timer für Auswertung ob Außentemperatur über Grenzwerk ist *)
TON_AUSSENTEMP_MAX(IN:=(Temperatur_Aussen <  Maximalwert_Temperatur_Aussen), PT:=t#30s);
R_TRIG_AUSSENTEMP(CLK:=TON_AUSSENTEMP_MAX.Q);
F_TRIG_AUSSENTEMP(CLK:=TON_AUSSENTEMP_MAX.Q);


(* Sendedaten aufbereiten *)
(* ########################################################### *)


(* Sendetelegramm - Temperatur Aussen  v00104*)

IF SK1_NR = 0 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3034;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Temperatur Zuluft  v00105*)
IF SK1_NR = 10 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3035;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Temperatur Fortluft  v00106*)
IF SK1_NR = 20 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3036;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Temperatur Abluft  v00107*)
IF SK1_NR = 30 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3037;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Filterwechsel Restlaufzeit in Minuten  v01033*)
IF SK1_NR = 40 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3130;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3333;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Bypass min. Temperatur Aussentemperatur v01036*)
TMP_ZEHNERSTELLE := (Bypass_Min_Aussentemperatur / 10);
TMP_EINSERSTELLE := (Bypass_Min_Aussentemperatur - (TMP_ZEHNERSTELLE * 10));

IF FALSE AND SK1_NR = 50 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3130;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3336;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#3D30 +  TMP_ZEHNERSTELLE;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#3000 +  (TMP_EINSERSTELLE * 256);
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;

(* Sendetelegramm - Bypass min. Temperatur Aussentemperatur v01035*)

TMP_ZEHNERSTELLE := (Bypass_Ablufttemperatur / 10);
TMP_EINSERSTELLE := (Bypass_Ablufttemperatur -  (TMP_ZEHNERSTELLE * 10));

IF FALSE AND SK1_NR = 60 AND SK1_NR <> SK1_NR_ALT THEN

    FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3130;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3335;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#3D30 +  TMP_ZEHNERSTELLE;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#3000 +  (TMP_EINSERSTELLE * 256);
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

    END_FOR;

END_IF;


(* Sendetelegramm - Lüfterdrehzahl verstellen  v00102*)

IF Lueftung_Plus THEN
Luefterstufe := Luefterstufe + 1;
END_IF;

IF Lueftung_Minus THEN
Luefterstufe := Luefterstufe - 1;
END_IF;

IF Luefterstufe < 0 THEN
Luefterstufe := 0;
END_IF

IF Luefterstufe > 4 THEN
Luefterstufe := 4;
END_IF


(* Wenn die Aussentemperatur unter die Max Temperatur gefallen
    ist die Belüftung wieder auf die eingestellte Stufe einschalten    *)
IF R_TRIG_AUSSENTEMP.Q OR Lueftung_Plus OR Lueftung_Minus THEN

Lueftung_Plus := FALSE;
Lueftung_Minus := FALSE;



(*
FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3032;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := (16#3D30 +  Luefterstufe);
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

END_FOR;
*)
END_IF;

(* Wenn die Aussentemperatur über die Max Temperatur gestiegen
    ist die Belüftung abschalten    *)
IF FALSE AND F_TRIG_AUSSENTEMP.Q THEN


FOR TMP_CNT_I:=0 TO 5 DO

    IF Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] = 16#00 THEN
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,0] := 16#7630;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,1] := 16#3031;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,2] := 16#3032;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,3] := 16#3D30;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,4] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,5] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,6] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,7] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,8] := 16#0000;
        Lueftung_Sendedaten_Puffer[TMP_CNT_I,9] := 16#0000;
        EXIT;
    END_IF;

END_FOR;

END_IF;






(* Auswertung der Empfangsdaten *)
(* ########################################################### *)


(* Temperatur Aussen wurde empfangen v104*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#34 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Aussen :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF


(* Temperatur Zuluft wurde empfangen v105*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#35 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Zuluft :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF


(* Temperatur Fortluft wurde empfangen v1064*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#36 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Fortluft :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF


(* Temperatur Abluft wurde empfangen v107*)
IF
Lueftung_Empfangsdaten[2] = 16#31 AND
Lueftung_Empfangsdaten[3] = 16#30 AND
Lueftung_Empfangsdaten[4] = 16#37 AND
Lueftung_Empfangsdaten[5] = 16#30
THEN

Temperatur_Abluft :=
(
(BYTE_TO_REAL(Lueftung_Empfangsdaten[06] - 48) * 10.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[09] - 48) * 01.0) +
(BYTE_TO_REAL(Lueftung_Empfangsdaten[11] - 48) * 00.1)
)
;

END_IF

(* Restlaufzeit bis Filterwechsel wurde empfangen v1033*)
IF
Lueftung_Empfangsdaten[2] = 16#30 AND
Lueftung_Empfangsdaten[3] = 16#31 AND
Lueftung_Empfangsdaten[4] = 16#33 AND
Lueftung_Empfangsdaten[5] = 16#33
THEN

Filterwechsel_Restlaufzeit_Tage :=
(
(
(BYTE_TO_DINT(Lueftung_Empfangsdaten[06] - 48) * 00100000) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[09] - 48) * 00010000) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[08] - 48) * 00001000) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[11] - 48) * 00000100) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[10] - 48) * 00000010) +
(BYTE_TO_DINT(Lueftung_Empfangsdaten[13] - 48) * 00000001)
)
/60
/24
)
;

END_IF

Grüße

Marcel

TIA Strings in Textfeld einfügen

$
0
0
Guten Tag,

ich möchte gerne wissen, ob es möglich ist zur Laufzeit Strings in ein Textfeld einzutragen und wieder entfernen.
Hintergrund ist, dass ich eine Benutzerführung einrichten möchte.
Das heißt, der Benutzer bekommt Anweisungen, die er befolgen soll.

Schönen Feiertag!

Sonstiges S0 Eingangswiederstand

$
0
0
Hallo Leute
Ich habe einige Wechselstromzähler in einem Steuerkasten im Einsatz. Die S0-Signale gehen dann auf eine Logo!. Es ist für jeden Eingang ein Wiederstandstand (Spannungsteiler) von 220 Ohm vorgeschaltet.
Nun will ich in einem weiteren Steuerkasten eine S7-1200 und auch einige Energiezähler einsetzen. Braucht es dort auch wieder Eingangs-Wiederstände?

Gruss Hazelnut

TIA Roboter Betriebsartenwahl auf HMI

$
0
0
Hallo



Ich benötige einen Ratschlag zur folgenden Aufgabenstellung.



Ich soll für den KUKA Roboter KR6 R700 im TIA Portal die Betriebsartenwahl realisieren.
Da wir den Roboter über AUT EXT mit einer übergeordneten SPS (ET200) steuern wollen.
So ist meine Frage da der Roboter ja die Betriebsarten T1, T2, AUT und AUT EXT hat, ist es hier ausreichend bzw. sinnvoll die Betriebsart T1 für Handbetrieb und dann die Automatik mit AUT EXT zu programmieren.
Der ganze Roboter soll dann über das HMI (Touch) bedient werden, das KUKA smart Pad soll in diesem fall wegfallen.



Gruß Frozen

Step 7 hausautomation

$
0
0
Hallo,
Ich bräuchte eure Hilfe.
Ich hatte im Rahmen einer Elektro neuinstallation diese so ausgelegt das ich alle Beleuchtungen im Haus inklusive Rollladen sowohl über taster pro Raum steuern kann aber auch mit einer S7-300 über einen CP-343-1.
Die Visualisierung mach ich mit Wincc flex 2008.
Nun war mein Plan das ich step 7 und wincc auf einen PC mache und die wincc runtime darauf laufen lasse .Von zwei tablets aus möchte ich die runtime über w lan bedienen (cp ist bereits mit dem heimnetzwerk verbunden ).
Nun steh ich vor dem Problem das ich nicht weiss wie ich das realisieren kann .
Vielleicht kann mir jemand helfen .
Im vorraus schonmal Danke

TIA Bibliotheken aktualisieren

$
0
0
Hallo Leute,

ich habe es geschafft, nach zig Abstürzen von TIA13 SP2, ein Bildobjekt anzulegen.
Auch eine User-Bib wurde erstellt und ich habe es geschafft das Objekt darin abzulegen.
Meine Frage wenn ich das Objekt verbessere und eine Bib. aktualisierung anstosse
kommt folgende Meldung...
WinCC_BIB_04.jpg
Ich kann keine Auswahl im bauen Requester machen.
Hat das was mit meinen Rechten auf dem Rechner zu tun?

Danke
Angehängte Grafiken

TIA Meldungen im KP 300 Anzeigen

$
0
0
Hallo ich habe versucht Meldungen im Display des KP 300 Anzeigen zu lassen bekomme es aber nicht hin.
Wie kann ich den Eingang 1 der Logo eine Meldung zuweisen ?In WinCC habe ich die HMI Variable erstellt und den Datentype Word gewählt dann habe ich als Adresse MW1 erstellt und wollte somit den Merker 1 der Logo auslesen wenn der Ausgang 1 der Logo gesetzt wird leider ohne Erfolg! Ich Arbeite mit einer Logo 8 .
Würde mich über Hilfe freuen lg

Wago 880 und Fronius Wechselrichter per Modbus

$
0
0
Hallo,

cih möchte gerne ein Wechselrichter von Fronius in meiner Wago 880 per Modbus einbinden.
Leider habe ich nicht wirklich viel Ahnung davon und bräuchte da mal Starthilfe :)

Link Fronius Modbus

Vielen Dank für die Hilfe
Gruß
Angehängte Grafiken

Wie Zählwerte einer 750-404/000-001 Zählerkarte gegen Spannungsausfall sichern?

$
0
0
Hallo,

nachdem ich mehrere Wasserzähler und einen Regenmesser über eine WAGO 750-880 einsammle, habe ich dies bisher über DI Karten erledigt und die Werte auf als "Retain, Persistent" deklarierte Variablen gelegt. Das hat bisher bestens geklappt und die Steuerung hat schon einige Spannungsausfälle ohne "Zählverluse" überstanden.

Nun habe ich aber gelesen, es wäre besser für diese Aktoren Zählerkarten zu verwenden, damit keine Impulse verloren gehen. Daraufhin habe ich mir einige gebrauchte 750-404/000-001 Vorwärtszähler ersteigert und diese nun anstelle der Digitaleingänge in Verwendung.

Auch das klappt prima, nur ein Problen bekomme ich (derzeit) nicht vernünftig in den Griff. Die Zählwerte überstehen keinen Spannungsausfall, beim Hochlauf der Steuerung beginnen diese wieder bei 0 zu zählen. Wie löst Ihr diese Problematik professionell?

Ich habe bisher die einzige Möglichkeit gefunden, die Zähler über ein "System Ereignis - start" in der Taskkonfiguration beim Hochlauf, über eine "Retain, Persistent" Variable neu zu setzen. Da ich das Erste Mal solche Karten einsetze, fehlt mir hier komplett die Erfahrung.

Gibt es eine bessere Möglichkeit?
Über Vorschläge von Euch (und WAGO) würde ich mich sehr freuen.

Gruß Reinhard

Suche: Lenze MC-CAN2

$
0
0
Ich suche eine PCI-Steckkarte für Lenze 3200 Controller. Am besten gebraucht.

http://download.lenze.com/TD/MC-Card__v1-0__DE.pdf

Vielleicht kann auch ein Gewerbetreibender bei Lenze ein Angebot einholen, da ich leider kein eigenes Gewerbe habe.
Gegen eine Vermittlungsgebühr (ca. 50€)

Gerne auch Vorschläge zu entsprechenden Online-Händlern.


Vielen Dank für euer Angebot & Viele Grüße

Bluesmaster

WinCC Flex Variablenwert im Meldetext auf TP177A ausgeben

$
0
0
Ich möchte einen Variablenwert im Meldetext auf einem TP177A ausgeben, bekomme aber immer nur Rauten angezeigt (zumindest auf dem Simulator, auf's Gerät hab ichs noch nicht übertragen, gehe aber davon aus, dass es dort auch nicht anders ist)

Es soll ein DW in Hex angezeigt werden. Ich hab auch schon andere Formate probiert, bekomme aber an der programmierten Stelle im Text statt dem simulierten Wert immer nur Rauten angezeigt, immer genau so viele, wie es der eingestellten Feldlänge der Variable entspricht.

Was mach ich nur falsch?

Vielen Dank im Voraus für eure Hilfe.
Viewing all 49908 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>