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

Kundenakquise/Auslastung

$
0
0
Moin zusammen,

ich habe an die Selbststaendigen und Freiberufler da draussen eine Frage.

Ich habe mich vor einiger Zeit in Form einer GmbH selbststaendig gemacht und biete SPS-Programmierung und Elektroplanung mit Eplan P8 an. Es laeuft eigentlich recht gut, ich werde immer wieder von meinen bisherigen Arbeitgeber vor meiner Selbststaendigkeit gebucht. Allerdings erreiche ich aktuell eine Auslastung von etwa 60-70%, was aber daran liegt, dass ich dadurch bedingt, dass ich mehrere Auftraggeber habe, grosse Projekte nicht annehmen kann.

Ich finde es aber von Vorteil, nicht nur von einem Auftraggeber abhaengig zu sein, deswegen versuche ich Mehrere zu bedienen.

Wie handhabt Ihr das? Legt Ihr Euch lieber auf ein/zwei AG fest, oder seht Ihr das genauso wie ich?

Ich kann bei der aktuellen Auslastung recht gut auskommen und meine Familie geniest die freie Zeit mit mir, was vor der Selbststaendigkeit selten der Fall war. Da ich aber mehr Ruecklagen bilden will, moechte ich meine Auslastung hoeher schrauben.

Zudem melden sich bei mir immer wieder die bekannten Recruiter wie Ferchau/Progressive/SOLCOM,... Ich habe bzgl. des Stundensatzes interessehalber ziemlich hoch gepokert und haette das ein oder andere mehrmonatige Projekt zu besseren Konditionen mitnehmen koennen, als ich derzeit arbeite. Welche Erfahrungen habt ihr mit den Recruitern? Kann man sich da bedenkenlos einlassen, bzw. auf welche Themen sollte man speziell achten?

Gruesse
DSP2

TIA DB Variablen umverdrahten?

$
0
0
Hallo,

kann man DB Variablen umverdrahten? Ich möchte ein Programm umorganisieren um aus verschiedenen DBs Variablen in einen neuen DB zusammenfassen bzw. struktuieren und möchte nicht in allen Programmen die Zugriffe händisch aktualisieren.

Danke...

Diagfehler: LowVoltage/ DirectionNoFound [IB IL PM 3P/N/EF-PAC]

$
0
0
Hallo Spsfreunde,

ich baue derzeit eine Leistungsmessung für meine Uni auf und bin auf ein Problem gestoßen, wo ich einfach nicht weiter weiß.
Die Messung über die Leistungsmessklemme IB IL PM 3P/N/EF-PAC soll für den ersten Test eine Sparschaltung I1_L1-N ohne Stromwandler aufnehmen. Dafür habe ich mir die Power Measurement V1_07 heruntergeladen und das Handbuch durchgelesen. In diesem steht beschrieben [Seite 81-82] wie man eine einfaches PM_Energy Programm mittels FBs zusammenbaut und dieses nachgebaut. Das kompilieren des Programms funktioniert und gibt keine Fehlermeldungen heraus, lediglich 9 Warnungen, welche in meinen Leihenaugen vernachlässigbar sind. [Bild2]
3.JPG
Nach einspielen der Routine und starten stellt sich ein Fehler im FB_Diag aus worin folgende Fehler vorhanden sind: xLowVoltage und xDirectionNoFound. Angeschlossen ist soweit alles richtig. Laut meinem Multimeter liegt an U_L1 zu U_N eine 230V Netzspannung an.
Mich macht mich nur stutzig, dass ich im FB_Configuration_Eingang_bConnectiontype 16#00 erscheint und nicht wie im Handbuch steht 14h [in Hex 00104] für Sparschaltung I1_L1-N. Was muss ich da als Wert eingeben, damit dieser diese als solche erkennt oder macht die Klemme das automatisch? [Bild3]
34.JPG
In einer Stunde kann ich euch noch die restliche Schaltung mit den zugewiesenen Prozessdaten.
[EDIT]:
Hier Bilder von der Anlage in Betrieb
25.jpg
Prozessdaten:
23.JPG
[EDIT2]:
Die Anlage zeigt nach einschalten (ohne laufendes Programm auf RUN) einen LED-Fehlercode mittels roter Lampe an.
33.JPG

