Diversamente dagli impianti di piccole dimensioni in quelli più grossi vanno presi alcuni accorgimenti, affinché tutto vada per il meglio.

Supponiamo di avere un impianto relativamente grande costituito da parecchie unità di attuatori.
Ovviamente essi devono poter essere richiamati simultaneamente senza aumentare eccessivamente il tempo di ciclo e senza creare intoppi o rallentamenti di vario tipo.

Questo perché ad ogni richiamo il PLC dedicherà un lasso di tempo in nano secondi per ciascun attuatore, per tanto se dovessero essere parecchi le tempistiche potrebbero aumentare generando ritardi all’esecuzione.
Rallentando il tempo di ciclo totale dell’esecuzione dell’OB1 Main.


Questo aspetto si può risolvere con una strategia mirata a contenere la pesantezza logica che si genera durante il richiamo di quantità consistenti di attuatori.

Come abbiamo già visto nei tutorials precedenti, va creata una funzione per ciascun motore.
Solitamente se il funzionamento è il medesino, basta creare una FB contenente tutta la logica di funzionamento e replicarla “n” volte fino al raggiungimento del numero totale dei motori, in questo caso 100.

Questi 100 FB a verranno contenuti all’interno di un FC, che a sua volta sarà richiamato nell’OB1.

Fin qui niente di nuovo.

A questo punto possiamo cominciare a mettere appunto la nostra strategia.

Essa consiste nel richiamare un numero definito di motori per ciascun ciclo.

Ad esempio, dal motore 1 al motore 10 in ciclo.
Dal 11 al 20 al ciclo successivo e così via.

Naturalmente tutto ciò si può fare con tutti i linguaggi di programmazione affrontati finora.
Tuttavia nella fattispecie è quello più congeniale e sbrigativo.

Vediamo come:

All’interno dell’ FC definiamo una variabile di tipo “Intero” denominata “Motor Index”.   

Successivamente con un blocchetto “Addizione” facciamo una piccola funzione per incrementarla ad ogni ciclo.
Con un blocchetto “Comparazione e con un Move” facciamo in modo di resettare Motor Index ogni volta che arriva a 100.

Riguardo il segmento in SCL usiamo la funzione “Case” assegnandogli Motor index ed a ciascun numero dell’indice i vari DB dei motori.
Quindi quando esso varrà 1, richiamerà motore 1; 2 motore 2 e così via fino a 100.

In questo modo non influenzeremo minimamente il tempo di ciclo della Cpu, facendo in modo che tutto proceda in maniera ottimale.

Al prossimo tutorial.

Condividi ora questa guida con i tuoi contatti: