Attribute VB_Name = "ModuleOlivetti"
Option Explicit

Global Const Coeff_A = 51.14             'Coefficiente sensibilitā     mV/kPa
Global Const Coeff_B = -619.3            'Coefficiente Offset          mV
Global Const Coeff_Rs = 310              'Coefficiente shunt           OHM
Global Const Coeff_K = 0.010228          'Coefficiente di sensibilitā
Global Const Coeff_Y = -0.1239           'Coefficiente di offset

Public sngPressioneIstant As Single      'Pressione istantanea misurata
'Public sngPressioneMassima As Single     'Pressione massima accettabile
'Public sngPressioneMinima As Single      'Pressione minima accettabile
'Public sngPressioneVolt As Single        'Pressione ambiente da settare
'Public sngVuotoVolt As Single            'Vuoto settato
'Public sngPressioneSettata As Single     'Pressione che vado a settare di volta in volta
'Public sngDeltaPosX As Single            'Indica di quanto ci si deve spostare per
'Public sngDeltaPosY As Single            'passare da un circuito ad un altro durante la taratura
Public lngPosizionePrimoCircuitoZ As Long  'E' la coordinata Z della posizione del primo circuito in cui posizionarsi con la tavola
Public lngPosizionePrimoCircuitoW As Long  'E' la coordinata W della posizione del primo circuito in cui posizionarsi con la tavola
Public lngStepSensoriAsseZ As Long           'E' lo Step fra due sensori da tarare
Public lngStepSensoriAsseW As Long
Public lngOffset2SensoriAsseZ As Long
Public lngOffset2SensoriAsseW As Long        'E' l'offset2 fra due sensori da tarare
Public lngPosizionePrimoRiferimentoAsseZ As Long    'variabile temporanea utilizzata per memorizzare di volta in volta il primo
                                                     'riferimento per lo step e l'offset2
Public lngPosizionePrimoRiferimentoAsseW As Long  'secondo riferimento per lo step
Public lngCoordinateTemporaneeZ As Long
Public lngCoordinateTemporaneeW As Long

Public lngNumeroTotaleSensoriTarati As Long
Public lngNumeroTotaleSensoriTaratiOk As Long

Public intNumeroSensoriPerFila As Integer      'E' il numero di sensori presenti in una fila del PCB
Public intNumeroSensoriPerColonna As Integer   'E' il numero di sensori presenti in una colonna dekl PCB
Public intPrimoCircuitoDaTarareRiga As Integer     'Rappresenta la riga del primo circuito da tarare
Public intPrimoCircuitoDaTarareColonna As Integer  'Rappresenta la colonna del primo circuito da tarare
Public intSensoreInFaseDiTaraturaRiga As Integer   'conta i sensori da tarare su una riga
Public intSensoreInFaseDiTaraturaRigaRitorno As Integer   'contiene il valore del circuito che sto per tarare su una riga
Public intSensoreInFaseDiTaraturaColonna As Integer   'il sensore che sta per essere tarato coordinata colonna
Public intContatoreSensore As Integer              'conta il numero totale di sensori tarati
Public intNumeroTotaleCircuiti As Integer          'numero totale di circuiti da tarare
Public intFineTaratura As Integer                  'quando assume il valore 1 ho finito di tarare i circuiti
Public intNumeroSensoriPerFilaOld As Integer       'memorizza il numero di sensori per fila vecchio
Public intNumeroSensoriPerColonnaOld As Integer       'memorizza il numero di sensori per colonna vecchio


'Public strTLasReferenceXOld As String    'Memorizzano i valori di partenza del processo
'Public strTLasReferenceYOld As String    'di taratura relativi alla X e Y; non sono
                                         'altro che le coordinate del Reference Point
                                         'riferite al primo circuito