Grüße
Adrian
Angehängte Grafiken

TIA Probleme beim Bausteine Hochrüsten - TIA V14 SP1

$
0
0
Servus,

Für ein kommendes Projekt wollte ich mir mal die von Siemens zur Verfügung gestellten Bausteine (https://support.industry.siemens.com...ti=0&lc=de-WW) für die PSU8600 anschauen.

Ich hab mir die Bibliothek "V2.1 für Firmware V1.1 und TIA V14 SP1" herunter geladen, nur handelt es sich dabei noch um TIA V13 Bausteine die man zur Verwendung in V14 SP1 hochrüsten muss.

Das Hochrüsten scheint aber nicht zu funktionieren. Es bricht immer bei ca. 50% ab.

Ich hab Momentan leider kein TIA V13 zur Verfügung, und wäre darum dankbar wenn jemand eine Lösung für dieses Problem weiß.

Beste Grüße,

Jonathan

TIA Achspositionierung mit einer S7-1214 FC

$
0
0
Hallo liebe SPS-Gemeinde,

ich möchte mit einer S7-1214 Failsafe CPU Positionieraufgaben von Rundachsen bewerkstelligen. Meine Recherchen ergaben, dass Siemens hierfür 2 relativ preiswerte Möglichkeiten anbietet.

1. Zentral gesteuert: Schnelle Zählerausgänge der S7-1200 ermöglichen Motion Control Anwendungen. Belastet allerdings die CPU und ist au 2(?) Achsen begrenz. Benötigt eine V90. Ist der 100kHz Ausgang eventuell problematisch?
2. Dezentral gesteuert. CPU gibt über z.B. Profinet dem G120 Umrichter (CU 250S-2 PN) Lagesollwerte vor oder wählt auf dem Umrichter gespeicherte Verfahrsätze an. Belastet CPU nicht zusätzlich (kostet aber eventuell mehr?).

Habe ich das soweit richtig zusammengefasst? Was setzt ihr in der Praxis ein und warum?

Danke schon einmal für eure tollen Kommentare.

mfg

Schoki

Tia V14-Fernprogrammierer gesucht

$
0
0
Für kleine Programmänderungen an einem bestehenden V14-Projekt suche ich einen SPS-Programmierer auf Stundenbasis.
U.a. soll eine Profibus-Schnittstelle angebunden werden.
Gerne kann die Aufgabe in der Abendzeit gemeinsam über Teamviewer bearbeitet werden, so daß ich dabei auch etwas lerne.
Vor Ort Präsenz ist nicht erforderlich.

Anmerkung:
Bei dieser Ausschreibung handelt es sich nicht um eine klassische Stellenausschreibung.
Von daher kann das Projekt unter Suche / Biete gepostet werden.

Step 7 Datenaustausch

$
0
0
Hallo,

ich brauch einmal Eure Hilfe in Sachen Datenaustausch zwischen einem PC und einer CPU 315.

Die Daten sollen alle Stunde aktualisiert werden
Die Daten werden über eine CSV Datei gesendet
Die Daten werden auf dem PC gespeichert und auch verwaltet
Der Arbeitsfortschritt wird an dem Panel angezeigt


Ich müsste nur mal wissen wie so eine Datenübertragung überhaupt funktioniert.

TIA Projekt: Fiktive grafische Auftragserstellung mit S7 über TP1500 Comfort

$
0
0
Hallo zusammen,

nach etlichen YouTube Tutorials zu dem Thema und wälzen von Büchern, sind wir der Hoffnung hier auf ein wenig Unterstützung zu treffen.

Projektbeschreibung:

Über einen zentralen Umlauf werden Werkstückträger mit RFID-Tags zu verschiedenen Arbeitsstationen befördert. Wir als Arbeitsstation 1 sollen fiktive Aufträge über das TP1500 Comfort Panel generieren, indem wir beispielsweise grafische Symbole über drag-and-drop anordnen. Ein Montageauftrag könnte lauten: An Arbeitsstation 2 wird ein "Dreieck" aufgelegt, an Station 3 wird ein "Quadrat" aufgelegt usw.

Einzelnen Arbeitsschritte:

- Inbetriebnahme und Verknüpfung des Panels mit S7-300, CPU etc. - erledigt
- Erstellen einer Maske mit den Betriebsarten und Betriebszuständen - erledigt- Erstellen der Eingabemaske zur Generierung der Aufträge - erledigt
- Erstellen der Oberfläche um grafische Symbole durch drag-and-drop am Touchscreen (Panel) konfigurieren zu können.
=> Das Problem besteht an der Programmierung dieser Funktion im TIA Portal. Hat irgendjemand schon einmal etwas ähnliches gemacht?

Wir sind über jegliche Hilfestellungen dankbar.


MfG

WIWIKA

750 881 mit Wago App verbinden

$
0
0
Hallo an die Profis da draußen,

Ich habe mir einen 750-881 zugelegt und darauf eine Steuerung mit Visualisierung geladen.
Nun möchte ich diese mit der Wago App steuern (Bin jedoch in Sachen Netzwerktechnik eher ein Vollpfosten:p).
Dazu habe ich mir den TP-Link MR3020 Router zugelegt, den ich mit dem 750-881 verbinden möchte um so via Android auf den Feldbuscontroller zugreifen (zunächst nur in einem lokalen Netzwerk) zu können.
Doch irgendwie will das nicht so klappen wie ich das möchte.

Also:
Wie muss ich meinen Dip-schalter konfigurieren?
Funktioniert das überhaupt mit diesem Router?
Wie stelle ich die IP Adresse ein?
Wenn ich damit ins Internet gehen will (der Router hat einen USB-Slot für einen UMTS-Stick) wie gehe ich da am besten vor? Ich lese überall DyDNS und VPN aber wie das genau funktioniert weiß ich leider nicht.
Ich habe bereits einen DyDNS account bei No-IP weiß aber nicht was mir der bringt bzw. wie ich das mit einem VPN verknüpfe.

Ich bin um jede Antwort dankbar ;)

Danke im Voraus

Der Salzburger

Simualtionstool für Ausbildung gesucht

$
0
0
Hallo zusammen,

ich suche eine Simulationssoftware mit der ich eine kleine Fördertechnik mit ca 20-30 Elementen für Ausbildungszwecke simulieren kann. Es sollen Einzelplatzförderer und Hubtische simuliert werden. Wichtig ist, dass das ganze an einer realen SPS betrieben werden kann. Leider bleibt auch hier das Thema TIA nicht aussen vor. Die Simulation soll mit S7-1200/1500 und vielleicht auch noch mit S7-300/400 kompatibel sein.
Bisher haben wir eine Uralt-version von Trysim für unsere Ausbildungszwecke im Einsatz. Sowas in der Richtung suche ich. Es ist nicht primär wichtig dass die Modellerstellung effizient abgewickelt werden kann, jedoch sollte ich die Modelle auch nicht kaufen müssen.

Hat da jemand einen Tip für mich?

Edit: Ich vergas zu erwähnen dass ich wahrscheinlich kein 10000€-Software genehmigt bekomme. Sollte etwas Preiswertes sein.

Step 5 SICOMP SMP16-CPU (115u CPU 944)

$
0
0
Hallo Leute Thema: Siemens SICOMP; wer kennt sich noch aus mit den alten, an sich bewährten S5-CPU's ? ich habe eine SICOMP SMP16-CPU 050 (meldet sich als 115u CPU 944), die auch noch SMP16-SFT260 Karten gesteckt hat - zur Aufnahme von einigen SSI-Gebern; die Adressierung (Peripherie-Adressen) sowie den Zugriff auf die Zählerwerte kann ich im bestehenden S5-Programm nicht finden; in der Dokumentation der SFT260 wird eine Parametriersoftware SMP-AKO V2.0 angegeben (win95). lt. Siemens Niederlassung ist die Software seit 2008 aufgekündet, auf ebay wollen die Besitzer einen Haufen Geld dafür haben. kann mir jemand einen Tipp geben, wie ich zu den SSI-Geberwerten komme oder wo ich die Software downloaden könnte ? herzlichen Dank

Step 7 ET200SP wird nicht angezeigt

$
0
0
Moin Moin

