ISS-001: MachineFingerprint.GetFingerprint() — null-safe WMI property reads - processorID and SerialNumber accessed with ?. and ?? string.Empty - prevents NullReferenceException on machines with missing WMI properties ISS-005: LicenseValidator.Validate() — SHA256CryptoServiceProvider in using block - disposed on all code paths (success and failure) ISS-006: Lsv2Client.Connect() — close TcpClient on timeout - _tcp.Close() called when ConnectAsync.Wait() times out - aborts pending socket task instead of leaking thread-pool slot Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .paul | ||
| Cnc | ||
| Licensing | ||
| NcProgramManager.Tests | ||
| Properties | ||
| .gitignore | ||
| App.config | ||
| ArgParser.cs | ||
| Dockerfile.test | ||
| FanucProgram.cs | ||
| FanucProgramManager.csproj.user | ||
| fwlib32.cs | ||
| InputArgs.cs | ||
| NcProgramManager.csproj | ||
| NcProgramManager.sln | ||
| nunit.runsettings | ||
| packages.config | ||
| Program.cs | ||
| README.md | ||
NcProgramManager
Software per il trasferimento di programmi CNC da e verso controller di macchine utensili. Supporta Fanuc (FOCAS), Heidenhain (LSV2), Siemens Sinumerik (FTP) e Mitsubishi (FTP). Funziona completamente offline come applicazione console per Windows.
Requisiti
- Windows (qualsiasi versione compatibile con .NET Framework 4.7.2)
- .NET Framework 4.7.2 installato
- File
license.licvalido (rilasciato dal fornitore)
Licenza
Copiare il file license.lic nella stessa cartella dell'eseguibile NcProgramManager.exe. Senza licenza valida il programma si chiude all'avvio.
Per ottenere una licenza contattare il fornitore fornendo l'impronta hardware della macchina. L'impronta si ottiene eseguendo il comando fingerprint dello strumento LicenseGenerator.exe sulla macchina di destinazione.
Utilizzo
NcProgramManager.exe -manufacturer=<tipo> -azione=<azione> -ip=<ip> -porta=<porta> [opzioni]
Parametri
| Parametro | Valori | Descrizione |
|---|---|---|
-azione= |
Scarica / Invia |
Azione da eseguire |
-manufacturer= |
fanuc / heidenhain / siemens / mitsubishi |
Tipo di controller CNC (predefinito: fanuc) |
-ip= |
indirizzo IP | Indirizzo IP del controller — connessione Ethernet |
-porta= |
numero porta | Porta di connessione Ethernet |
-tipo= |
3 / 2 |
Tipo di connessione: 3 = Ethernet, 2 = HSSB (solo Fanuc, legacy) |
-nodo= |
numero nodo | Nodo HSSB (solo Fanuc, connessione HSSB) |
-username= |
nome utente | Credenziale per Heidenhain, Siemens, Mitsubishi |
-password= |
password | Credenziale per Heidenhain, Siemens, Mitsubishi |
-pathprogramma= |
percorso file | Percorso del file locale da caricare sul CNC (richiesto per Invia) |
-path= |
numero | Percorso programmi sul CNC; predefinito 1 = //CNC_MEM/USER/PATH1/ |
-workzero= |
qualsiasi valore | Se presente: include dati work zero offset nell'operazione |
-tooloffset= |
qualsiasi valore | Se presente: include dati tool offset nell'operazione |
-commento= |
testo | Commento da associare al programma |
-compatibility |
— | Attiva modalità compatibilità (flag senza valore) |
-debug= |
qualsiasi valore | Mantiene il terminale aperto al termine dell'operazione |
-help |
— | Mostra l'elenco dei parametri e termina (flag senza valore) |
La licenza viene letta automaticamente dal file license.lic nella cartella dell'eseguibile — nessun parametro aggiuntivo richiesto.
Esempi
Scarica programma da controller Fanuc:
NcProgramManager.exe -manufacturer=fanuc -azione=Scarica -ip=192.168.1.100 -porta=8193
Invia programma a controller Heidenhain:
NcProgramManager.exe -manufacturer=heidenhain -azione=Invia -ip=192.168.1.50 -porta=19000 -username=operator -password=secret
Scarica programma da Siemens Sinumerik:
NcProgramManager.exe -manufacturer=siemens -azione=Scarica -ip=192.168.1.200 -porta=21 -username=admin -password=secret
Controller supportati
| Produttore | Protocollo | Porta predefinita | Note |
|---|---|---|---|
| Fanuc | FOCAS (DLL 32-bit) | 8193 | Richiede fwlib32.dll nella stessa cartella |
| Heidenhain | LSV2 (TCP) | 19000 | Testato su TNC series |
| Siemens | FTP | 21 | Directory programmi: /_N_MPF_DIR/ — richiede opzione FTP abilitata sul Sinumerik |
| Mitsubishi | FTP | 21 | Directory programmi: /PRG/ |
Validazione del programma NC
Prima di inviare un programma al controller, NcProgramManager esegue una validazione automatica del codice NC. Gli errori bloccano il trasferimento. Gli avvisi vengono registrati ma non interrompono l'operazione.
Codici di errore
| Codice | Descrizione | Causa probabile | Soluzione |
|---|---|---|---|
-100 |
Licenza errata o non valida | File license.lic assente, corrotto o generato per un'altra macchina |
Verificare che license.lic sia nella stessa cartella dell'eseguibile e generato per questa macchina |
-101 |
Impossibile parsare i parametri di input | Sintassi errata negli argomenti passati (spazi attorno a =, caratteri speciali) |
Controllare che ogni parametro sia nella forma -nome=valore senza spazi. Eseguire con -help per la sintassi corretta |
-102 |
Parametri obbligatori mancanti | Mancano -azione=, -ip= o -porta= |
Aggiungere i parametri mancanti alla riga di comando |
-103 |
Codice connessione non valido | Valore -tipo= non è 3 (Ethernet) né 2 (HSSB) |
Usare -tipo=3 per connessione Ethernet (più comune) o -tipo=2 per HSSB |
-201 |
Impossibile connettersi alla macchina | IP o porta errati, macchina spenta, firewall, protocollo non abilitato sul CNC | Verificare IP e porta, pingare la macchina, controllare che il protocollo (FOCAS/LSV2/FTP) sia abilitato sul controller |
-202 |
Eccezione durante l'esecuzione dell'azione | Errore di rete durante l'operazione, timeout, CNC in stato non valido | Controllare la connessione di rete; riprovare. Se persiste, verificare lo stato del CNC |
-203 |
L'azione richiesta è fallita | Il CNC ha rifiutato l'operazione (protezione scrittura, programma in esecuzione, permessi insufficienti) | Verificare che il CNC non stia eseguendo programmi e che non sia attiva la protezione scrittura |
-204 |
Errore durante invio o ricezione del programma CN | File locale non trovato (per Invia), memoria CNC piena, nome programma non valido |
Per Invia: verificare il percorso in -pathprogramma=. Per Scarica: verificare che il programma esista sul CNC |
-205 |
Errore durante invio o ricezione dei dati tool offset | Tool offset non supportato dal produttore selezionato, o errore di comunicazione | Verificare che il produttore supporti tool offset. Rimuovere -tooloffset= se non necessario |
-206 |
Errore durante invio o ricezione dei dati work zero offset | Work zero offset non supportato dal produttore selezionato, o errore di comunicazione | Verificare che il produttore supporti work zero offset. Rimuovere -workzero= se non necessario |
-207 |
Il CN deve essere in modalità MDI o EDIT | Il CNC è in modalità AUTO o MEM durante un tentativo di invio programma | Portare il CNC in modalità MDI o EDIT dal pannello operatore, poi ripetere l'operazione |
-208 |
Programma CN caricato ma non impostato come principale | Il programma è stato trasferito ma il CNC non lo ha selezionato come programma attivo | Selezionare manualmente il programma come programma principale dal pannello del CNC |