Public strZCoord As String               'Coordinata Z della tavola
Public strWCoord As String               'Coordinata W della tavola
Public strAsseStep As String             'Rappresenta l'asse scelto per lo Step fra due sensori
Public strAsseOffset2 As String          'Rappresenta l'asse scelto čper l'offset2 fra due sensori
Public strAsseStepTemp As String         'mi seve per poter salvare il volore di strAssStep quando cambia nel file
Public strAsseOffset2Temp As String      '
Public strPosizionePrimoCircuitoZ As String    'contiene la posizione del primo circuito come stringa asse Z
Public strPosizionePrimoCircuitoW As String    'contiene la posizione del primo circuito come stringa asse W
Public strStepSensoriAsseZ As String           'rappresenta lo step fra due circuiti asse z
Public strStepSensoriAsseW As String
Public strOffset2SensoriAsseZ As String       'contiene la posizione del primo riferimento come stringa asse z
Public strOffset2SensoriAsseW As String
Public strNumeroSensoriPerFila As String   'memorizza il numero di sensori per fila con formato stringa
Public strNumeroSensoriPerColonna As String    'memorizza il numero di sensori per colonna con formato stringa
Public strMatriceCircuitiDaTarare() As String  'questa matrice verrā dimensionata opportunamente in
                                               'base al numero di circuiti per riga o per colonna

Public strNomeFileMatriceCircuiti As String    'contiene il nome del file che contiene la matrice dei
                                               'dei circuiti da tarare

Public strData As String                       'contiene la data dell'ultima taratura

Public bytMatriceCircuitiDaTarare() As Byte   'questa matrice verrā dimensionata opportunamente in
                                              'base al numero di circuiti per riga o per colonna
                                              



'Public lngTempX As Long    'memorizza la posizione x del punto di riferimento nel primo circuito
'Public lngTempY As Long    'memorizza la posizione y del punto di riferimento nel primo circuito
'Public lngXInStep As Long  'memorizza la coordinata x in step
'Public lngYInStep As Long  'memorizza la coordinata y in step

Public theval!                           'valore letto dal Keithley

Public R1 As Integer                     '
Public intCheckOk As Integer             'Variabile per verificare la presenza di anomalie
Public intCounter As Integer             'Contetore per verificare la presenza di errori
Public TypeControll As Byte              'Mi indica il tipo di controllo che devo fare: 0= sui motori portelli
Public bytTipoTaratura As Byte           'Mi definisce il dipo di taratura che devo eseguire =1 solo tavola 1; =2 entrambe; =3 solo tavola 2; 0 errore
                                         '1=sui puntali tavola 1; 2=sui puntali tavola 2
Public blnCheckAssorbimento As Boolean   'Variabile di controllo per la corrente assorbita
'Public SetConfigPuntaliPneu As Boolean   'verifica se i puntali sono nelle configura
'Public blnCheckPressione As Boolean      'variabile di controllo della pressione
'Public blnTemperaturaOK As Boolean       'variabile che informa sul corretto raggiungimento della temperatura fissata
Public blnPuntaliUp As Boolean           'variabile che informa se i puntali si sono alzati corretamente
Public blnVuotoOK As Single              'Variabile di controllo che mi informa quando il vuoto e' abilitato
Public blnTavolaInMov As Boolean         'Tavola in movimento
Public blnFineEsecuzione As Boolean      'Fine
Public blnPSIMove As Boolean

Sub InitVariabiliTaratura()
'Questa funzione ha il compito di inizializzare opportunamente le variabilie necessarie
'per il processo di taratura: numero di sensori x riga E2, numero di sensori x colonna E3
'variabile di controllo degli errori dutante i tagli E1

'inizializzo variabili Ex
Call AssegnaValoreVariabile("E1", 0)   'valore di errore taglio =0
'assegno il numero di sensori per fila ad E2
Call AssegnaValoreVariabile("E2", 1)
intSensoreInFaseDiTaraturaRiga = 1
intSensoreInFaseDiTaraturaRigaRitorno = 1
'assegno il numero di sensori per colonna ad E3
Call AssegnaValoreVariabile("E3", 1)
intSensoreInFaseDiTaraturaColonna = 1
Call AssegnaValoreVariabile("E7", 1)
'assegno il valore 0 al contatore dei sensori da tarare
Call AssegnaValoreVariabile("E4", 0)
intContatoreSensore = 0
'assegno il valore del numero totale di circuiti da tarare
intNumeroTotaleCircuiti = intNumeroSensoriPerFila * intNumeroSensoriPerColonna
Call AssegnaValoreVariabile("E5", CSng(intNumeroTotaleCircuiti))
'assegno il valore 1 alla variabile che informa quando ho finito di tarare tutti i circuiti
Call AssegnaValoreVariabile("E6", 0)
intFineTaratura = 0

End Sub

Sub InitVariabiliMacchina()
'questa funzione ha il compito di inizializzare alcune variabili necessarie per
'il funzionamento della macchina;