ich musste mein Field-PG M4 auf Lieferzustand zurücksetzen. Ich habe fast alles wieder installiert. wenn ich ein altes Programm öffne kommt die Mledung
"Fehlende Softwarepakete - HW-Updates unvolständig etc."
In NetPro werden mir zwei ET200Sp-Stationen nicht angezeigt.
IM HW-Manager unter "HW-Updates installieren" kann ich die ET200SP auch auswählen aber wenn ich sie installieren will geht es nicht.
siehe Screenshot. Hat jemand ne Lösung
Angehängte Grafiken

Modbus Konfigurator

$
0
0
Hallo zusammen,

habe eine kurze Verständnissfrage die mir die Dokumentation nicht passend beantwortet:

Frage: Wenn ich mit dem Modbuskonfigurator folgende Konfiguration erstelle:

1. Wago CPU 889 Master
2. Wago ET 750-352 mit 2x 1504 16DO

und danach den Code generiere,
wo genau müssen diese generierten PRG Bausteine dann aufgerufen werden?
In einem extra Task, oder im Haupttask oder in beidem?

gruss Markus

Drehmoment variabel Beckhoff

$
0
0
Hallo,

Wir benutzen Beckhoff Steuerung und für eine Applikation wollen wir Drehmoment variabel steuern. Welche Motor und welche Hardware sollen wir nehmen? Gibt es Anleitungen wie man das programmiert?
Drehmoment sollte in Range 1Nm bis 3 Nm einstellbar sein . Kann jemand mir die Abhängigkeit Drehzahl-Drehmoment für diese Applikation erklären ?

Besten Dank.

Gruss,

Leo

TIA HW-Kennung der PN-Schnittstelle der CPU auslesen

$
0
0
Hallo,
ich hoffe, es kann mir jemand weiterhelfen.
Ich will die HW-Kennung der PN-Schnittstelle einer 1200er CPU im Programm auslesen. Die HW-Kennung der CPU etc. kann ich über GEO2LOG ermitteln, aber da bekomme ich eben nur die HW-Kennung der CPU oder anderer Module, aber nicht die HW-Kennung der PN-Schnittstelle. Hat das schon mal jemand hinbekommen?

Snape

Problem bei Schreiben in CSV-Datei

$
0
0
Hallo liebe Community


ich stehe vor einem Problem und hoffe ihr könnt mir weiterhelfen.
Ich möchte mit meiner CX5130 - SPS Daten einer Messklemme auslesen und in eine CSV-Datei schreiben (Soweit nicht kompliziert :)).
Die Klemme liefert alle 100µs (EL3356-0010) neue Werte, wobei ich im 5ms Takt die Werte in die CSV-Datei schreiben möchte.


Folglich mein Code für die Datenspeicherung:

Code:

