Vai al contenuto
PLC Forum


Richiamo Blocchi Funzionali/blocchi Dati - Discussioni unite


orka

Messaggi consigliati

Ciao..anche io come molti preparo la tesina su step7 5.2...

devo realizzare quattro semplici progettini quattro di avvio-spegnimento motore e una

macchina a stati...

Io conosco un pochino microwin... ma purtroppo molte procedure si svolgono in maniera completamente diversa...come tra le più semplici il richiamo di blocchi (CALL_FB..)

La guida è caotica in merito, bisognerebbe avere il manuale di programmazione...che non ho...comunque

Se a qualcuno andasse di rispondere...

1- Prog START_STOP: MICROWIN

codice sorgente + subroutine dove sono assegnati i contatti fisici a delle aree

di memoria (allarmefisico(neg) I0.0----> allarme M0.0)

nel codice sorgente la subroutine viene richiamata da uno special merker che

abilita un blocco di richiamo....(tra l'altro il blocco di richiamo è bellamente

visibile nella finestra strumenti sulla sinistra)

STEP7 Pro

guida dicet: senali EN/ENO abilitano blocco di richiamo

i segnali EN/ENO sono dichiarati tramite il Bit di stato BIE che quindi deve

subire le operazioni SAVE,SPBB..bah..già qui siamo in alto mare

Il mio problema è ben più grave di come si richiama un blocco...eh già...si perchè a questo punto mi devo chiedere:

Al posto della subroutine in microwin utilizzo FB+DB per assegnare i contatti ai rispettivi merker???

Link al commento
Condividi su altri siti


Ciao non ho capito niente...scusa sono fuso......

hai realizzato un programma che so.... allarmi FC10 pilotaggio uscite FC20

nell'OB1 scriverai

UC FC10

UC FC20

UC sta per unconditioned call ovverio richiamo del blocco incondizionatamente

se invece esistono due blocchi che NON devono funzionare assieme...che so... automatico e manuale

scriverai :

U m1.0 Call FC10

in presenza del merker 1.0 ( che magari deriva da alcune condizioni logiche ) chiama il blocco FC 10

se invece all'interno di un segmento devi chiamare un FB , magari un blocco di parametrizzazione, scrivi :

CALL FB8 , DB40 dove il bloco dati DB 40 è un blocco dati di istanza relativo al FB8

scusa, ho centrato il problema o no ?

Link al commento
Condividi su altri siti

apriti un OB1 di un programma a caso

scrivici UC FC10

metti il cursore sulla scritta uc e premi F1

dovrebbe apparirti l'. in linea CALL richiamo blocco ...descrizione dell'operazione..ecc ecc.

Link al commento
Condividi su altri siti

Bene...

il problema richiamo blocchi è risolto in pratica...qualche dubbio...però...

il mio problema non è tecnico ma concettuale:

in microwin dichiaravo i contatti in una subroutine (IPI) che richiamavo in OB1 con un caz di specialmerker che in step7 non esiste...indi per cui... io ho 4 IN (allarme,start,stop,ripristino allarme)....questi ingressi li voglio assegnare a dei merker (memoria) nella loro vera forma, alcuni sono NC e altri NA...MA DOVE!!??? Ripeto in microwin usavo la subroutine...in step7??? Cosa uso ?

FB ritorna ENO, giusto?? che è 1 o 0...non va bene...

DB non credo di aver capito bene come funziona visto che è una tabella dove dichiaro indirizzi e tipo di dati...niente istruzioni...DB sembrerebbe il più adatto, ma come si usa???

Prima avevo:

Subroutine_0 (IPI)

allarme (NC):

AllarmeFIS Allarme

----|/|--------------( )

AllarmeFIS E0.1

Allarme M0.1

start (NA):

StartFIS Start

-----| |--------------( )

StartFIS E0.2

Start M0.2

etc.....

OB1 (main)

%iniziava così:

_ _ ___

SM1.0 | IPI |

-----| |---------| |

| EN |

|______|

