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

TIA Senden von SMS mithilfe von AT-Befehlen mit einer S7-1500

$
0
0
Hallo!

Ich versuche mit einem Mobilfunkrouter der Fa. Lucom (LR77 v2 Libratum) und einer Siemens S7-1500er SPS (1516F-3PN/DP V2.5) mithilfe von AT-Befehlen über die Ethernet Verbindung SMS zu versenden.
Bei einem ersten Versuch über das Tool "Hercules" nimmt der Router zunächst die Befehle AT+CMGF=1 und AT+CMGS="0175......." ohne Probleme an, erst beim Senden der SMS mit Strg + Z wird ein unbekannter Fehler geliefert (siehe Ahnhang). An sich sollte das Senden der SMS jedoch funktionieren, ich habe dies über eine manuelle Eingabe in der Browseroberfläche des Routers getestet.

Bei einem zweiten Versuch über die SPS mit dem Baustein TSEND_C wird der Befehl AT+CMGF=1 auch mit OK beantwortet, jedoch nach dem Befehl AT+CMGS="0175......." wird nicht das erwartete '>' gesendet, sondern ein Error. Ich habe die zu sendenen Strings beide mit einem '$R' für den ENTER-Druck beendet. (Aufruf TSEND_C: siehe Anhang)
Bei diesem Router lassen sich leider keine Fehlercodes einschalten, sodass ich nicht eingrenzen kann woran dies liegen könnte.
Ich vermute jedoch, dass es vielleicht etwas mit den Anführungszeichen (") im zweiten Befehl zu tun hat. Ich sende aus dem Hercules und der SPS ja eigentlich genau das Gleiche, aber vielleicht bearbeitet das Tool Hercules meinen eingegebenen Text noch weiter?

Über Ideen würde ich mich freuen.
Angehängte Grafiken

TwinCAT 3 - Link Variablen

$
0
0
Hallo zusammen,

mein Problem ist, dass die verlinkten Variablen nicht die Werte aus dem konfigurierten Device übernehmen.
Ich kann die Eingangswerte unter Devices online beobachten:
Bild1.jpg

Die verlinkte Variable allerdings bleibt immer 0:
Bild2.jpg

Ich bin noch neu im Thema Beckhoff und kann mir trotz Recherche dieses Verhalten leider nicht erklären.

Vielen Dank schon mal für eure Hilfe

Gruß Komissar
Angehängte Grafiken

Nanotec-Schrittmotor über RS485 von Beckhoff CX betreiben

$
0
0
Hallo zusammen,

ich habe Schwierigkeiten zwei Nanotec PD6 N89 Motoren über die serielle Schnittstelle RS485 zu betreiben.
Mit dem Nanotec USB Kabel ZK RS485 USB und der Nanotec Software kann ich die Motoren konfigurieren und drehen lassen. Dabei gibts ja 32 Fahrprofile, die ich mir vorher anlegen kann.
Als Befehl würde ich für den ersten Motor und das erste Fahrprofil schreiben: '#1y1\r'

Anschließend habe ich versucht die Motoren über die Beckhoff EL6022 zum Laufen zu bringen, jedoch erfolglos. Dabei tun sich für mich zwei Fehlerquellen auf. Zum einen bereitet mir die Pinbelegung des 9-poligen D-Sub-Steckers kopfzerbrechen, zum anderen weiß ich nicht genau ob mein Programm richtig funktioniert.
Ich hatte bisher keinen elektrotechnischen Bezug und tue mich schwer mit der Verkabelung von Rx und Tx. Mal ist es gekreuzt, mal nicht. Desweiteren dachte ich RS485 sei ein Standard. Bei Nanotec werden aber die Pins 2 (Rx+), 4 (Tx+) , 7 (Rx-) und 9 (Tx-) belegt, bei Beckhoff 2 (Tx+), 3 (Rx+), 7 (Tx-) und 8 (Rx-). Dazu kommt noch, dass in der Beckhoffdoku zur EL6022 unter Anschlüsse bei RS485 von halbduplex die Rede ist und ich mir nicht sicher bin, ob die Motoren damit überhaupt zum Laufen gebracht werden können. Im halb-duplex-Betrieb bräcuhte ich ja dann Verbindungen jeweils zwischen Rx+ und Tx+ sowie Rx- und Tx-. Für mich als Laie klingt das eher nach Kurzschluss :rolleyes:

Hier mal noch der bisherige Programmausschnitt, fall die Verpinnung dann mal passen sollte.
Ich habe mir folgendes Programm für die serielle Schnittstelle erstellt und teste alsBefehl für den ersten Motor und das erste Fahrprofil: '#1y1\r'.
Code:

PROGRAM Background_Serial
VAR
    fbEL6022_1 : SerialLineControl;        // Interface Controller für Hintergrund Kommunikation (22 Byte)
    bEL6022Error_1 : BOOL;               
    eEL6022ErrorID_1 : ComError_t;
   
    // I/O Variablen
    stInEL_1 AT%I* : EL6inData22B;
    stOutEL_1 AT%Q* : EL6inData22B;
   
END_VAR

Im Programmteil steht dann:
Code:

fbEL6022_1(
    Mode:= SERIALLINEMODE_EL6_22B,
    pComIn:= ADR(stInEL_1),
    pComOut:= ADR(stOutEL_1),
    SizeComIn:= SIZEOF(stInEL_1),
    Error=> ,
    ErrorID=> ,
    TxBuffer:= TxBufferEL_1,
    RxBuffer:= RxBufferEL_1);
   
IF fbEL6022_1.Error THEN
    bEL6022Error_1 := TRUE;
    eEL6022ErrorID_1 := fbEL6022_1.ErrorID;
END_IF

Anschließend soll mit der FB_Serial die Kommunikation gewährleisten:
Deklarationsteil:
Code:

FUNCTION_BLOCK FB_Serial
VAR_INPUT
END_VAR
VAR_IN_OUT
    TxBuffer : ComBuffer;
    RxBuffer : ComBuffer;
END_VAR
VAR_OUTPUT
END_VAR
VAR
    fbSend : SendString;
    bSendBusy : BOOL;
    eSendErrorID : ComError_t;
    sCommand : STRING;
    bSend : BOOL;
    fbReceive : ReceiveString;
    sReceiveString : STRING;
   
    nstate: INT;
    bdrehen: BOOL;
END_VAR

Im Programmteil steht zum testen folgendes:
Code:

IF bSend THEN
    bsend := FALSE;

    fbSend(SendString:= sCommand,
            Busy=> bSendBusy,
            Error=> ,
            TXbuffer:= TxBuffer);
END_IF

IF fbSend.Error <> COMERROR_NOERROR THEN
    eSendErrorID := fbSend.Error;
END_IF

fbReceive(
    Prefix:= ,
    Suffix:= ,
    Timeout:= T#1S,
    Reset:= ,
    StringReceived=> ,
    Busy=> ,
    Error=> ,
    RxTimeout=> ,
    ReceivedString:= sReceiveString,
    RXbuffer:= RxBuffer);


Es wäre super, wenn mir jemand sagen könnte, wie ich die Motoren verpinnen muss, da ich mittlerweile schon einiges getestet habe und nicht mehr weiter weiß.

Viele Grüße
Yannik

Input register addresses in AXL F RS UNI for Modbus RTU

$
0
0
Dear all,

I am using the AXL F RS UNI as a Modbus RTU slave in a project and am required to allocate a number of input registers at certain addresses for a Modbus Master. The problem is that the Modbus Master is expecting some data on input register with address 0, but in the standard library only addresses 2000-2999 are reserved for input registers. Addresses 0-1999 are reserved for Holding Registers, so I will receive an error when the Modbus Master will be expecting an input register at 0.

Does someone know a way to "re-address" these hardcoded addresses, or know of another way to choose addresses freely? I am told that my option is to write a new function block just for this purpose, but I really want to avoid this as it would require a lot of time.

Appreciate your help!

TIA Sync-Domain / Sync-Master IRT

$
0
0
Hallo Leute,
habe eine spezielle Frage zu Sync-Domain / Sync-Master / IO-Controller/Device.

Kann ein Sync-Master (IRT-Klasse) auch gleichzeitig ein IO-Device sein, um mit einem IO-Controller zu kommunizieren.

Nehmen wir an, ein IRT Ring, hier sind drei Steuerungen vorhanden. Steuerung 1 und 2 sind je zwei Achsen taktsynchron zugeordnet. Die 3. Steuerung ist IO-Controller für Datenaustausch mit Steuerung 1&2 als IO-Device.
Geht das? Wieviele Sync-Domains muss man anlegen? In welche Sync-Domain muss dann die 3. Steuerung. Müssen alle weiteren Teilnehmer im Ring auch einer Sync-Domain als Sync-Slave angehören?

Step 7 Hilfe bei einer FM350-2

$
0
0
Hallo euch allen,

ich suche händerigend ein Demo Programm für die FM350-2. Es soll die Inpulse aufaddieren (Zählen) die am Eingang von Zähler 0 liegen.
Nicht mehr aber auch nicht weniger. Warum das ?, Nun ich habe ein Karte von den Typ FM350-2. Aber ich bekomme die absolut nicht zum Zählen. Bin vieleicht ein bisschen Doof aber soviel doch auch nicht. Ich kann einstellen was ich will es geht einfach nicht. Selbst wenn man bedenkt das bei SIEMENS alles ein wenig anders ist, sollte das doch irgendwie funktionieren. Also wie gesagt habe auf einer Leitung Rechtech
Impulse mit 24 Volt drauf. Und die will ich Zählen. Fortlaufend immer Zählen ohne Tore usw. Wenn der Zähler überläuft dann macht er das
eben. Ist doch kein Hexenwerk.

so mit freundliche Grusse

Günni 0171 682 1294

TC3 - TON resetten (?)

$
0
0
Hallo zusammen,

wie kann ich den TON wieder auf 0 stellen?
Ich habe ein Programm, das an sich auch läuft, nacheinander die Timer (alle TON) startet - aber es funktioniert nicht, die Timer zu resetten (was ja eigentlich funktionieren müsste, wenn Timer.IN := 0 gesetzt wird?
Ich kopiere mal die Teile des Codes:

Code:

CalibrationTimer1( IN:=TRUE, PT:=T#1M); //start timer (das funktioniert auch, der Timer startet und läuft 1 Minute)

 IF CalibrationTimer1.Q THEN //once timer is over  (dieser Block funktioniert auch, Timer2 startet und läuft 1 Minute)
  Valves_List.Valve1 := TRUE; //open CalGas 1
  CalibrationTimer2( IN:=TRUE, PT:=T#1M);
 
  //Flush - 5min                                                    (
dieser Block funktioniert auch, Timer3 startet und läuft 5Minuten)
  IF CalibrationTimer2.Q THEN
  MFCs_List.MassFlowController2 := 0; //close MFC2
  Valves_List.Valve1 := FALSE; //close CalGas 1
  MFCs_List.MassFlowController1 := REAL_TO_INT(50.0 /100.0 *0.5 *32767.0); //flush cell with MFC1 - set to 50% of full scale of MFC
  CalibrationTimer3( IN:=TRUE, PT:=T#5M);

IF Switches_List.Calibration_Stop  THEN          (Hier sollte ja durch IN:=0 alle Timer zurück gesetzt werden - soweit ich das InfoSYS verstanden habe...)

 CalibrationTimer1.IN := 0;
 CalibrationTimer2.IN := 0;
 CalibrationTimer3.IN := 0;

Ich hoffe, irgendjemand von euch hat dazu eine gute Idee?

Vielen Dank schon mal!
Dominik

S7 Kommunikation. Welche Lib ist "state of the art"

$
0
0
Hallo zusammen,
ich arbeite aktuell mit der SNAP7 1.0.2, jetzt fehlten mir hier Async Methoden und nach kurzer Suche habe ich einige neuere Versionen dazu gefunden.
Was mir bisher sehr gut gefällt ist https://github.com/S7NetPlus/s7netplus.
Nun jetzt meine Frage was ist euerer Meinung nach aktuell state of the art ?
Gruß

WinCC Flex ich finde kein option " In STEP 7 integrieren" beim Menübefehl Projekt

$
0
0
hallo liebe SPS Fan
warum finde ich kein "" In STEP 7 integrieren"" Option beim Menübefehl Projekt.
Danke im voraus.

Kommunikation zwischen codesys rte v3 und twincat 3

$
0
0
Guten Morgen zusammen,

ich benötige eine Kommunikation zwischen einem IPC mit Codesys RTE v3 und einem CX2020-Controller mit Beckhoff TwinCAT3. Die Kommunikation muss nicht zwingend echtzeitfähig sein, auf dem CX2020 läuft ein TCP/IP server. Hier könnte ich ne socket-kommunikation machen, aber ich weiß nicht was ich auf der Gegenseite, also dem IPC mit Codesys RTE v3 machen soll.

Bin auch offen für Lösungen mit Netzwerkvariablen, mir geht es generell darum ein paar Variablen zwischen den Steuerungen auszutauschen. Unidirektional von Codesys RTE v3 -> Beckhoff würde auch ausreichen.

Viele Grüße

Dax

Pfannenberg - Entwicklungsingenieur (m/w) Elektronik / Elektrotechnik / Software

$
0
0
Entwicklungsingenieur (m/w) Elektronik / Elektrotechnik / Software



VOLLZEIT

Hamburg, Deutschland

Mit Berufserfahrung

10.09.18



Die Pfannenberg-Gruppe ist ein international tätiges Industrieunternehmen in der Elektrotechnik. Erfolgreich entwickeln, produzieren und vertreiben wir technisch hochwertige Produkte. Wir sind in den Bereichen Klimatisierung und Ausrüstung von Schaltschränken, Prozesskühlung und Signaltechnologie tätig, insbesondere für die "Sicherheit für Mensch, Maschine und Umwelt!".


Zum nächstmöglichen Zeitpunkt suchen wir als Ergänzung für unser innovatives Team einen engagierten


Entwicklungsingenieur (m/w) Elektronik / Elektrotechnik / Software


Ihre Aufgaben:

- Entwicklung von digitalen und analogen Schaltungen sowie hardwarenaher Software

- für µC-basierte Systeme

- Betreuung des Entwicklungsprojektes vom Konzept über die Serienreife bis hin zum Fertigungsanlauf

- Verantwortung für technische und inhaltliche Bearbeitung der Produktentwicklung sowie Kunden-Projekte incl. selbständiger Verfolgung der Kosten- und
Terminkontrolle

- Erstellung der notwendigen Dokumentation für Kunden, Einkauf und Produktion


Ihr Profil:

- Abgeschlossenes Ingenieur-Studium der Elektrotechnik oder ähnliche Ausbildung

- Fundierte Kenntnisse in Embedded C Programmierung (STM32)

- Fundierte Kenntnisse in Feldbus-, Netzwerk- und Regelungstechnik

- Gute bis sehr gute Kenntnisse von Web/IoT-Protokollen (MQTT, CoAP, HTTP, IP, 6LoWPAN)

- Erfahrungen in der Entwicklung elektrischer Geräte / Systeme

- Kenntnisse in Altium Designer (Layout-Software) und LabView sind wünschenswert

- Gute bis sehr gute Kenntnisse der elektrischen Messtechnik

- Englischkenntnisse nach CEF auf B2 – C1 Level

- Sie sind es gewohnt, zuverlässig, teamorientiert, eigenverantwortlich, selbstständig und zielorientiert zu arbeiten.


Wir bieten:

- Attraktive und leistungsgerechte Vergütung

- Ansprechende soziale Leistungen (z.B. Kantine, vergünstigte Fahrkarte (ProfiCard) des Hamburger Verkehrsverbundes, kostenlose Parkplätze auf dem
Betriebsgelände, Angebote zu sportlichen Aktivitäten, Betriebsfeste)

- Ein spannendes anspruchsvolles Betätigungsfeld in einem wachsenden, international



Können wir Sie für diese Herausforderung begeistern?


Dann freuen wir uns darauf, Sie persönlich kennen zu lernen!



Bitte übersenden Sie uns Ihre vollständigen Bewerbungsunterlagen (Anschreiben, Lebenslauf, Zeugnisse) unter der Angabe Ihrer Gehaltsvorstellungen sowie Ihres nächstmöglichen Eintrittstermins vorzugsweise über unseren Button "online Bewerben".



Pfannenberg GmbH, Frau Howe

Werner-Witt-Straße 1, 21035 Hamburg


Für erste Fragen steht Ihnen Frau Howe unter der Telefonnummer 040 734 12 176 gerne zur Verfügung. Absolute Vertraulichkeit sichern wir Ihnen selbstverständlich zu.



ONLINE BEWERBEN

https://jobdb.softgarden.de/jobdb/pu...ick?jp=2721279
Angehängte Dateien

TIA G120C Safe LED

$
0
0
Hallo,

Ich habe hier ein G120C. Bei Durchbrechen einer Lichtschranke soll der Motor per STO gestoppt werden. Die STO Funktion wähle ich über das Bit 0.0 von Telegramm 30 an. Ist es 0 so ist STO angewählt. Bei 1 abgewählt.

Ansich funktioniert das ganze. Der Motor schaltet ab und es liegt auch keine Spannung am Motor an. Aber die Safe LED am FU leuchtet nicht. Somit bin ich mir nicht sicher ob die (Prosafe) Sicherheitsfunktion wirklich schaltet und das Abschalten des Motors nur über meine zusätzlichen Verriegelungen im SPS Programm geschieht. Die Steuerbefehle für den Motor sind mitdem Zustand der Lichtschranke verknüpft.

In den HW Einstellungen des FU ist das Telegramm 30 eingetragen und in den Parametern ist unter den Abschaltfunktion "AUS1" auch das PZD1 Bit 0 eingetragen. Sollte also funktionieren. Allerdings habe ich die Sicherheitsfunktion nicht über den Inbetriebnahmeassistenten eingestellt. Ist das denn unbedingt notwendig?

Mitsubishi GX IEC Developner Analogwertkarte auslesen

$
0
0
Hallo ihr lieben,

Ich hoffe das mr jemand auf dem Sprung helfen kann.
Dies ist ein Selbststuduie-Projekt, kein reales.
Ich hab reale Software und reale Hardware. Keine Simulation.

Binaire Signalen kann ich problemlos abgreifen. IEC Adresse %IX für die Eingängen und %QX für die Ausgängen. In Dezimal, und als MIT Adresse in Hexadezimal.

Mein Problem ist es zu zu greifen auf die Analogwert karte (A1S68AD). Im Hardware hat sie die offset 200(HEX)
Dann war meine gedanke das die Adresse des 1e Kanals %IW200 oder %IW512 ist. Dies leitet aber zum Übersetzungsfelher.
Zugreifen auf Direktory (D) oder WORD (W) auch kein Erfolg.
Hier fäll mir aber auf das im IEC Adresse erweitert wird mit 0. oder 1.

Was muss ich in Himmelsnam eintragen??
Dokumentation der Karte ist leider noch auf Medoc.
Karte ist in RUN und auch richtig verdrahtet, mit Loopkalibrator auf kanal 1


Var.jpg
Variabelen Tabelle mit Warnung

Pump.jpg
Programm Logik

Hardw.jpgHarware

Grüß Bram
Angehängte Grafiken

TIA Kopieren zwischen Standard DB und optimiertem DB

$
0
0
Hallo!

Ich hab hier ein mittelgroßes Problem:
Ich habe einen Standard (also nicht optimierten) DB in dem ein Array abgelegt ist.
Die Daten dieses DB möchte ich in einen optimierten DB kopieren.
In weiterer Folge soll das dann auch in die andere Richtung funktionieren.

Ich möchte einen SCL-FB schreiben, der diese Arbeit erledigt. Quell- und Ziel-DB sollen dabei als Außenbeschaltung (IN, INOUT, etc.) angegeben werden.
Hab dazu schon mit PEEK & POKE, MOVE_BLK und den Datentypen DB_ANY sowie VARIANT rumgespielt.

Zwischen zwei optimierten DBs klappt es wunderbar (PEEK & POKE)
Zwischen zwei Standard DBs klappt es wunderbar (MOVE_BLK)
Nur zwischen optimierten und Standard DB krieg ich es zum verrecken nicht hin.

Kann mir hier mal einer vielleicht einen guten Tipp geben?
Bin für jede Hilfe dankbar.

mfg mephisto

Step 7 Adressbereich Peripherie im Pointer bei indirekter Adressierung - fehlt da E und A

$
0
0
Hallo zusammen,

habe mal wieder eine Frage zum beliebten Thema "Pointer" ;) Hintergrund ist, dass ich gerne im OB35 / Weckalarm auf ein PROFINET I/O Gerät schreiben möchte, also sozusagen "ausser der Reihe" (das Prozessabbild wird ja nur bzw. nach dem OB1 aktualisiert (ausser bei einer S7-400er, da kann man anscheinend auch mit Teilprozessabbildern arbeiten und diese dann exklusiv einzelnen Weckalarmen zuweisen, aber ich habe hier nur eine S7 317)).

Also ... wenn ich den Weckalarm des OB35 auf 1ms stelle, und die allgemeine Zykluszeit des OB1 bei 10ms liegt, dann werden die folgenden Schreiboperationen ja nur bei der Aktualisierung des Prozessabbilds auf die Peripherie geschrieben (und auch nur die ersten 128 Bytes, ausser ich stelle das in der HW Konfig unter "Zyklus / Taktmerker - Größe des Prozessabbilds" um).

Code:




      L    EW  420
      L    1
      +I 
      T    AW  420

Was man dann auf dem PROFINET bzw. im PN I/O Device sieht, ist dann "10, 20, 30, ..." - weil ja nur bei jedem 10. Aufruf des OB35 auch der OB1 aufgerufen wird, und nur dann beim Aufruf des OB1 auch das Prozessabbild aktualisiert wird.

Wenn man im OB35 hingegen direkt auf die Peripherie schreibt:

Code:



      L    PEW  420
      L    1
      +I 
      T    PAW  420

Dann sieht das PN I/O Device auch alle Aktualisierungen, also "1,2,3,4,5,..."

Ich hätte es aber gerne etwas flexibler und ich möchte dann das Lesen und Schreiben von der Peripherie per "IN" Variable an meinem FB konfigurieren können. Bei "regulären" Eingängen und Ausgängen funktioniert es ganz klassisch (so wie PN-DP mir das mal erklärt hat):

Code:

      //pSrcPointer auf Eingangsbereich setzen:
      L    DW#16#81000000;      // ptr type output
      L    #InputOffset;              // konvertieren der Adresse aus INT Nummer (InputOffset ist eine IN Variable)
      SLD  3;                              // pointer starts with 3 bits
      OD;   
      T    #pSrcPointer;              // Adresse am Ausgang (pSrcPointer ist lokale/temp Variable)


      //pDestPointer auf Ausgabebereich setzen:
      L    DW#16#82000000;      // ptr type output
      L    #OutputOffset;            // konvertieren der Adresse aus INT Nummer (OutputOffset ist eine IN Variable)
      SLD  3;                              // pointer starts with 3 bits
      OD;   
      T    #pDestPointer;            // Adresse am Ausgang (pDestpointer ist lokale/temp Variable)





      LAR1  #pSrcPointer;
      L    W [AR1, P#0.0];
      L    1
      +I 
      LAR1  #pDestPointer;
      T    W [AR1, P#0.0];


Mir geht es jetzt um diese Zeile, also wo die Kennung des Datenbereichs `DW#16#81000000; // ptr type output` gesetzt wird, laut Step 7 Dokumentation ja so:


Hexadezimalcode Speicherbereich Beschreibung
b#16#81 E Speicherbereich der Eingänge
b#16#82 A Speicherbereich der Ausgänge
b#16#83 M Speicherbereich der Merker
b#16#84 DB Datenbaustein
b#16#85 DI Instanz-Datenbaustein
b#16#86 L Lokaldaten (L-Stack)
b#16#87 V Vorherige Lokaldaten

Also leider keine Kennung/Hexadezimalcode für die Peripherie. Was nun??


Ein Idee wäre es, am Anfang meine Eingangsdaten mit dem BLKMOV/SFC 20 zu holen, und am Ende meines FBs die Daten wieder per BLKMOV auf die Peripherie zu schreiben. Aber beim ANY POINTER für den BLKMOV gibt es nur zusätzlich den HexCode **b#16#80** für "Peripherie" - aber nicht für PA oder PE ...

Hat mir jemand eine Idee für mich?

Vielen Dank und viele Grüße, Jürgen

PUT GET Kommunikation überschreibt INOUT Variable

$
0
0
Hallo zusammen,

zur Koordination unserer Bestücklinie gibt es ein übergeordnetes Leitsystem welches auf C# und Snap7 arbeitet. Das Anlagennetzwerk besteht idR. aus mind. 15 SPS' welche alle beim Leitsystem nach der Richtung fragen.

Erster Ansatz/DB Aufbau:

DBX0.0 - Start
DBD2.0 - ErrorCode

1. CPU setzt Bit 0.0 auf true
2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf false

Problem - sporadisch: Die CPU überschreibt (mit false) den vom PC geschriebenen Wert (true) und wartet dadurch endlos (bis zum Timeout) auf Rückmeldung vom PC.

Die Variablen werden dabei als INOUT an die FBs gehängt.
Beim Aufruf des FBs werden die Werte in einen I-DB zwischengespeichert und anschließend über diesen wieder zurück geschrieben. Dadurch kann es passieren, dass ein Wert/eine Variable die während einem FB Aufruf (vom PC) geschrieben wurde, von der CPU wieder zurück überschrieben wird und diese/r somit verloren geht.

Zweiter Ansatz:

DBX0.0 - Done
DBD2.0 - ErrorCode
DBX6.0 - Start

1. CPU setzt Bit 6.0 auf true
2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf true
3. CPU setzt Bit 6.0 auf false
4. PC setzt Bit 0.0 auf false

Dadurch konnte dieses Problem vermieden werden.

Meine Frage, gibt es jdn. der einen ähnlichen Anwendungsfall hat und dieses Problem kennt oder anders gelöst hat?

Danke!

TwinCAT 3 Error

TwinCAT 3 - PlcTask wird nicht ausgeführt

$
0
0
Hallo zusammen,

Ich nutze eine CX9020-0115 Steuerung und auf dem PG TwinCAT v3.1.4.022.22
Nach "Activate Configuration" bzw. "Restart TwinCAT System" steht mein Programm, obwohl die SPS sagt sie läuft.
Daraufhin habe ich den PlcTask überprüft, welcher beim Anlegen der SPS in TwinCAT automatisch erstellt wurde, da ich den Task selbst nie angefasst habe, sollte auch die Referenz auf MAIN etc. alles passen.

Wenn ich auf den Reiter Online unter PlcTask gehe, wird kein Laufzeitdiagramm angezeigt.
Im nächsten Reiter erscheint folgendes Bild:

welche Infos kann man hieraus gewinnen und wo liegt mein Problem?

Grüße und vielen Dank für die Antworten
Angehängte Grafiken

TIA Inkonsistenz des Safety-Programms, CPU 1515F-2PN

$
0
0
Hallo zusammen,

ich hatte in den Foren unter diesem Thread etwas gefunden,was mir leider nicht geholfen hat und deshalb muss das Thema wieder aufschlagen.
Ich hab ein Problem mit der CPU 1515F-2PN.
Ich habe im Sicherheitsprogramm bzw. in F-Karten paar Änderungen vorgenommen und seitdem kann ich mein Programm nicht mehr einspielen.
Ich habe die HW- bzw. SW übersetzt bis auf paar Warnungen ist alles i.O.
Das Programm lässt sich aufgrund dieser Inkonsistenz nicht laden.
Durch den Support Kontakt auf Anhieb habe ich die CPU auf Werkseinstellungen zurückgesetzt und Uhr gelöscht und neue einspielen wollen ohne Erfolg.

Eine andere Vorgehensweise habe ich wie folgt probiert:
Ich hatte schon in der Safety Administration die F-Ablaufgruppe gelöscht und neu angelegt, somit konnte ich das Programm laden, allerdings sind die neu angelegten auch leer.
Dadurch werden neue Safety-DBs generiert was mich irritiert, da ich aus dem alten FOB alles in den neuen reinkopiert habe, aber nicht weiß was ich durch Neuanlegen der FOB behalte und was löschen soll?

Vielen Dank vorab für hilfreiche Tipps
Gruß

Safety-Administration.JPGSafety-Inkonsistenz.JPG
Angehängte Grafiken

TIA Tcon req

$
0
0
Hallo zusammen,

ich versuche zum ersten mal einen Verbindungsaufbau mit TCP mittels des vorgefertigten TCON Baustein zu realisieren.
Ich nutze das TIA Portal V14 und eine S7-1200.

Ich habe bereits viel in dem Foren gefunden, jedoch scheitere ich schon am Aktivieren des Bausteins.
Denn der Baustein wird nie mit meinem REQ aktiviert. Er zeigt immer den Status Code 7000 an, was bedeutet, dass er keine Flanke per REQ erhaelt.
Leider Weiss ich nicht, wie ich das anders realisieren kann.

Ich habe bereits zwei Wege versucht, ein mal mit KOP, wie im nachfolgenden Bild dargestellt:

Capture1.JPG
Ein weiteres mal habe ich versucht das Ganze mit SCL zu realisieren:
Capture3.JPG
Den Baustein TCON habe ich jedes mal als Multiinstanz eingefuegt und mit folgenden Parametern versehen:
ConfigTCON.JPG

Ich bin sehr dankbar ueber jegliche Antwort und Hinweis, welcher mir weiter helfen kann.

Viele Gruesse
Ludwig
Angehängte Grafiken
Viewing all 49919 articles
Browse latest View live


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