CASE step OF
    0:    (* Wait for rising edge at bWrite variable *)
    IF bWrite THEN
        bWrite        := FALSE;
        bBusy        := TRUE;
        bError        := FALSE;
        nErrId        := 0;
        hFile        := 0;
        nRow        := 0;
        nColumn        := 0;
        step        := 1;
    END_IF

    1:    (* Open source file *)
        fbFileOpen(bExecute := FALSE);
        fbFileOpen(sNetId        := sNetId,
                        sPathName    := sFileName,
                        nMode        := FOPEN_MODEWRITE OR FOPEN_MODEBINARY,                    // Open file in BINARY mode! - Write
                        ePath        := PATH_GENERIC,
                        bExecute    := TRUE);
                 
        step := 2;

    2 (* Wait until open not busy *)
      fbFileOpen(bExecute := FALSE,
                      bError    => bError,
                      nErrID    => nErrID,
                      hFile    => hFile);
                 
        IF NOT fbFileOpen.bBusy THEN
            IF NOT fbFileOpen.bError THEN
                  step := 3;
            ELSE                                                                        // Error: file not found? *)
                  step := 100;
            END_IF
        END_IF

    3 (* Convert one PLC record to CSV format *)
    cbRecord := 0;
    fbWriter.eCmd := eEnumCmd_First;                                                // Write first field value
    IF nRow <= GVL_Measurement.MAX_CSV_ROWS THEN
        FOR nColumn := 0 TO GVL_Measurement.MAX_CSV_COLUMNS BY 1 DO
               
        cbField := 0;
        CASE nColumn OF
        0:
            cbField := ARG_TO_CSVFIELD(F_ULINT(database[nRow].uliTimestamp), TRUE, ADR(aBuffer), SIZEOF(aBuffer));
        1:
            cbField := ARG_TO_CSVFIELD(F_DINT(database[nRow].diValue), TRUE, ADR(aBuffer), SIZEOF(aBuffer));
        ELSE
        ;
        END_CASE
               
        IF cbField > 0 THEN
        (* Add new field to the record buffer *)
              fbWriter(pBuffer := ADR(record),
                          cbBuffer := SIZEOF(record),
                          putValue :='', 
                          pValue := ADR(aBuffer),
                          cbValue := cbField,
                          bCRLF := (nColumn = GVL_Measurement.MAX_CSV_COLUMNS));(* bCRLF == TRUE => Write CRLF after the last field value *)
                           
            IF fbWriter.bOk THEN
                fbWriter.eCmd    := eEnumCmd_Next;(* Write next field value *)
                cbRecord        := cbRecord + fbWriter.cbWrite;(* Calculate the new record size *)
            ELSE(* Error *)
                step := 100;
                RETURN;
            END_IF
      END_IF
  END_FOR

  nRow := nRow + 1;                                                            // Increment number of created records (rows)
  step := 4;                                                                    // Write record to the file
        ELSE                                                                            // All rows written => Close file
    step := 10;
        END_IF

    4:
    fbFileWrite(sNetId:= sNetId,
                    hFile:= hFile,
                    pWriteBuff:= ADR(record),
                    cbWriteLen:= cbRecord,
                    bExecute:= TRUE);   
         
    step := 5;
       
    5:   
    fbFileWrite(bExecute := FALSE,
                      bError        => bError,
                      nErrId        => nErrId);
                   
      IF NOT fbFileWrite.bBusy THEN
            IF NOT fbFileWrite.bError THEN
                  step := 3;                                                                // Write next record
            ELSE                                                                        // Error
                  step := 100;
            END_IF
      END_IF

    10:    (* Close source file *)
      fbFileClose(bExecute := FALSE);
      fbFileClose(sNetId        := sNetId,
                      hFile        := hFile,
                      bExecute    := TRUE);
                   
      step := 11;

    11 (* Wait until close not busy *)
      fbFileClose(bExecute    := FALSE,
                      bError        => bError,
                      nErrID        => nErrID);
                   
      IF (NOT fbFileClose.bBusy) THEN
          hFile    := 0;
          step    := 100;
      END_IF

    100: (* Error or ready step => cleanup *)
        IF ( hFile <> 0 ) THEN
            step    := 10;                                                                // Close the source file
        ELSE
          bBusy    := FALSE;
          step    := 0;                                                                // Ready
        END_IF
END_CASE


Die Daten (uliTimestamp-> ULINT und diValue -> DINT) werden in ein Array gespeichert welches dem Baustein "FB_WriteDataIntoCSVFile" übergeben wird (database : ARRAY[0..GVL_Measurement.MAX_CSV_ROWS] OF ST_Csv_Record;)
soweit funktioniert die Datenumwandlung.... Jedoch steht in meiner CSV-Datei (zwar in der richtigen Zeile/Spalte) nur Unsinn in From von irgendwelchen Buchstaben oder Sonderzeichen...



Was mache ich flasch? oder was kann ich ändern damit es funktioniert?


Vielen Dank im voraus!


Viele Grüße

Kommunikation zwischen Beckhoff Steuerungen

$
0
0
Schönen guten Morgen :-)

Ich möchte zwei Steuerungen miteinander Reden lassen. Die beiden Steuerungen sind beides CX Maschinen. Da der Kommunikationsweg mittels VDSL2 über eine Kabeltrommel mit Schleifringen geführt ist und teilweise abbricht, bin ich mir nicht sicher wie ich das Realisieren soll. Ist es Sinnvoller die Kommunikation über ADS oder per Netzwerkvariablen zu realisieren. Es sollen alle 2 min ein paar Meldungen (30 Stck.) und ca. 5 Messwerte übertragen werden.

Die Mastersteuerung besitzt eine eigene Netzwerkkarte mit einem Eigenen Netzwergsegment für die Slavesteuerungen.

Nur zur Information: Eine Kommunikation über Netzwerkvariablen habe ich schon einmal getätigt. Bei ADS hingegen habe ich noch null Erfahrungen.

Vielen Dank im voraus

Grüße aus dem Allgäu

M. Socher

Retain-Speichereinstellungen Wago 889 KNX

$
0
0
Hallo zusammen,

dank eurer Hilfe habe ich meinen Modbus Anteil nun laufen,
jetzt habe ich mir mein Programm soweit aufgebaut wie ich es brauche,
und fange an es mit "leben" zu füllen... Dabei ist mir aufgefallen, dass der Retain-Speicher
ganz schnell eng wird...

In den Speichereinstellungen der CPU sehe ich, dass man dem Retain-Speicher konfigurieren kann.
Jetzt habe ich da wenig Erfahrung auf dem Segment, da ich eher aus der Siemens Ecke komme...

Standardmäßig ist der Retainspeicher 16#4000 groß, um wie viel mehr kann man den vergrößern, und
auf was muss ich dabei achten? Nicht dass ich mir hier nen Wolf programmiere und ich bekomme das gar nicht
in die Steuerung geladen.

Den Hauptanteil meines Speicherbedarfs kommt vom Einsatz der FbDPT_SWITCH FBs, zur Kommunikation
mit dem KNX Bus, und der darauf vorhandenen Taster von MDT. Diese haben pro KNX Adresse 4x Taster + 4x StatusLED + 1x OrientierungsLED.
Resultiert in 9x FbDPT_SWITCH aufrufen.

Vielleicht geht das ja noch effizienter?

Kommunikation Lenze FU i550 via Profinet

$
0
0
Hallo Leute,

ich versuche gerade die Kommunikation zwischen einer S7-1200 und dem Lenze FU i550 via Profinet zustande zu bekommen. Parametrierung der Motordaten etc. habe ich ueber Easy Starter Software bereits vorgenommen.
Wenn ich den FU nun aber in Automatik schalte und ihm einen Sollwert im SPS Programm vorgeben will, passiert nichts.
Ich verwende den Baustein LCB_12x_ActuatorSpeed_V2.1. Diesen habe ich im Moment mit der HW-Kennung des FUs beschaltet, dem iDriveType 5 für den i550 FU und dem rSpeedSetpoint für die Sollwertvorgabe.
Im Anhang habe ich euch mal die Gerätekonfiguration angehangen. Hat jemand eine Idee wo mein Fehler sein könnte?

Viele Grüße,
Kad

FbDaliMacro Commands

$
0
0
Moin
verwende den o.g Baustein um eine Abfrage zu machen.
Abfrage läuft und auch die Seriennummern stimmen.
An der Wago habe ich vier Klemmen, wobei bei drei Klemmen ein EVG anhängt.
Bei Klemme 2 und 3 werden die Nummern richtig ausgegeben.
Nur bei der ersten Klemme werden die Snummern auf [9,0] und [9.1] ausgegeben, also doppelt.
Zur Erklärung beigefügte Bilder und Code.
Vielleicht sieht jemand auf den ersten Blick, warum er bei der ersten Klemme diese doppelte Ausgabe macht.
Vielen Dank für Eure Hilfe und schon einmal ein schönes Wochenende..

