Acasă > forum > Programare IEC 61131 (LogicLab) > Exemplu de manipulare a cartului în limba SFC
- Acest subiect are 5 răspunsuri, 2 participanți și a fost actualizat ultima dată 10 ani, acum 4 luni da Sergio Bertana.
-
AutorPost
-
Septembrie 13, 2013 la 8: 56 am #35412Stefanoparticipant
Încerc să mă familiarizez cu LogicLab și cu limbajul SFC, dar nu sunt încă clar despre unele aspecte ale interfeței cu utilizatorul (cum ar fi blocurile de poziționare, acțiunile de conectare etc.). Caut exemple de clarificat, dar nu găsesc proiecte puțin articulate pentru LogicLab cu componente SFC. Un exemplu util ar fi ceva de genul mutării unui cărucior cu două poziții (FcA și FcB) și a unei taste de pornire. Cu o secvență de genul:
- Start.
- Confirmați butonul de pornire.
- Dacă (NOT FcA) și (NOT FcB): Alergați înainte până când FcA este activat -> Butonul Start Start Waiting.
Dacă FcB: Rulați înainte până când FcA este activat -> Salt În așteptare butonul Start
Dacă FcA: Reverse până la activarea FcB -> Buton Start Start WaitingPS: Știu că al doilea caz descris ar trebui inserat în cazul 1 pentru optimizare. Am împărțit-o pentru a avea de exemplu încă o tranzacție.
Septembrie 14, 2013 la 6: 24 am #37773Sergio BertanaAdministrator al forumuluiNu sunt un programator SFC expert, atunci când am programe secvențiale de creat prefer să folosesc limbajul ST, instrucțiunea CASE OF vă permite să le gestionați într-un mod foarte ordonat. Dar încerc să răspund la cererea dvs. făcând un program SFC simplu care servește scopului (Programul de imprimare, Descărcare sursă).
- În pasul Init, efectuez reducerea la zero a ieșirilor de comandă cu două direcții.
- În următoarea tranzacție aștept activarea butonului de pornire.
- Înainte de a deschide o tranziție, trebuie să introduc cu forță un pas, pasul Dummy și doar un material de umplutură.
- Deschid o tranziție divergentă, efectuând două tranzacții de control asupra stării limitelor. Dacă nu este activ nici un comutator de limită, ramura cea mai stângă prevalează, prin urmare axa directă este activă (conform cererii dvs.).
- Execut cele două etape înainte și înapoi în care este activată ieșirea relativă a comenzii.
- Când comutatorul de limită este activat, acesta sare la pasul Init care resetează ieșirile de comandă.Septembrie 16, 2013 la 8: 42 am #37775StefanoparticipantBine, aș spune că este destul de clar.
Mulțumesc mult!Septembrie 17, 2013 la 1: 11 pm #37778Sergio BertanaAdministrator al forumuluiCu un moment de timp liber, am continuat să extind proiectul de deplasare a căruciorului și / sau a axei prin adăugarea manevrabilității automate, așa cum se poate vedea din captură de ecran a programului SFC.
În modul manual, este de așteptat ca comanda de pornire să se deplaseze înainte sau înapoi, mișcarea continuă până la atingerea comutatorului de limită relativ.
În modul automat, mișcarea înainte este efectuată pe comanda de pornire, se așteaptă un timp de pauză la atingerea limitatorului, apoi se efectuează mișcarea înapoi. După atingerea comutatorului de limită, se efectuează o pauză și apoi ciclul începe din nou cu mișcarea înainte. Pentru a întrerupe ciclul automat este necesar să treceți la manual.
De asemenea, am pregătit o intrare de simulare% IX0.2, cu intrarea activă întrerupătoarele de limită sunt simulate după un timp de la începutul mișcării, în acest fel este posibil să testați operațiunea într-un mod mult mai ușor, nefiind nevoie să gestionați comutator de limitare.
Diferitele acțiuni și tranziții sunt gestionate cu programe atât în limbaj LD scară, cât și text structurat ST, aceasta pentru a demonstra cum un singur program SFC poate conține părți scrise în celelalte 4 limbi ale standardului IEC61131, atașez apăsați programul e sursă.
Decembrie 2, 2013 la 9: 34 am #37913StefanoparticipantAm câteva întrebări cu privire la acest exemplu.
Una se referă la LogicLab:
Mergând la meniul de depanare -> Modul de sinulare apare eroarea „definiția simulatorului (TGSX) nu a fost găsită”. Lipsesc fișiere în LogicLab?Cealaltă se referă la proiectul eșantion.
Dacă doriți să adăugați două alarme, una care intervine dacă vagonul durează mai mult de X timp pentru a ajunge la comutatorul de limită, iar cealaltă care intervine la închiderea unui contact (care poate fi butonul de urgență sau un contact de protecție termică) , care ar fi cel mai corect mod de a le gestiona?Decembrie 2, 2013 la 9: 54 am #37914Sergio BertanaAdministrator al forumuluiSimulatorul intern al LogicLab nu este implementat în versiunea curentă, va fi disponibil de la următoarea versiune care va fi lansată. În prezent oferim un simulator extern, trebuie să selectați ținta simulatorului pentru al utiliza (Subiect).
Am convertit programul dvs. pentru a fi utilizat cu simulatorul și am adăugat gestionarea alarmei de alimentare a axelor (Descărcați programul sursă). Aici este screenshot din programul dvs. de simulare.
-
AutorPost
- Trebuie să fiți autentificat pentru a răspunde la acest subiect.