No description
Find a file
2026-06-02 08:17:54 +00:00
.paul fix(mitsubishi): symmetric read/write FTP path (ISS-020) 2026-06-02 09:57:10 +02:00
Cnc fix(mitsubishi): symmetric read/write FTP path (ISS-020) 2026-06-02 09:57:10 +02:00
field-test fix(validator,field-test): unblock Fanuc/Mitsubishi upload (ISS-018, ISS-019) 2026-06-02 09:42:46 +02:00
Licensing fix(robustness): null guard WMI reads, dispose SHA256, abort LSV2 timeout (ISS-001, ISS-005, ISS-006) 2026-05-18 23:00:08 +02:00
NcProgramManager.Tests fix(mitsubishi): symmetric read/write FTP path (ISS-020) 2026-06-02 09:57:10 +02:00
Properties refactor(rename): FanucProgramManager → NcProgramManager 2026-05-17 22:31:36 +02:00
.gitignore Initial commit: migrate from FanucProgramManager 2026-05-17 22:10:30 +02:00
App.config Initial commit: migrate from FanucProgramManager 2026-05-17 22:10:30 +02:00
ArgParser.cs feat(16-fagor): Fagor CNC FTP support + validator gating 2026-05-25 20:27:18 +02:00
BUG_ANALYSIS.md docs: add code review bug analysis report 2026-05-25 21:53:03 +02:00
Dockerfile.test feat(07-license-core): RSA offline license core 2026-05-17 22:58:14 +02:00
FanucProgram.cs refactor(rename): FanucProgramManager → NcProgramManager 2026-05-17 22:31:36 +02:00
FanucProgramManager.csproj.user Initial commit: migrate from FanucProgramManager 2026-05-17 22:10:30 +02:00
fwlib32.cs Initial commit: migrate from FanucProgramManager 2026-05-17 22:10:30 +02:00
InputArgs.cs feat(08-license-integration): wire RSA license check, remove -chiave arg 2026-05-17 23:10:05 +02:00
NcProgramManager.crproj chore: add ConfuserEx obfuscator project config 2026-05-25 22:09:10 +02:00
NcProgramManager.csproj docs: add code review bug analysis report 2026-05-25 21:53:03 +02:00
NcProgramManager.sln refactor(rename): FanucProgramManager → NcProgramManager 2026-05-17 22:31:36 +02:00
nlog.config feat(15-logging): NLog structured logging — all output through NLog (v0.5 complete) 2026-05-18 23:57:27 +02:00
nunit.runsettings Initial commit: migrate from FanucProgramManager 2026-05-17 22:10:30 +02:00
packages.config feat(15-logging): NLog structured logging — all output through NLog (v0.5 complete) 2026-05-18 23:57:27 +02:00
Program.cs docs: add code review bug analysis report 2026-05-25 21:53:03 +02:00
README.md feat(16-fagor): Fagor CNC FTP support + validator gating 2026-05-25 20:27:18 +02:00

NcProgramManager

Software per il trasferimento di programmi CNC da e verso controller di macchine utensili. Supporta Fanuc (FOCAS), Heidenhain (LSV2), Siemens Sinumerik (FTP), Mitsubishi (FTP) e Fagor (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.lic valido (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 / fagor 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, Fagor
-password= password Credenziale per Heidenhain, Siemens, Mitsubishi, Fagor
-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

Invia programma a Fagor 8065:

NcProgramManager.exe -manufacturer=fagor -azione=Invia -ip=192.168.1.150 -porta=21 -username=user -password=pass -pathprogramma=C:\programmi\PROG1.nc

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/
Fagor FTP 21 Directory programmi: /Users/Prg/. Modelli supportati: 8060, 8065, 8070 (FTP nativo); 8055 (richiede opzione Ethernet)

Controller Fagor

Modelli supportati

Modello Supporto Note
8055 Solo con opzione Ethernet Richiede attivazione esplicita del server FTP via parametri macchina
8060 FTP nativo (sistema Windows-based)
8065 FTP nativo (sistema Windows-based)
8070 FTP nativo (sistema Windows embedded)

Modelli NON supportati

Modello Motivo
8055 base (senza Ethernet) Solo trasferimento RS232; il programma non implementa il protocollo seriale
8025 / 8030 / 8040 / 8050 Legacy, esclusivamente RS232

Regole nome programma

  • Lunghezza massima 24 caratteri
  • Caratteri ammessi: lettere (A-Z, a-z), cifre (0-9), spazi
  • Carattere ñ NON ammesso
  • Estensione predefinita: .nc (configurabile via codice)

Funzioni non supportate via FTP

  • ReadActiveProgramAsync — Fagor espone lo stato di esecuzione via DNC/OPC-UA, non via FTP
  • SelectMainProgramAsync — selezione del programma principale richiede DNC, non disponibile via FTP
  • Lettura runtime stato macchina (ReadAsync ritorna sempre Unknown)

Variabili d'ambiente per test integration con macchina reale

Variabile Valore Default
FAGOR_TEST_IP indirizzo IP macchina Fagor (test skippato se assente)
FAGOR_USER username FTP user
FAGOR_PASS password FTP pass

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