PIANIFICAZIONE DELLA PRODUZIONE CON ACCESS E PROJECT 2007 In questo articolo esamineremo come una applicazione Access ed una applicazione Project 2007 possono interagire per creare un piano di produzione rappresentato graficamente con un diagramma di Gantt interattivo che tiene conto del carico di lavoro di ogni singola macchina (risorsa). L applicazione può avere molteplici sviluppi in aziende di qualsiasi dimensione che hanno la necessità di gestire una mole di dati considerevole e che possono trovare eccessivamente complesso aggiornare i piani di lavoro. Come vedremo più avanti sarà possibile migliorare le funzioni dell applicazione modificando il codice VBA. 1. Perché fare un piano di produzione Ogni azienda ha la necessità di comunicare con ampio anticipo al cliente la data di prevista consegna dei propri prodotti e poi ha la responsabilità di rispettare la data fissata. Un azienda produttiva con molti ordini aperti e con cicli di lavoro che prevedono fasi che utilizzano molte macchine/risorse (alcune anche esterne all azienda) difficilmente è in grado di determinare la data prevista di termine dei lavori senza utilizzare strumenti adeguati: il tempo necessario per fare manualmente le simulazioni risulterebbe eccessivo. Un piano di produzione è costituito dall elenco delle attività da svolgere per produrre gli articoli e deve tenere conto di: tempi necessari per produrre disponibilità delle macchine/risorse. Facciamo un esempio: l azienda deve realizzare: TEMPO X PRODURRE ARTICOLO QUANTITÀ LAVORAZIONE MACCHINA 1 PEZZO Taglio Seghetto 30 minuti A 10 Tornitura Tornio 20 minuti B 100 Taglio Seghetto 1 minuto Tornitura Tornio 5 minuti Se l azienda vuole consegnare prima l articolo A può sviluppare il piano di produzione in questo modo: IMMAGINE 1 Come si vede in immagine 1 l azienda inizia a Tagliare l articolo A e solo quando avrà finito e quindi liberato il seghetto, potrà iniziare a tagliare il B. Il grafico indica le ore di inizio e di fine del lavoro: la tornitura dell articolo B terminerà (se non ci sono problemi) venerdì 1 settembre alle ore 9.00 e solo dopo sarà consegnabile.
Nel grafico si vedono delle colonne grigie che rappresentano periodi non lavorativi definiti dall utente (Calendario). Le frecce che collegano le barre del diagramma indicano che una lavorazione succede ad un altra (Predecessore). L esempio sopra esposto è molto semplice; nessuno utilizzerebbe del software se avesse solo 2 articoli e 2 ordini. Ma come sarebbe possibile parlare di pianificazione se la situazione fosse la seguente? IMMAGINE 1.1 Per rendere chiari i concetti negli esempi che seguono adotteremo le seguenti semplificazioni rispetto ad un vero modello aziendale: che tutte le lavorazioni aziendali siano svolte in azienda con risorse interne, che ogni articolo sia lavorato singolarmente in modo tale che il tempo standard di produzione sia per un pezzo non sono previsti tempi di setup macchine o di movimentazione tutte le risorse hanno lo stesso calendario di utilizzo.
2. Creiamo il database con i dati degli articoli Con Access realizziamo un database che abbia le seguenti funzioni: archivio articoli archivio cicli di lavorazione archivio risorse archivio clienti archivio ordini clienti lancio di produzione INSERIMENTO ARTICOLI Con la maschera in immagine 2 carichiamo e gestiamo gli articoli ed i relativi cicli di lavoro. Per ogni articolo sono fondamentali i campi: IMMAGINE 2 CODICE DESCRIZIONE LAVORAZIONE MACCHINA SEC. LAV. CAMPI EVENTUALI NOTE Deve essere univoco (la tabella di Access non accetterebbe 2 codici uguali) Descrivere l articolo da produrre Deve essere inserita la descrizione breve del lavoro da fare. Se la lavorazione non è presente nella tabella ARTICOLI_LAVORAZIONI si apre una maschera che chiede se inserirla. Una volta inserita sarà disponibile per altri usi Deve essere inserita la descrizione breve della Macchina/Risorsa da fare. Se la Macchina/Risorsa non è presente nella tabella ARTICOLI_MACCHINE_01 si apre una maschera (vedi immagine 3) che chiede se inserirla. Una volta inserita sarà disponibile per altri usi Indicare in secondi il tempo necessario per lavorare 1 pezzo. Se si inserisce il tempi in minuti il sistemo lo converte.
INSERIMENTO MACCHINE/RISORSE Nell archivio Macchine dell immagine 3 dobbiamo inserire tutte le risorse che possono essere utilizzate per lavorare. Ciò che noi abbiamo chiamato macchina può essere considerato genericamente una risorsa (Macchina, Attrezzatura, Reparto, Centro, ecc ) IMMAGINE 3 Per ogni macchina sono fondamentali i campi: CODICE SCHEDULA CAMPI EVENTUALI NOTE deve essere univoco e descrivere sinteticamente la risorsa Se il campo è spuntato la risorsa sarà considerata nella preparazione dei dati del diagramma di Gantt. Se nella maschera di immagine 6 è spuntata la casella Prima Macchina, il piano considererà solo le macchine dove SCHEDULA è spuntata. INSERIMENTO ORDINI DEL CLIENTE All arrivo di un ordine del cliente questo sarà inserito con la maschera in immagine 4. IMMAGINE 4 Per ogni ordine si utilizzano i seguenti campi: CAMPI EVENTUALI NOTE KEY Numero progressivo dato dal sistema CLIENTE Cliente che ha fatto l ordine: se non è inserito il sistema chiederà se memorizzarlo CODICE Selezionare un articolo già codificato: se così non è il sistema chiede se si vuole inserirlo QUANTITÀ Quantità di articoli ordinati dal cliente CHIUSO Spuntare il campo se tutti i lavori sono terminati SCADENZA Data di consegna richiesta dal cliente N ORDINE Numero assegnato dal cliente all ordine DATA ORDINE Data del documento inviato dal cliente LANCIATO Si spunta automaticamente lanciando l ordine in produzione
Nella maschera degli ordini ci sono due pulsanti: 4.1 4.2 Con il pulsante 4.1 si possono vedere i dati del prodotto lanciato in produzione Con il pulsante 4.2 si possono effettuare i lanci di produzione LANCIO DEGLI ORDINI DEL CLIENTE Effettuare un lancio di produzione significa aver deciso che un determinato ordine dovrà essere prodotto e quindi il sistema leggerà le righe del ciclo di lavoro, calcolerà i tempi necessari per produrre gli articoli e creerà nella tabella ORDINI_ESPLOSI le righe delle lavorazioni da eseguire. Il tutto è fatto cliccando sul pulsante 4.2 e tramite la maschera in immagine 5. IMMAGINE 5 Sempre per semplicità in questo esempio è ammesso un unico lancio (in realtà l azienda potrebbe voler produrre la stessa quantità con più lanci) per tutta la quantità in ordine. Una volta lanciato, cliccando il pulsante 4.1, si apre la maschera in immagine 5.1 che visualizzerà le righe create dal sistema. IMMAGINE 5.1 In questa maschera dovranno via via essere tenuti aggiornati i campi Qt. Prodotto (Quantità realizzata effettivamente) e Fatto (si spunta se il lavoro è completato).
PREPARAZIONE DEI DATI PER SCHEDULAZIONE GRAFICA A questo punto abbiamo creato una tabella che contiene tutte le lavorazioni che l azienda deve effettuare ed abbiamo l indicazione di quale risorsa utilizzare e quanto tempo è necessario. Ora dobbiamo preparare i dati in modo che Project possa leggerli e rappresentarli graficamente su una scala temporale: per aprire la maschera in immagine 6 è sufficiente fare clic su Schedulazione. A questo punto, cliccando su Calcola, si avvia la procedura di creazione della tabella che sarà successivamente utilizzata in Project. IMMAGINE 6 Verrà creata la tabella visibile in immagine 6.1 I campi che meritano un commento sono: IMMAGINE 6.1 CAMPI PREDECESSORE TEMPO CALCOLATO EVENTUALI NOTE Se compilato vuol dire che la lavorazione segue quella indicata dal numero riportato (ID_Riga) Tempo in ore calcolato dal sistema: non può essere inferiore di quanto indicato in immagine 6 nel campo FRAZ. HH MIN. Ora non resta che avviare Project che leggerà la tabella per fare il grafico. Vediamo di seguito come automatizzare le operazioni.
3. Visualizzazione grafica del piano di produzione Apriamo con Project 2007 il file SCHEDULAZIONE_GRAFICA_DEMO. Sarà innanzitutto necessario creare una BARRA DEGLI STRUMENTI (vedi immagine 7.1) per lanciare almeno le due macro inserite nell esempio: Caricamento e Caricamento_Risorse (si rimanda per questo alla guida di Project). In alternativa, vedremo al momento del caricamento come lanciare le macro dalla barra degli strumenti Visual Basic. IMMAGINE 7 IMMAGINE 7.1 Dopo aver aperto il file selezioniamo tutte le righe eventualmente presenti e cancelliamole come visibile in immagine 7. Selezioniamo poi la visualizzazione Elenco Risorse (immagine 8). IMMAGINE 8 Selezioniamo ed eliminiamo tutte le risorse esistenti (immagine 9). IMMAGINE 9 Ritorniamo nella visualizzazione Diagramma di Gantt.
Per continuare è ora necessario un passaggio critico. Dalla BARRA DEGLI STRUMENTI Visual Basic selezionare una sicurezza media. ATTENZIONE: diminuire il livello di protezione è potenzialmente pericoloso in quanto alcuni programmi potrebbero contenere Macro / Routine dannose. IMMAGINE 9.1 Per utilizzare questo programma è necessario impostare le protezioni su Medium per non ottenere il messaggio visibile in immagine 9.2 e quindi bloccarne il funzionamento. IMMAGINE 9.2 Si consiglia di ripristinare la protezione sul livello originale al termine dell utilizzo del programma e comunque prima di utilizzare software di cui non si è certi della sicurezza. È necessario salvare, chiudere e riaprire il file per rendere effettive le modifiche. Alla riapertura del file un messaggio avvisa che il documento contiene macro. È necessario abilitare le macro per poter eseguire l importazione dei dati da Access. A questo punto fare clic su VISUAL BASIC EDITOR (Immagine 10) per vedere le Macro in VBA (Immagine 10.1) Aprire con doppio clic i moduli CARICA_RISORSE e successivamente CARICAMENTO e sostituire il percorso evidenziato in blu in immagine 10.1 con quello corretto per il vostro PC. Si tratta del percorso in cui risiede il database di Access. IMMAGINE 10 IMMAGINE 10.1
Chiudiamo l editor VBA e ritorniamo alla visualizzazione del diagramma di Gantt. Project è ora pronto a funzionare. Ora è possibile: IMMAGINE 11 Importare le Macchine/Risorse utilizzando il pulsante creato nella barra degli strumenti (le macchine elencate in Access saranno copiate in Project). Se non avete creato il pulsante potete semplicemente aprire la finestra Macro (pulsante Visualizza macro nella barra degli strumenti Visual Basic), selezionare la macro Carica_Risorse e fare clic su Run (Esegui). Importare le righe di lavoro elaborate precedentemente in Access. Come sopra, la macro da eseguire è Caricamento. Livellare le risorse (si consiglia di leggere la guida di Project 2007 per conoscere le varie modalità) NOTA: In questo esempio semplificato è possibile inserire le risorse una sola volta: se il tasto è cliccato più volte le risorse saranno duplicate rendendo confuso il lavoro. Qualunque sia la complessità del vostro piano Project lo rappresenterà graficamente assegnando ad ogni risorsa i propri carichi quando necessario ed opportuno: ed ecco calcolate le date di termine lavoro: IMMAGINE 12 Segnaliamo la possibilità offerta da Project 2007 di assegnare ad ogni risorsa un proprio calendario di utilizzo (si veda la guida di Project): per esempio è possibile creare un calendario standard che prevede che l azienda sia aperta dal lunedì al venerdì dalle 8:00 alle 17:00 ed inoltre associare ad una risorsa un suo calendario che prevede che tutti i venerdì dalle 14:00 alle 17:00 sia ferma per manutenzione. Project terrà conto di questo per calcolare la data di fine lavoro.
4. Possibili sviluppi del software Come abbiamo potuto vedere Project 2007, opportunamente automatizzato, rende disponibile un sofisticatissimo sistema di schedulazione a capacità finita che può essere utilizzato nella pianificazione di qualsiasi attività. Abbiamo visto come interfacciare Project con Access, ma nei casi più complessi, il database potrebbe essere SQL Server. Nel software d esempio proposto le macro in Visual Basic sono state semplificate al massimo e le loro funzionalità sono alquanto limitate. È possibile e molto utile, inserire altre nuove funzioni (è necessaria una buona conoscenza di VBA), per esempio: Accodamento di nuove righe di lavorazione senza cancellare le precedenti Riscrivere in Access eventuali modifiche apportate sui dati da Project (anche grazie al drag and drop sul grafico) o le date di fine lavoro calcolate Accodare in automatico nuove risorse Assegnare i carichi a risorse alternative se quelle standard sono impegnate oltre una certa misura Collegare al sistema un sistema contapezzi per aggiornare in automatico lo stato di avanzamento Realizzato da Massimo Bolla ISI s.r.l.