SM1.0 special merker ..("semprevero...lo chiamavamo!)

Bah!!!

Grazie comunque...per la disponibility

Link al commento
Condividi su altri siti

in microwin dichiaravo i contatti in una subroutine (IPI) che richiamavo in OB1 con un caz di specialmerker che in step7 non esiste...indi per cui... io ho 4 IN (allarme,start,stop,ripristino allarme)....questi ingressi li voglio assegnare a dei merker (memoria) nella loro vera forma, alcuni sono NC e altri NA...MA DOVE!!??? Ripeto in microwin usavo la subroutine...in step7??? Cosa uso ?

FB ritorna ENO, giusto?? che è 1 o 0...non va bene...

scusami...ma capisco poco

cosa vuole dire voglio assegnare a dei merker questi ingressi nella loro vera forma ?

lo schema a contatti che hai fatto tu è corretto, il principio è quello

non capisco FB ritonra ENO....DB........ ????????

vuoi associare il tuo ingresso ad un merker ?

o ad una area di memoria depositata in una DB ?

Link al commento
Condividi su altri siti

il principio è che voglio dichiarare i contatti già come NA o NC e il loro valore attuale lo salvo in dei merker...LI SALVAVO nei merker con una routine di microwin...ok? così in OB1 l'allarme era già NA lo start Nc...etc (usando i merker nelle istruzioni)

Ora....che invece mi stanno facendo familiarizzare con step7 (familiarizzare tra virgolette visto la mia ignoranza a riguardo...comunque) cosa uso ???

Non mi piace (e non vogliono neanche i profe) dichiarare all'inizio dell'OB 1 gli IN in gioco... dove lo faccio???

Chiedo:

FB ritorna solo ENO? abilitazione dell'uscita del blocco FB??? Quindi o 1 o 0???Non lo so chiedo...in tal caso non va bene, giusto??

DB...cos'è??I valori attribuiti ai dati sono definiti da me o possono venire da un ingresso...se potessero venire da un IN potrei usarli per il mio scopo???

Spero di essere stata un po' più chiara ora...scusa ma non è facile fare domande su qualcosa che si conosce poco...

Grazie ancora

Link al commento
Condividi su altri siti

orka........ non riesco granchè a capirti......sarà il caldo :(

il principio è che voglio dichiarare i contatti già come NA o NC e il loro valore attuale lo salvo in dei merker...

dichiarare un contatto come na o nc..ma lo stato iniziale, poi logicamente il contatto cambia

Perchè devi dichiarare al'inizio dell'OB1 gli in in gioco ?

Cosa è un DB ? è un blocco dati, ovvero un blocco dove dichiaro il tipo di dato, un commento, un formato del dato ed eventualmente un valore iniziale

se il tipo di dati è un BIT , allora ogni "riga" del blocco dati potrà memorizzare uno stato 0 o 1

se il tipo di dati è una word, potrei meemorizzare un valore , ad esempio, di conteggio, fino a 65000 e rotti, dato che la word contiene 16 bit e quindi 2 alla sedicesima

calcola che chi ti sta rispondendo ha imparato lo step 7 a calci e pugni..non sono un genio......

Link al commento
Condividi su altri siti

Cercherò di essere più chiara possibile ragazzi: <_<

devo richiamare un FB1 in OB1 [in KOP...NON AWL...NON FUP!!!(La guida sperpera parole per questi due linguaggi ma i miei poveri contatti nessuno se li CAG...)]

....niente di più semplice...non sono capace...niente di più semplice... :huh:

ci sono quei due EN e ENO che mi disturbano un pochino...

in OB1 .... richiamo blocco

in OB1 come abilito EN??

in OB1 dove salvo ENO (mi dice se si sono verificati errori nel blocco funz richiamato, giusto? :blink: )??

E cosa me ne faccio di ENO??

e una volta dentro FB1....

voglio solo dichiarare:

allarmeFISICO allarme

-----------|/|--------------( )

startFISICO start

-----------| |--------------( )

stopFISICO stop

-----------|/|--------------( )

ripristinoFISICO ripristino allarme

------------| |-------------( )

E0.X M0.X

ingressi/contatti reali merker/memoria

!?

Devo usare ---(SAVE) per uscire dal blocco...ma come? --------| |--------(SAVE)

Queste variabili...bene... :blink: .....bene....

E0.0-E0.3 e M0.0-M0.3 ma anche EN...(eh eh...visto che è in ingresso ad FB1)

dove le descrivo... ????

-fanno parte del DB1 di istanza del blocco FB1???(approposito come diavolo si scrive qualcosa nel blocco dati di istanza???sti valori formali che cazz sono?)...mi dice sempre nell'aprire DB1 che:"l'attributo di sistema adeguato non è stato impostato o manca..."

-sono (IN , OUT , IN_OUT , TEMP) di FB1????

Link al commento
Condividi su altri siti

Gianmario Pedrani

Sinceramente non ho capito niente di quello che hai scritto.... :) comunque se vuoi richiamare un fb in un db in kop è molto semplice apri il tuo ob1 e alla tua sinistra troverai un albero dove ci sono tutte le farie funzioni, li trovi anche la funzione che richiama i vari blocchi...

Per scrivere dei valori in una db devi mettere il blocco move e in un punto ci metti il lavore ed nell'altro ci metti es dbxx.dbyy dove [xx] sta a sifhificare il numero del blocco mentre [yy] la word o byte o dword che devi strivere

es voglio scrivere 10 in una db 50 nella word 20

------ | move |

20 valore che voglio trasferire

db50.dbw20 word dove andra inserito il valore trasferito.

ciaooooooooo

Link al commento
Condividi su altri siti

Come gli altri anch'io ho capito molto poco della tua richiesta.

Da quel poco che ho capito però mi sembra che tu non abbia bisogno di richiamare un FB, ma un FC.

All'interno dell'FC programmi le tue istruzioni e in OB1 (o da dove ti fa più comodo) richiami l'FC

Ora prova a scrivere in OB1 questi 4 segmenti di esempio, visualizza poi in KOP e vedi se siamo riusciti a fare un pò di luce.

Segmento 1
      U     M      0.0
      CC    FC     1

Segmento 2
      UC    FC     1

Segmento 3
      CALL  FC     1
      NOP   0

Segmento 4
      U     M      0.0
      SPBNB _001
      CALL  FC     1
_001: NOP   0

I manuali comunque non mi sembrano tanto male, forse bisognerebbe solo avere la volontà e la pazienza di leggerli.

Link al commento
Condividi su altri siti

Grazie ragazzi risolto...scusate se non riesco bene a spiegarmi e che essendo una novella mi è poco chiaro anche il significato di alcune cose!!

Avevo bisogno di un merker che fosse sempre vero---> in OB100 SET

=M0.0

Avevo bisogno di una funzione , mi ostinavo con FB----> ho usato FC

poi...poi...

beh basta...tutto ok...programma eseguito

Ciao ciao

e grazie ancora...per la pazienza soprattutto!

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...