SIMATIC S7ProSim Manuale 01/2001 2809927-0001 Avvertenze tecniche di sicurezza Il presente manuale contiene avvertenze tecniche relative alla sicurezza delle persone e alla prevenzione dei danni mate riali che vanno assolutamente osservate. Le avvertenze sono contrassegnate da un triangolo e, a seconda del grado di pericolo, rappresentate nel modo seguente: ! ! ! Pericolo di morte significa che la non osservanza delle relative misure di sicurezza provoca la morte, gravi lesioni alle persone e ingenti danni materiali. Pericolo significa che la non osservanza delle relative misure di sicurezza può causare la morte, gravi lesioni alle persone e ingenti danni materiali. Attenzione significa che la non osservanza delle relative misure di sicurezza può causare leggere lesioni alle persone o lievi danni materiali. Avvertenza è una informazione importante sul prodotto, sull'uso dello stesso o su quelle parti della documentazione su cui si deve prestare una particolare attenzione. Personale qualificato La messa in servizio ed il funzionamento del dispositivo devono essere effettuati solo in base alla descrizione del manuale. Interventi nel dispositivo vanno effettuati esclusivamente da personale qualificato. Per personale qualificato ai sensi delle avvertenze di sicurezza contenute nella presente documentazione si intende chi dispone della qualifica a inserire, mettere a terra e contrassegnare, secondo gli standard della tecnica di sicurezza, apparecchi, sistemi e circuiti elettrici. Uso conforme alle disposizioni Osservare quanto segue: ! Pericolo Il dispositivo deve essere impiegato solo per l'uso previsto nel catalogo e nella descrizione tecnica e solo in connessione con apparecchiature e componenti esterni omologati dalla Siemens. Per garantire un funzionamento ineccepibile e sicuro del prodotto è assolutamente necessario un trasporto, immagazzina mento, una installazione ed un montaggio conforme alle regole nonché un uso accurato ed una manutenzione appropriata. Marchi di prodotto SIMATIC, SIMATIC HMI e SIMATIC NET sono marchi rtegistrati della SIEMENS AG. Tutte le altre sigle qui riportate possono corrispondere a marchi il cui uso, da parte di terzi, può violare i diritti di proprietà. Copyright Siemens AG 2000 All rights reserved. La duplicazione e la cessione della presente documentazione sono vietate, come pure l’uso improprio del suo contenuto, se non dietro autorizzazione scritta. Le trasgressioni sono passibili di risarcimento dei danni. Tutti i diritti sono riservati, in particolare quelli relativi ai brevetti e ai marchi registrati. Siemens AG Bereich Automatisierungs- und Antriebstechnik Geschaeftsbereich Industrie-Automatisierungssysteme Postfach 4848, D-90327 Nuernberg Siemens Aktiengesellschaft Esclusione della responsabilità Abbiamo controllato che il contenuto della presente documentazione corrisponda all’hardware e al software descritti. Non potendo tuttavia escludere eventuali divergenze, non garantiamo una concordanza totale. Il contenuto della presente documentazione viene comunque verificato regolarmente e le correzioni o modifiche eventualmente necessarie sono contenute nelle edizioni successive. Saremmo lieti di ricevere qualsiasi proposta di miglioramento. Siemens AG 2000 Ci riserviamo eventuali modifiche Contenuto Sommario.............................................................................................................1 Progetto di esempio............................................................................................3 Inserire il controllo S7ProSim in un'applicazione Visual Basic ......................5 Accedere alle proprietà del controllo S7ProSim in Visual Basic ....................6 Proprietà AutoConnect .......................................................................................7 Proprietà ControlEngine.....................................................................................8 Proprietà Enabled ...............................................................................................9 Proprietà ScanMode .........................................................................................10 Metodo AboutBox .............................................................................................11 Metodo BeginScanNotify..................................................................................12 Metodo EndScanNotify .....................................................................................13 Metodo Connect ................................................................................................14 Metodo Disconnect ...........................................................................................15 Metodo ExecuteNmsScan ................................................................................16 Metodo ExecuteNScans ...................................................................................17 Metodo ExecuteSingleScan .............................................................................18 Metodo ReadOutputImage................................................................................19 Metodo ReadOutputPoint .................................................................................20 Metodo WriteInputImage ..................................................................................21 Metodo WriteInputPoint....................................................................................22 Evento ConnectionError...................................................................................22 Evento PLCSIMStateChanged..........................................................................23 Evento ScanFinished........................................................................................24 Costanti predefinite ..........................................................................................25 Codice Return del metodo BeginScanNotify ..................................................26 Codice Return del metodo EndScanNotify .....................................................27 Codice Return del metodo Connect ................................................................28 Codice Return del metodo Disconnect ...........................................................28 Codice Return del metodo ExecuteSingleScan..............................................29 Parametri e codice Return del metodo ExecuteNmsScan.............................30 Parametri e codice Return del metodo ExecuteNScans ................................31 Parametri e codice Return del metodo ReadOutputImage ............................32 Parametri e codice Return del metodo ReadOutputPoint .............................33 Parametri e codice Return del metodo WriteInputImage...............................34 Parametri e codice Return del metodo WriteInputPoint ................................35 Codice del progetto di esempio.......................................................................36 Codice di esempio per ExecuteNmsScan, ExecuteNScans ..........................44 Manuale SIMATIC S7ProSim Sommario S7ProSim è un controllo ActiveX™ che fornisce accesso programmatico all'interfaccia di simulazione di processo S7-PLCSIM. Questo controllo può essere usato in qualsiasi applicazione in grado di accettare i controlli ActiveX. Con tale controllo si può assegnare una simulazione di processo a S7-PLCSIM. La presente Guida online descrive le funzioni e le operazioni del controllo S7ProSim, versione 1.2. Tutte le proprietà, i metodi e gli eventi sono utilizzati in un progetto di esempio. Il controllo ActiveX fornisce tutti i metodi e gli eventi necessari per l'interazione con S7-PLCSIM. La figura qui sotto riporta il diagramma di sequenza dei diversi metodi e eventi. 1 Manuale SIMATIC S7ProSim 2 Manuale SIMATIC S7ProSim Progetto di esempio Il presente esempio dimostra l'utilizzo di tutte le proprietà, i metodi e gli eventi del controllo. Il form in basso è una rappresentazione del diagramma di sequenza in "Sommario". Tutti i controlli del form sono pulsanti di Visual Basic. Si prega di vedere anche il codice del progetto di esempio. 3 Manuale SIMATIC S7ProSim Form del progetto di esempio 4 Manuale SIMATIC S7ProSim Inserire il controllo S7ProSim in un'applicazione Visual Basic Il controllo S7ProSim può essere utilizzato in vari contenitori di altri produttori. Adoperare la procedura seguente per usare i controlli S7 in un form di Visual Basic. 1. Selezionare il comando Progetto -> Componenti per visualizzare la finestra di dialogo Componenti. 2. Selezionare dalla lista a scorrimento “Siemens S7ProSim Control”. 3. Cliccare su ”Applica”. Compare il controllo S7ProSim nella casella degli strumenti sulla sinistra del form di Visual Basic. 4. Cliccare su ”OK”. 5. Selezionare il controllo S7ProSim nella casella degli strumenti e incollarlo nel form. 5 Manuale SIMATIC S7ProSim Accedere alle proprietà del controllo S7ProSim in Visual Basic Se si seleziona il controllo S7ProSim, Visual Basic visualizza una finestra secondaria con una lista di proprietà. Le proprietà possono essere modificate in una supplementare finestra delle proprietà. La finestra delle proprietà permette di configurare i seguenti parametri del controllo S7ProSim: 6 Auto Connect: La proprietà AutoConnect determina se il controllo è connesso automaticamente a S7-PLCSIM all'avviamento o alla commutazione dal modo design al modo Run. Control Engine: La proprietà ControlEngine (di sola lettura) definisce l'indirizzo del motore di controllo a cui si connette il controllo S7ProSim. L'indirizzo è S7-PLCSIM. Enabled: La proprietà Enabled determina se il controllo è registrato o no. (Sono disponibili gli eventi ScanFinished e PLCSIMStateChanged). Scan Mode: La proprietà ScanMode imposta il modo di scansione di S7-PLCSIM. I modi di esecuzione validi sono SingleScan Mode e Continuous Mode. Manuale SIMATIC S7ProSim Proprietà AutoConnect La proprietà AutoConnect determina se il controllo è connesso automaticamente a S7-PLCSIM all'avviamento o alla commutazione dal modo design al modo Run. Se la proprietà AutoConnect è impostata su False, il controllo deve essere connesso con il metodo Connect e disconnesso con il metodo Disconnect. Sintassi: S7ProSimX.AutoConnect = [Boolean] laddove: X è l'identificativo per il controllo specifico S7ProSim. Boolean è una espressione booleana che specifica se il controllo ActiveX è connesso o no automaticamente a S7-PLCSIM. Le impostazioni di Boolean sono le seguenti. - True (default): il controllo ActiveX è connesso e disconnesso automaticamente al e dall'S7-PLCSIM specificato in ControlEngine. - False: il controllo ActiveX deve essere connesso e disconnesso programmaticamente dai metodi Connect e Disconnect. 7 Manuale SIMATIC S7ProSim Proprietà ControlEngine Questa proprietà di sola lettura definisce l'indirizzo del motore di controllo a cui si connette S7ProSim Control. L'indirizzo è S7-PLCSIM. 8 Manuale SIMATIC S7ProSim Proprietà Enabled La proprietà Enabled determina se il controllo è registrato o no. (Sono disponibili gli eventi ScanFinished e PLCSIMStateChanged). Sintassi: S7ProSimX.Enabled = [Boolean] laddove: X è l'identificativo per il controllo specifico S7ProSim. Boolean è una espressione booleana che specifica se il controllo ActiveX è registrato o meno per i richiami (callback) dal motore di controllo (determina se l'evento ScanFinished e l'evento PLCSIMStateChanged sono disponibili o no). Le impostazioni di Boolean sono le seguenti. - True: il controllo ActiveX è registrato per richiami (callback) dal motore di controllo. - False (default): il controllo ActiveX non sarà registrato per l'evento ScanFinished e per l'evento PLCSIMStateChanged per quanto riguarda i richiami (callback) dal set del motore di controllo. 9 Manuale SIMATIC S7ProSim Proprietà ScanMode Questa proprietà imposta il modo di scansione di S7-PLCSIM. I modi di esecuzione valida sono SingleScan Mode e ContinuousScan Mode. Sintassi: S7ProSimX.ScanMode = [ScanModeConstants] laddove: €X ScanModeConstants determina il modo di scansione del controllo. I valori validi sono i seguenti: è l'identificativo per il controllo specifico S7ProSim. ContinuousScan: S7-PLCSIM è impostato sul modo di ciclo continuo. SingleScan (default): S7-PLCSIM è impostato sul modo di ciclo singolo. S7-PLCSIM deve essere in questo modo per una simulazione di processo assegnata. 10 Manuale SIMATIC S7ProSim Metodo AboutBox Con questo metodo si possono ottenere informazioni specifiche sul controllo e sulla sua versione. La finestra di dialogo About può essere vista nella figura qui sotto. 11 Manuale SIMATIC S7ProSim Metodo BeginScanNotify Il metodo BeginScanNotify registra il controllo ActiveX per i callback del motore di controllo. (Sono disponibili gli eventi ScanFinished e PLCSIMStateChanged). Sintassi: risultato = S7ProSimX.BeginScanNotify dove: 12 X è l'identificativo di S7ProSim Control. risultato è un valore Long che indica se si è verificato un errore. Il risultato è zero se non avvengono errori. Manuale SIMATIC S7ProSim Metodo EndScanNotify Il metodo EndScanNotify annulla la registrazione del controllo ActiveX per i callback del motore di controllo. (Gli eventi ScanFinished e PLCSIMStateChanged non sono disponibili). Sintassi: risultato = S7ProSimX.EndScanNotify dove: X è l'identificativo di S7ProSim Control. risultato è un valore Long che indica se si è verificato un errore. Il risultato è zero se non avvengono errori. 13 Manuale SIMATIC S7ProSim Metodo Connect Con questo metodo il controllo S7ProSim può essere connesso programmaticamente all'S7PLCSIM definito nel ControlEngine (motore di controllo). Sintassi: result = S7ProSimX.Connect laddove: 14 X è l'identificativo per il controllo specifico S7ProSim. result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. Manuale SIMATIC S7ProSim Metodo Disconnect Con questo metodo il controllo S7ProSim può essere disconnesso programmaticamente. Sintassi: result = S7ProSimX.Disconnect laddove: €X result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. è l'identificativo per il controllo specifico S7ProSim. 15 Manuale SIMATIC S7ProSim Metodo ExecuteNmsScan Questo metodo forza S7-PLCSIM ad eseguire dei cicli di scansione per un dato tempo (Nms) senza attendere che termini l'esecuzione del ciclo corrente. Se la proprietà Enabled è impostata su true, verrà comunicato al programma quando S7-PLCSIM ha raggiunto il numero di cicli impostato. Sintassi: risultato = S7ProSimX.ExecuteNmsScan (MsNumber) dove: X è l'identificativo per il controllo specifico S7ProSim. risultato è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori.MsNumber è un valore Long che indica per quanto tempo (in millisecondi) dovranno essere eseguiti i cicli di scansione. Nota questo metodo viene utilizzato solo in modo Ciclo singolo. 16 Manuale SIMATIC S7ProSim Metodo ExecuteNScans Questo metodo forza S7-PLCSIM ad eseguire un dato numero di cicli di scansione senza attendere che termini l'esecuzione del ciclo corrente. Se la proprietà Enabled è impostata su true, verrà comunicato al programma quando S7-PLCSIM ha raggiunto il numero di cicli impostato. Sintassi: risultato = S7ProSimX.ExecuteNScans (NScanNumber) laddove: X è l'identificativo per il controllo specifico S7ProSim. risultato è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. NScanNumber è un valore Long che indica il numero di cicli di scansione che devono essere eseguiti. Nota questo metodo viene utilizzato solo in modo Ciclo singolo. 17 Manuale SIMATIC S7ProSim Metodo ExecuteSingleScan Questo metodo forza S7-PLCSIM ad eseguire un ciclo di scansione, senza attendere che termini l'esecuzione del ciclo corrente. Se la proprietà Enabled è impostata su true, verrà comunicato al programma quando S7-PLCSIM ha raggiunto il ciclo. Sintassi: risultato = S7ProSimX.ExecuteSingleScan laddove: 18 X è l'identificativo per il controllo specifico S7ProSim. risultato è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. Manuale SIMATIC S7ProSim Metodo ReadOutputImage Iniziando dal punto StartIndex nell'immagine di uscita di periferia (area di memoria PQ), il numero di byte, parole (2 byte) o doppie parole (4 byte) (ElementsToRead) sarà letto dall'immagine di uscita di periferia (area di memoria PQ) di S7-PLCSIM e posto in un array memorizzato in pData. Il tipo di elementi da leggere è determinato dal tipo richiesto nel parametro DataType. Tutti gli elementi hanno lo stesso tipo di dati. S7Byte ritorna byte, S7Word ritorna parole e S7DoubleWord ritorna doppie parole. I valori letti saranno ”crudi” e non interpretati o convertiti in alcun modo dal metodo. Syntax: result = S7ProSimX.ReadOutputImage (StartIndex, ElementsToRead, DataType, pData) laddove: X è l'identificativo per il controllo specifico S7ProSim. StartIndex è un Long e rappresenta la posizione iniziale del byte nel buffer dell'immagine delle periferiche da leggere. ElementsToRead è un Long e rappresenta il numero di byte, parole e doppie parole da leggere nel buffer di immagine. DataType è un ImageDataTypeConstants e deve essere S7Byte, S7Word o S7DoubleWord. pData è un Variant e rappresenta lo SPAZIO per gli elementi restituiti. La memoria è allocata dal server e liberata dall'applicazione. result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. 19 Manuale SIMATIC S7ProSim Metodo ReadOutputPoint Questo metodo legge un particolare bit (Boolean), un byte (Byte), una parola a due byte (Integer) o una parola a quattro byte (Long) dall'immagine di uscita di periferia (area di memoria PQ). Se il parametro DataType è impostato su S7_Bit, ByteIndex e BitIndex devono essere entrambi impostati su indici validi. In caso di successo, il metodo ritorna il bit dato in pData, e il tipo di dati Variant è Boolean. Se il parametro DataType è impostato su S7_Byte, S7_Word o S7_DoubleWord, ByteIndex deve essere impostato su un indice valido (BitIndex è ignorato). In caso di successo, il metodo ritorna il valore in pData, e il suo tipo di dati Variant è Byte, Integer o Long, a seconda del parametro DataType. Sintassi: risultato = S7ProSimX.ReadOutputPoint (ByteIndex, BitIndex, DataType, pData) laddove: 20 X è l'identificativo per il controllo specifico S7ProSim. ByteIndex è un Long e rappresenta la posizione del byte nel buffer di immagine delle periferiche. BitIndex è un Long e rappresenta la posizione del bit (del byte) nel buffer di immagine delle periferiche da leggere. I valori validi vanno da 0 a 7. DataType è un PointDataTypeConstants e può essere impostato a S7_Bit, S7_Byte, S7_Word o S7_DoubleWord. pData è di tipo Variant e contiene i dati letti. result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. Manuale SIMATIC S7ProSim Metodo WriteInputImage Iniziando dal valore StartIndex, gli elementi memorizzati in Data saranno scritti nell'immagine di ingresso di periferia (area di memoria PI) di S7-PLCSIM. Il tipo di elementi da scrivere è determinato dal tipo di elementi di Data. Tutti gli elementi devono avere lo stesso tipo di dati. Un array di Bytes scrive byte, un array di Integer scrive parole, un array di Long scrive doppie parole. I valori letti saranno ”crudi” e non interpretati o convertiti in alcun modo dal metodo. Notare che il numero di elementi scritti è determinato dalla dimensione dell'array memorizzato in Data. Sintassi: result = S7ProSimX.WriteInputImage (StartIndex, Data) laddove: X è l'identificativo per il controllo specifico S7ProSim. StartIndex è un Long e rappresenta la posizione del byte iniziale nel buffer dell'immagine delle periferiche da scrivere. Data è un Variant e rappresenta l'array contenente gli elementi da scrivere. La memoria è allocata e liberata dall'applicazione. Gli elementi saranno scritti in S7-PLCSIM. result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. 21 Manuale SIMATIC S7ProSim Metodo WriteInputPoint Questo metodo legge un particolare bit (Boolean), byte (Byte), o una parola a due byte (Integer) o una parola a quattro byte (Long) dalla Data Variant all'immagine di ingresso di periferia (area di memoria PI). Se Boolean è indicato come tipo di dati Variant, ByteIndex e BitIndex devono essere entrambi impostati su indici validi. In caso di successo, il metodo scrive il bit indicato in Data. Se Byte, Integer o Long viene indicato come tipo di dati Variant, ByteIndex deve essere impostato su un indice valido (BitIndex è ignorato). In caso di successo, il metodo scrive gli elementi in pData. Sintassi: result = S7ProSimX.WriteInputPoint (ByteIndex, BitIndex, Data) laddove: X è l'identificativo per il controllo specifico S7ProSim. ByteIndex è un Long e rappresenta la posizione del byte iniziale nel buffer dell'immagine delle periferiche da scrivere. BitIndex è un Long e rappresenta la posizione del bit (nei byte) nel buffer di immagine delle periferiche da scrivere. I valori validi vanno da 0 a 7. Data è un Variant e rappresenta il valore da scrivere. result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non avvengono errori. Evento ConnectionError Questo evento avviene se si verifica un errore nella connessione. Sintassi: ConnectionError(ByVal ControlEngine As String, ByVal Error As Long) laddove: 22 ControlEngine memorizza il nome del motore di controllo. Error memorizza il codice di errore di sistema Windows. Per maggiori informazioni si può consultare la documentazione di Windows. Manuale SIMATIC S7ProSim Evento PLCSIMStateChanged Questo evento avviene quando viene rilevato un nuovo stato di commutazione PLC. Sintassi: PLCSIMStateChanged(NewState As String) laddove: NewState contiene il nuovo stato operativo di S7-PLCSIM. I valori validi sono Stop, Run e RunP. 23 Manuale SIMATIC S7ProSim Evento ScanFinished Questo evento avviene quando è terminato un ciclo di S7-PLCSIM. Syntax: ScanFinished (ByVal ScanInfo As Variant) laddove: ScanInfo è un SafeArray di Longs che rappresenta varie informazioni sulla scansione. (Vedere la tabella qui sotto per informazioni dettagliate sull'array). Elementi di ScanInfo Indice Informazioni 0 Tempo di esecuzione (ms) 1 Tempo di ciclo minimo programmato (ms) 2 Tempo di esecuzione massimo (ms) 3 Tempo di ciclo medio (ms) 24 Manuale SIMATIC S7ProSim Costanti predefinite Costante Valore Descrizione ContinuousScan: 1 Simulazione in ContinuousScan SingleScan 0 Simulazione in Single Scan S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_INVBYTENDX &H80040201 ‘ByteIndex’ valore fuori campo PS_E_INVBYTECOUNT &H80040202 'ByteIndex' e dimensione di array Data sono fuori campo, oppure 'BytesToRead' è fuori campo PS_E_READFAILED &H80040203 S7-PLCSIM ha rifiutato richiesta di lettura PS_E_WRITEFAILED &H80040204 S7-PLCSIM ha rifiutato richiesta di scrittura PS_E_INVBITNDX &H80040205 ‘BitIndex’ valore fuori campo PS_E_INVTYPE &H80040206 Tipo di dati non valido PS_E_NOTREGISTERED &H80040209 L'applicazione non è registrata PS_E_NOTSINGLESCAN &H8004020A S7-PLCSIM non è nel modo di ciclo singolo PS_E_PLCSIMNOTRUNNING &H8004020E S7-PLCSIM non è nel modo Run o Run-P PS_S_ALLREADSNOTPOSSIBLE &H8004020F Il metodo ha potuto solo leggere le uscite configurate con successo PS_S_ALLWRITESNOTPOSSIBLE &H80040210 Il metodo ha potuto solo scrivere gli ingressi configurati con successo PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off PS_E_INVALIDINPUT &H80040213 Ingresso specificato non valido Codice Return Numero di elementi in ScanInfo NUM_OF_SCANINFO_ELEMENTS 4 Indici di ScanInfo EXECUTION_TIME_NDX 0 Tempo di esecuzione (ms) MIN_CYCLE_TIME_NDX 1 Tempo di ciclo minimo programmato (ms) LARGEST_CYCLE_TIME_NDX 2 Tempo di esecuzione massimo (ms) AVERAGE_CYCLE_TIME_NDX 3 Tempo di ciclo medio (ms) 25 Manuale SIMATIC S7ProSim Codice Return del metodo BeginScanNotify Costante Valore Descrizione S_OK &H0 Metodo eseguito correttamente PS_E_FAIL &H80004005 Si è verificato un errore sconosciuto PS_E_NOTSINGLESCAN &H8004020A S7-PLCSIM non è nel modo di scansione singola PS_E_PLCSIMNOTRUNNING &H8004020E S7-PLCSIM non è in modo Run o Run-P PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è spento Il tipo di codice Return di tutti i metodi è Long. 26 Manuale SIMATIC S7ProSim Codice Return del metodo EndScanNotify Costante Valore Descrizione S_OK &H0 Metodo eseguito correttamente PS_E_FAIL &H80004005 Si è verificato un errore sconosciuto PS_E_NOTSINGLESCAN &H8004020A S7-PLCSIM non è nel modo di scansione singola PS_E_PLCSIMNOTRUNNING &H8004020E S7-PLCSIM non è in modo Run o Run-P PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è spento Il tipo di codice Return di tutti i metodi è Long. 27 Manuale SIMATIC S7ProSim Codice Return del metodo Connect Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. Codice Return del metodo Disconnect Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 28 Manuale SIMATIC S7ProSim Codice Return del metodo ExecuteSingleScan Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_NOTSINGLESCAN &H8004020A S7-PLCSIM non è nel modo di ciclo singolo PS_E_PLCSIMNOTRUNNING &H8004020E S7-PLCSIM non è nel modo Run o Run-P PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 29 Manuale SIMATIC S7ProSim Parametri e codice Return del metodo ExecuteNmsScan Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_NOTSINGLESCAN &H8004020A S7-PLCSIM non è nel modo di ciclo singolo PS_E_PLCSIMNOTRUNNING &H8004020E S7-PLCSIM non è nel modo Run o Run-P PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 30 Manuale SIMATIC S7ProSim Parametri e codice Return del metodo ExecuteNScans Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_NOTSINGLESCAN &H8004020A S7-PLCSIM non è nel modo di ciclo singolo PS_E_PLCSIMNOTRUNNING &H8004020E S7-PLCSIM non è nel modo Run o Run-P PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 31 Manuale SIMATIC S7ProSim Parametri e codice Return del metodo ReadOutputImage Parametro Tipo dati Numeri e campi validi StartIndex [in] Long dipende dalla CPU ElementsToRead [in] Long dipende dalla CPU DataType [in] Long S7Byte, S7Word, S7DoubleWord pData [out] Variant dipende da ElementsToRead Il tipo di codice Return di tutti i metodi è Long. Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_INVBYTENDX &H80040201 ‘ByteIndex’ valore fuori campo PS_E_INVBYTECOUNT &H80040202 'BytesToRead' è fuori campo PS_E_READFAILED &H80040203 S7-PLCSIM ha rifiutato richiesta di lettura PS_E_INVTYPE &H80040206 Tipo di dati non valido PS_S_ALLREADSNOTPOSSIBLE &H8004020F Il metodo ha potuto solo leggere le uscite configurate con successo PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 32 Manuale SIMATIC S7ProSim Parametri e codice Return del metodo ReadOutputPoint Parametro Tipo dati Numeri validi ByteIndex [in] Long dipende dalla CPU BitIndex [in] Long da 0 a 7 DataType [in] Long S7_Bit, S7_Byte, S7_Word or S7DoubleWord pData [out] Variant dipende dal tipo di dati Il tipo di codice Return di tutti i metodi è Long. Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_INVBYTENDX &H80040201 ‘ByteIndex’ valore fuori campo PS_E_INVBYTECOUNT &H80040202 'ByteIndex' e dimensione di array Data sono fuori campo PS_E_READFAILED &H80040203 S7-PLCSIM ha rifiutato richiesta di lettura PS_E_INVBITNDX &H80040205 ‘BitIndex’ valore fuori campo PS_E_INVTYPE &H80040206 Tipo di dati non valido PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 33 Manuale SIMATIC S7ProSim Parametri e codice Return del metodo WriteInputImage Parametro Tipo dati Numeri validi StartIndex [in] Long dipende dalla CPU Data [in] Variant dipende dalla CPU Il tipo di codice Return di tutti i metodi è Long. Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_INVBYTENDX &H80040201 ‘ByteIndex’ valore fuori campo PS_E_INVBYTECOUNT &H80040202 'ByteIndex' e dimensione di array Data sono fuori campo PS_E_WRITEFAILED &H80040204 S7-PLCSIM ha rifiutato richiesta di scrittura PS_E_INVTYPE &H80040206 Tipo di dati non valido PS_S_ALLWRITESNOTPOSSIBLE &H80040210 Il metodo ha potuto solo scrivere gli ingressi configurati con successo PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 34 Manuale SIMATIC S7ProSim Parametri e codice Return del metodo WriteInputPoint Parametro Tipo dati Numeri validi ByteIndex [in] Long dipende dalla CPU BitIndex [in] Long da 0 a 7 Data [in] Variant dipende dal tipo di dati Il tipo di codice Return di tutti i metodi è Long. Costante Valore Descrizione S_OK &H0 Il metodo ha avuto successo PS_E_FAIL &H80004005 Si è verificato errore sconosciuto PS_E_INVBYTENDX &H80040201 ‘ByteIndex’ valore fuori campo PS_E_INVBYTECOUNT &H80040202 'ByteIndex' e dimensione di array Data sono fuori campo PS_E_WRITEFAILED &H80040204 S7-PLCSIM ha rifiutato richiesta di scrittura PS_E_INVBITNDX &H80040205 ‘BitIndex’ valore fuori campo PS_E_INVTYPE &H80040206 Tipo di dati non valido PS_E_NOTCONNECTED &H80040211 Il controllo S7ProSim non è connesso a S7-PLCSIM PS_E_POWEROFF &H80040212 S7-PLCSIM è nello stato Power-off Il tipo di codice Return di tutti i metodi è Long. 35 Manuale SIMATIC S7ProSim Codice del progetto di esempio '======================================= 'DECLARATIONPART OF THE FORM '======================================= 'Variables must be declared Option Explicit 'Default Error Code Values of S7ProSim '--------------------------------------Private Const S_OK = &H0 Private Const PS_E_FAIL = &H80004005 Private Const PS_E_INVBYTENDX = &H80040201 Private Const PS_E_INVBYTECOUNT = &H80040202 Private Const PS_E_READFAILED = &H80040203 Private Const PS_E_WRITEFAILED = &H80040204 Private Const PS_E_INVBITNDX = &H80040205 Private Const PS_E_INVTYPE = &H80040206 Private Const PS_E_NOTREGISTERED = &H80040209 Private Const PS_E_NOTSINGLESCAN = &H8004020A Private Const PS_E_MODENOTPOSSIBLE = &H8004020C Private Const PS_E_NOTIFICATION_EXIST = &H8004020D Private Const PS_E_PLCSIMNOTRUNNING = &H8004020E Private Const PS_S_ALLREADSNOTPOSSIBLE = &H8004020F Private Const PS_S_ALLWRITESNOTPOSSIBLE = &H80040210 Private Const PS_E_NOTCONNECTED = &H80040211 Private Const PS_E_POWEROFF = &H80040212 'Default Error Text '--------------------------------------Private Const MSG_OK = "&H0: Method was successful" Private Const MSG_FAIL = "&H80004005: Unknown error occurred" Private Const MSG_INVBYTENDX = _ "&H80040201: ByteIndex value out of Range" Private Const MSG_INVBYTECOUNT = _ "&H80040202: ByteIndex + size of Data array out of range or BytesToRead out of Range" Private Const MSG_READFAILED = _ "&H80040203: S7-PLCSIM refused read request" Private Const MSG_WRITEFAILED = _ "&H80040204: S7-PLCSIM refused write request" Private Const MSG_INVBITNDX = _ "&H80040205: BitIndex value out of range" Private Const MSG_INVTYPE = "&H80040206: Invalid data type" Private Const MSG_NOTREGISTERED = _ "&H80040209: The application is not registered" Private Const MSG_NOTSINGLESCAN = _ "&H8004020A: S7-PLCSIM is not in single scan mode" Private Const MSG_NOTIFICATION_EXIST = _ "&H8004020D: Application is already registered" Private Const MSG_PLCSIMNOTRUNNING = _ "&H8004020E: S7-PLCSIM is not in Run or Run-P mode" Private Const MSG_ALLREADSNOTPOSSIBLE = _ "&H8004020F: Only the configured outputs could be read successful" Private Const MSG_ALLWRITESNOTPOSSIBLE = _ "&H80040210: Only the configured inputs could be written successful" Private Const MSG_NOTCONNECTED = _ "&H80040211: The S7ProSim control is not connected to S7-PLCSIM" Private Const MSG_POWEROFF = _ "&H80040212: S7-PLCSIM is in Power-off state" '======================================= 'CODE FOR THE BUTTONS '======================================= 36 Manuale SIMATIC S7ProSim 'cmdAutoConnectEnd '--------------------------------------Private Sub cmdAutoConnectTrueEnd_Click() S7ProSim1.AutoConnect = True '***** If the AutoConnect property is set to true End Sub 'cmdAutoConnectTrueStart '--------------------------------------Private Sub cmdAutoConnectTrueStart_Click() S7ProSim1.AutoConnect = True End Sub 'cmdCalculateValuesOfProcessSimulation '--------------------------------------Private Sub cmdCalculateValuesOfProcessSimulation_Click() '***** TODO by the User ***** '***** In this function you have to implement the ***** '***** Code for the Process Simulation. Take the ***** '***** values from the Outputs of S7-PLCSIM and ***** '***** calculate the new values for the Input of ***** '***** S7-PLCSIM. ***** End Sub 'cmdConnect '--------------------------------------Private Sub cmdConnect_Click() Dim errConnect As Long errConnect = S7ProSim1.Connect If errConnect = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errConnect End If End Sub 'cmdDisconnect '--------------------------------------Private Sub cmdDisconnect_Click() Dim errDisconnect As Long errDisconnect = S7ProSim1.Disconnect If errDisconnect = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errDisconnect End If End Sub 'cmdEnableFalse '--------------------------------------Private Sub cmdEnableFalse_Click() S7ProSim1.Enabled = False End Sub 'cmdEnableTrue '--------------------------------------Private Sub cmdEnableTrue_Click() S7ProSim1.Enabled = True End Sub 'cmdExecuteSingleScan '--------------------------------------Private Sub cmdExecuteSingleScan_Click() Dim errExecuteSingleScan As Long errExecuteSingleScan = S7ProSim1.ExecuteSingleScan 37 Manuale SIMATIC S7ProSim If errExecuteSingleScan = S_OK Then 'MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errExecuteSingleScan End If End Sub 'cmdReadOutputImage '--------------------------------------Private Sub cmdReadOutputImage_Click() 'Long Dim errReadOutputImage As Long Dim lStartIndex As Long Dim lElementsToRead As Long 'ImageDataTypeConstants Dim DataType As ImageDataTypeConstants 'Variant Dim vData As Variant '***** Read 2 Bytes at the starting address Q 8.0 ***** DataType = S7Byte 'Read type Byte lStartIndex = 8 'Start at address Q 8.0 lElementsToRead = 2 'Read 2 elements (Bytes) errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _ lElementsToRead, DataType, vData) If errReadOutputImage = S_OK Then MsgBox "Value of QB 8 is: " & CByte(vData(0)) & vbCrLf & _ "Value of QB 9 is: " & CByte(vData(1)), _ vbInformation, "S7ProSim Example" Else ShowError errReadOutputImage End If '***** Read 2 Words at the starting address Q 10.0 ***** DataType = S7Word 'Read type Word lStartIndex = 10 'Start at address Q 10.0 lElementsToRead = 2 'Read 2 Elements (Words) errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _ lElementsToRead, DataType, vData) If errReadOutputImage = S_OK Then MsgBox "Value of QW 10 is: " & CInt(vData(0)) & vbCrLf & _ "Value of QW 12 is: " & CInt(vData(1)), _ vbInformation, "S7ProSim Example" Else ShowError errReadOutputImage End If '***** Read 2 DoubleWords at the starting address Q 14.0 ***** DataType = S7DoubleWord 'Read type DoubleWord lStartIndex = 14 'Start at addresse Q 14.0 lElementsToRead = 2 'Read 2 Elements (DoubleWords) errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _ lElementsToRead, DataType, vData) If errReadOutputImage = S_OK Then MsgBox "Value of QD 14 is: " & CLng(vData(0)) & vbCrLf & _ "Value of QD 18 is: " & CLng(vData(1)), _ vbInformation, "S7ProSim Example" Else ShowError errReadOutputImage End If '***** After this section the calculations for the ***** '***** Process Simulation can be done if the return ***** '***** value is S_OK. ***** End Sub 'cmdReadOutputPoint '--------------------------------------- 38 Manuale SIMATIC S7ProSim Private Sub cmdReadOutputPoint_Click() 'Long Dim errReadOutputPoint As Long Dim lByteIndex As Long Dim lBitIndex As Long 'PointDataTypeConstants Dim DataType As PointDataTypeConstants 'Variant Dim vData As Variant '***** Read the Bit at the address Q 0.5 ***** lByteIndex = 0 'Start at address 0.0 lBitIndex = 5 'Read specific Bit 5 (of Byte 0) DataType = S7_Bit 'Read type Bit errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "The current value of Q 0.5 is: " & CInt(vData), _ vbInformation, "S7ProSim Example" Else ShowError errReadOutputPoint End If '***** Read the Byte at the address Q 1.0 ***** lByteIndex = 1 'Start at address 1.0 DataType = S7_Byte 'Read type Byte errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "The current value of QB 1 is: " & CByte(vData), _ vbInformation, "S7ProSim Example" Else ShowError errReadOutputPoint End If '***** Read the Word at the address Q 2.0 ***** lByteIndex = 2 'Start at address 2.0 DataType = S7_Word 'Read type Word errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "The current value of QW 2 is: " & CInt(vData), _ vbInformation, "S7ProSim Example" Else ShowError errReadOutputPoint End If '***** Read the DoubleWord at the address Q 4.0 ***** lByteIndex = 4 'Start at address 4.0 DataType = S7_DoubleWord 'Read type DoubleWord errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "The current value of QD 4 is: " & CLng(vData), _ vbInformation, "S7ProSim Example" Else ShowError errReadOutputPoint End If '***** After this section the calculations for the ***** '***** Process Simulation can be done if the return ***** '***** value is S_OK. ***** End Sub 'cmdScanModeCont '--------------------------------------Private Sub cmdScanModeCont_Click() 39 Manuale SIMATIC S7ProSim S7ProSim1.ScanMode = ContinuousScan End Sub 'cmdScanModeSingle '--------------------------------------Private Sub cmdScanModeSingle_Click() S7ProSim1.ScanMode = SingleScan End Sub 'cmdWriteInputImage '--------------------------------------Private Sub cmdWriteInputImage_Click() 'Byte Dim cByteArray(0 To 1) As Byte 'Integer Dim iWordArray(0 To 1) As Integer 'Long Dim errWriteInputImage As Long Dim lDoubleWordArray(0 To 1) As Long Dim lStartIndex As Long 'Variant Dim vData As Variant '***** Write 2 Bytes and start at address I 8.0 ***** cByteArray(0) = 8 'Write 8 in first element (Byte) cByteArray(1) = 9 'Write 9 in second element (Byte) lStartIndex = 8 'Start at address I 8.0 vData = cByteArray errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _ vData) '***** After this section the calculations for the ***** '***** Process Simulation can be done if the return ***** '***** value is S_OK. ***** If errWriteInputImage = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errWriteInputImage End If '***** Write 2 Words and start at address I 10.0 ***** iWordArray(0) = 10 'Write 10 in first element (Word) iWordArray(1) = 12 'Write 12 in second element (Word) lStartIndex = 10 'Start at address I 10.0 vData = iWordArray errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _ vData) If errWriteInputImage = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errWriteInputImage End If '***** Write 2 DoubleWords and start at address I 14.0 ***** lDoubleWordArray(0) = 14 'Write 14 in first element (DoubleWord) lDoubleWordArray(1) = 18 'Write 18 in second element (DoubleWord) lStartIndex = 14 'Start at address I 14.0 vData = lDoubleWordArray errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _ vData) If errWriteInputImage = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errWriteInputImage End If End Sub 'cmdWriteInputPoint '--------------------------------------- 40 Manuale SIMATIC S7ProSim Private Sub cmdWriteInputPoint_Click() 'Boolean Dim bBoolIn As Boolean 'Byte Dim cByteIn As Byte 'Integer Dim iWordIn As Integer 'Long Dim errWriteInputPoint As Long Dim lBitIndex As Long Dim lByteIndex As Long Dim lDoubleWordIn As Long 'Variant Dim vData As Variant '***** Write 1 Bit to the address I 0.5 ***** bBoolIn = 1 'Write value 1 lByteIndex = 0 'Start at address 0.0 lBitIndex = 5 'Write specific Bit 5 (of Byte 0) vData = bBoolIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) '***** After this section the calculations for the ***** '***** Process Simulation can be done if the return ***** '***** value is S_OK. ***** If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errWriteInputPoint End If '***** Write 1 Byte to the address I 1.0 ***** cByteIn = 1 'Write value 1 lByteIndex = 1 'Start at address 1.0 vData = cByteIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errWriteInputPoint End If '***** Write 1 Word to the address I 2.0 ***** iWordIn = 2 'Write value 2 lByteIndex = 2 'Start at address 2.0 vData = iWordIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errWriteInputPoint End If '***** Write 1 DoubleWord to the address I 4.0 ***** lDoubleWordIn = 4 'Write value 4 lByteIndex = 4 'Start at address 4.0 vData = lDoubleWordIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errWriteInputPoint End If End Sub 41 Manuale SIMATIC S7ProSim '======================================= 'EVENTS IMPLEMENTATION FOR THE CONTROL '======================================= 'ConnectionError '--------------------------------------Private Sub S7ProSim1_ConnectionError(ByVal ControlEngine As String, _ ByVal Error As Long) Dim errMessage As String errMessage = "Unable to connect to " & ControlEngine & vbCrLf errMessage = errMessage & vbCrLf & _ "Start " & ControlEngine & vbCrLf errMessage = errMessage & "and connect with Connect method" MsgBox errMessage, vbExclamation, "Connection Error" End Sub 'PLCStateChanged '--------------------------------------Private Sub S7ProSim1_PLCSIMStateChanged(ByVal NewState As String) Dim cMessage As String cMessage = "PLCSIM changed the operating state to " & NewState MsgBox cMessage, vbInformation, "S7ProSim Example" End Sub 'ScanFinished '--------------------------------------Private Sub S7ProSim1_ScanFinished(ByVal ScanInfo As Variant) Dim cMessage As String Dim vArrayInfo As Variant '***** Before this section of code, the calculations ***** '***** for the Process Simulation should be done. ***** vArrayInfo = ScanInfo cMessage = "Last scan took " & vArrayInfo(0) & vbCrLf cMessage = cMessage & _ "minimum cyle time " & vArrayInfo(1) & vbCrLf cMessage = cMessage & _ "Largest Execution time took " & vArrayInfo(2) & vbCrLf cMessage = cMessage & _ "Average scan took " & vArrayInfo(3) MsgBox cMessage, vbInformation, "S7ProSim Example" End Sub Private Sub Form_Unload(cancel As Integer) Dim errDisconnect As Long errDisconnect = S7ProSim1.Disconnect If errDisconnect = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim Example" Else ShowError errDisconnect EndIf End Sub '======================================= 'PRIVATE SUBs '======================================= 'ShowError '--------------------------------------Private Sub ShowError(ErrorNumber) Select Case ErrorNumber Case PS_E_FAIL MsgBox MSG_FAIL, vbExclamation, "S7ProSim Example" Case PS_E_INVBYTENDX MsgBox MSG_INVBYTENDX, vbExclamation, "S7ProSim Example" Case PS_E_INVBYTECOUNT MsgBox MSG_INVBYTECOUNT, vbExclamation, "S7ProSim Example" 42 Manuale SIMATIC S7ProSim Case PS_E_READFAILED MsgBox MSG_READFAILED, vbExclamation, "S7ProSim Example" Case PS_E_WRITEFAILED MsgBox MSG_WRITEFAILED, vbExclamation, "S7ProSim Example" Case PS_E_INVBITNDX MsgBox MSG_INVBITNDX, vbExclamation, "S7ProSim Example" Case PS_E_INVTYPE MsgBox MSG_INVTYPE, vbExclamation, "S7ProSim Example" Case PS_E_NOTREGISTERED MsgBox MSG_NOTREGISTERED, vbExclamation, "S7ProSim Example" Case PS_E_NOTSINGLESCAN MsgBox MSG_NOTSINGLESCAN, vbExclamation, "S7ProSim Example" Case PS_E_NOTIFICATION_EXIST MsgBox MSG_NOTIFICATION_EXIST, vbExclamation, _ "S7ProSim Example" Case PS_E_PLCSIMNOTRUNNING MsgBox MSG_PLCSIMNOTRUNNING, vbExclamation, _ "S7ProSim Example" Case PS_S_ALLREADSNOTPOSSIBLE MsgBox MSG_ALLREADSNOTPOSSIBLE, vbExclamation, _ "S7ProSim Example" Case PS_S_ALLWRITESNOTPOSSIBLE MsgBox MSG_ALLWRITESNOTPOSSIBLE, vbExclamation, _ "S7ProSim Example" Case PS_E_NOTCONNECTED MsgBox MSG_NOTCONNECTED, vbExclamation, "S7ProSim Example" Case PS_E_POWEROFF MsgBox MSG_POWEROFF, vbExclamation, "S7ProSim Example" Case Else MsgBox "System Error occured: &H" & Hex(ErrorNumber), _ vbExclamation, "S7ProSim Example" End Select End Sub 43 Manuale SIMATIC S7ProSim Codice di esempio per ExecuteNmsScan, ExecuteNScans Private Sub CmdNmsScan_Click() Dim ReturnValue As Long ReturnValue = S7ProSim1.ExecuteNmsScan(Int(txtScanNumber.Text)) If ReturnValue <> 0 Then MsgBox "Failed!", vbOKOnly End If End Sub Private Sub CmdNScan_Click() Dim ReturnValue As Long ReturnValue = S7ProSim1.ExecuteNScans(Int(txtScanNumber.Text)) If ReturnValue <> 0 Then MsgBox "Failed!", vbOKOnly End If End Sub Private Sub CmdSingleScan_Click() S7ProSim1.ExecuteSingleScan End Sub Private Sub cmdStart_Click() S7ProSim1.BeginScanNotify End Sub Private Sub cmdStop_Click() S7ProSim1.EndScanNotify End Sub Private Sub Form_Load() S7ProSim1.Connect txtScans.Text = 0 S7ProSim1.ScanMode = SingleScan End Sub 44 Manuale SIMATIC S7ProSim Private Sub Form_Unload(Cancel As Integer) S7ProSim1.Disconnect End Sub Private Sub S7ProSim1_ConnectionError(ByVal ControlEngine As String, ByVal Error As Long) MsgBox "Connection Error!", vbOKOnly End Sub Private Sub S7ProSim1_PLCSimStateChanged(ByVal NewState As String) MsgBox "State Changed!", vbOKOnly End Sub Private Sub S7ProSim1_ScanFinished(ByVal ScanInfo As Variant) DoEvents txtScans.Text = Int(txtScans.Text) + 1 Set ScanInfo = Nothing End Sub 45 Manuale SIMATIC S7ProSim Indice analitico A Accedere alle proprietà del controllo S7ProSim in Visual Basic, 6 C Codice del progetto di esempio, 36 Codice di esempio per ExecuteNmsScan ExecuteNScans, 44 Codice Return del metodo BeginScanNotify, 26 Codice Return del metodo Connect, 28 Codice Return del metodo Disconnect, 28 Codice Return del metodo EndScanNotify, 27 Codice Return del metodo ExecuteSingleScan, 29 Constanti, 25 Costanti predefinite, 25 E Evento ConnectionError, 22 Evento PLCSIMStateChanged, 23 Evento ScanFinished, 24 I Inserire il controllo S7ProSim in un'applicazione Visual Basic, 5 M Metodo AboutBox, 11 Metodo BeginScanNotify, 12 46 Metodo Connect, 14 Metodo Disconnect, 15 Metodo EndScanNotify, 13 Metodo ExecuteNmsScan, 16 Metodo ExecuteNScans, 17 Metodo ExecuteSingleScan, 18 Metodo ReadOutputImage, 19 Metodo ReadOutputPoint, 20 Metodo WriteInputImage, 21 Metodo WriteInputPoint, 22 P Parametri e codice Return del metodo ExecuteNmsScan, 30 Parametri e codice Return del metodo ExecuteNScans, 31 Parametri e codice Return del metodo ReadOutputImage, 32 Parametri e codice Return del metodo ReadOutputPoint, 33 Parametri e codice Return del metodo WriteInputImage, 34 Parametri e codice Return del metodo WriteInputPoint, 35 Progetto di esempio, 3 Proprietà AutoConnect, 7 Proprietà ControlEngine, 8 Proprietà Enabled, 9 Proprietà ScanMode, 10 S Sommario, 1