____
VAR
oFbDaliMacroCommands : FbDaliMacroCommands;
Speicher_Antwortbyte: BYTE;
oMacro: BYTE := 5; (*Macro 5 = Abfragen der Seriennummer*)
parameterMakro: ARRAY [0..6] OF BYTE; (*Tabelle 3*)
beendetMakro: BOOL;
welcheKlemme: BYTE; (*hier Klemme 1*)
eingang: BOOL := TRUE; (*Wenn true, wird der Aufruf des Makros an die Busklemme übertragen. Nach Übertragung wird der Eingang vom Funktionsbaustein zurückgesetzt*)
Rueckgabe: BOOL; (*true Baustein bereit,false nicht bereit z.B. laufende Operation*)
antwortbyte: BYTE;
RueckmeldungvomMakro: ARRAY [0..66] OF BYTE;
Serien_Nummer: ARRAY [0..63,0..3] OF STRING; (*eindimensional für eine Klemme // Serien_Nummer: ARRAY [0..63,0..4] OF STRING; bei meheren Klemmen // zweite Dimension je nach Klemmen*)
Schleife: INT;
Zwischenspeicher: STRING;
Addressenzaehler: BYTE;
Durchlaufkontrolle: BOOL;
Ausgabearray: ARRAY [0..63,0..3] OF STRING; (*Ausgabe nur eindimensional da hier im Test nur eine Klemme abgefragt wird*) (* bei mehreren Klemmen Ausgabearray: ARRAY [0..63,0..63] OF STRING; *)


readyzaehler: INT;
stop: BOOL;
END_VAR

----


IF oFbDaliMacroCommands.xReady THEN
eingang := TRUE; (* neues Starten der Abfrage *)
END_IF;


parameterMakro[0] := Addressenzaehler;


oFbDaliMacroCommands( (*Funktionsbaustein für Makro*)
bMacro:= oMacro, (*Makronummer*)
abParameter:= parameterMakro, (*Parameter der Makros aus Tabelle*)
xStop:= beendetMakro, (*positive Flanke beendet*)
bModule_753_647:= welcheKlemme, (*Klemme*)
xSend:= eingang , (*wenn gesetzt an Busklemme Übertragung, danach wird Eingang zurückgesetzt*)
xReady=> Rueckgabe, (*True = Bereit, false = nicht bereit*)
bFeedback=> antwortbyte , (*Antwort siehe Tabelle*)
abValues=> RueckmeldungvomMakro); (*Rückmeldung*)


IF oFbDaliMacroCommands.xReady THEN (*wenn Baustein bereit dann*)
readyzaehler := readyzaehler+1;


IF NOT Durchlaufkontrolle THEN (* nur einmal durchlaufen *)
Serien_Nummer[welcheKlemme,Addressenzaehler]:='';
FOR Schleife := 2 TO 9 BY 1 DO (*Auslesen und zusammensetzen der 8 Bytes zur Seriennummer*)(*abValues[0] = Makronummer // [1] = anzahl gelesener Bytes [2] = Seriennummer Byte 8 .... [9] = Seriennummer Byte 1*)
Zwischenspeicher := BYTE_TO_STRH(RueckmeldungvomMakro[Schleife]); (*Speichern der Rückmeldung des Makros*)(*umwandeln des Array Rückmeldung - Byte- in String*)
Serien_Nummer[Addressenzaehler,welcheKlemme] := CONCAT (Serien_Nummer[Addressenzaehler,welcheKlemme] , Zwischenspeicher); (*zusammensetzen der einzelnen Bytes der Rückmeldung zur kompletten Seriennummer*)
END_FOR;


IF Serien_Nummer[Addressenzaehler,welcheKlemme] <>'0000000000000000' THEN (*Abfrage wenn die Seriennummer nicht leer ist, dann......*)
Ausgabearray[ Addressenzaehler,welcheKlemme ] :=Serien_Nummer[Addressenzaehler,welcheKlemme]; (*Array der Ausgabe füllen mit Seriennummer *)(*werden durch Addressenzaehler nacheinander aufgezählt*)


ELSE
Ausgabearray[ Addressenzaehler,welcheKlemme ] := 'nix ist'; (*wenn Seriennummer leer ist, bleibt so auch das Ausgabe Array leer*)
END_IF;


Addressenzaehler := Addressenzaehler + 1; (*Abfragen aller klemmen // hier schon die Möglichkeit alle Klemmen abzufragen*)
IF Addressenzaehler >63 THEN Addressenzaehler := 0; welcheKlemme := welcheKlemme +1; (* schon einmal komplett durch? dann wieder alles auf NULL *)
IF welcheKlemme > 3 THEN
welcheKlemme := 0;
stop := TRUE;
END_IF;


Durchlaufkontrolle := TRUE; (*wenn einmal schon durch *)
END_IF;
END_IF;
ELSE (*starten des nächsten durchlaufes*)
Durchlaufkontrolle := FALSE; (* freigabe für nächsten Durchlauf *)
END_IF;
Angehängte Grafiken
Viewing all 49312 articles
Browse latest View live


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