blnFocus = False  'inizializzo la variabile per la procedura di fuoco;
                  'pongo a True questa variabile per non muovere gli assi Z e W
                  'durante la procedura di taratura
bytTipoLetturaCorrente = 0
If strData <> Date Then
   strData = Date
   lngNumeroTotaleSensoriTarati = 0
   lngNumeroTotaleSensoriTaratiOk = 0
End If


End Sub

Sub ResetVariabili()
'Questa funzione ha il compito di andare a resettare le variabili quando viene rilevata
'una emergenza, prima di recuperare il corretto funzionamento della macchina
Dim status As Integer

'Call resetoutput(0, d0.O_Vuoto_Tavola)
Call SalvaContatori

'reset keythley 2400
'Call send(intAddress2400dx, "*RST", status)
'Call send(intAddress2400dx, "OUTPUT OFF", status)
'Call send(intAddress2400sx, "*RST", status)
'Call send(intAddress2400sx, "OUTPUT OFF", status)

End Sub

Sub AssegnaValoreVariabile(strNomeVariabile As String, sngValoreVariabile As Single)
'questa funzione salva nella variabile leggibile da PSI (thematrix$(index%))
'il valore richiesto; il nome della variabile č passato in ingresso
'es: call AssegnaValoreVariabile(E1,0)
Dim strTemp1 As String
Dim strTemp2 As String
Dim intTemp1 As Integer
Dim intTemp2 As Integer

strTemp1 = UCase(Trim(Left(strNomeVariabile, 1)))
strTemp2 = Trim(Mid(strNomeVariabile, 2))
intTemp1 = CInt(strTemp2)
If (intTemp1 > 999) Then
   strRisposta = MsgBox("Error: overflow (999)")
   Exit Sub
End If
intTemp2 = intTemp1 + (1000 * (Asc(strTemp1) - 65))
thematrix$(intTemp2) = sngValoreVariabile

End Sub

Sub CreaNuovoFileMatrice(intRiga As Integer, intColonna As Integer)
'mi crea un nuovo file inizializzato a tutto pezzi ok
Dim intFileApertoTemp As Integer
Dim intCont1 As Integer
Dim intCont2 As Integer
Dim strPathCompleta As String

intFileApertoTemp = FreeFile
strPathCompleta = thepath$ + strNomeFileMatriceCircuiti
Kill (strPathCompleta)
Open strPathCompleta For Output As #intFileApertoTemp

For intCont2 = 1 To intColonna
    For intCont1 = 1 To intRiga
        If intCont1 = intRiga Then
           Print #intFileApertoTemp, "1";
        Else
           Print #intFileApertoTemp, "1" + ",";
        End If
    Next
    Print #intFileApertoTemp, ":"
Next
Close #intFileApertoTemp

End Sub


Sub SalvaContatori()
'salva i contatori nel file di testo
Dim strPathCorrente As String
Dim blnEsistenzaFile As Boolean
Dim intFileApertoTemp As Integer

'On Error GoTo fine

strPathCorrente = thepath$ + "Log_" + Format(strData, "dd_mm_yyyy") + ".txt"
'intFileApertoTemp = FreeFile
'Open strPathCorrente For Input As #intFileApertoTemp
'Close #intFileApertoTemp
intFileApertoTemp = FreeFile
Open strPathCorrente For Append As #intFileApertoTemp
Print #intFileApertoTemp, "  ";
Print #intFileApertoTemp, Now
Print #intFileApertoTemp, "  Numero Totale Sensori Tarati  " + Str(lngNumeroTotaleSensoriTarati)
Print #intFileApertoTemp, "  Numero Totale Sensori Tarati Ok  " + Str(lngNumeroTotaleSensoriTaratiOk)
Print #intFileApertoTemp, " "
Close #intFileApertoTemp
Exit Sub

'fine:

End Sub

Function CheckEsistenzaFile(strNomeFile As String) As Boolean
'controlla se un file esiste giā o no se restituisce TRUE allora il file non esiste
Dim intCkUn As Integer

On Error GoTo Errore
CheckEsistenzaFile = False
intCkUn = FreeFile
Open strNomeFile For Input As #intCkUn
Close #intCkUn
CheckEsistenzaFile = True
Exit Function

Errore:
CheckEsistenzaFile = False

End Function



