Impostare una configurazione di rete (solo sistemi ASEM HMI50)¶
La configurazione di rete può essere impostata tramite script C#.
Le API messe a disposizione sono le seguenti:
public PlaceholderChildNodeCollection<NetworkInterface> NetworkInterfaces { get; }
public IUAMethod RefreshMethod { get; }
public IUAMethod RebootMethod { get; }
public void Reboot();
public void Refresh();
NetworkInterfaces
rappresenta la lista di tutte le interfacce di rete. La struttura di un’interfaccia di rete è la seguente:
public IUAVariable InterfaceNameVariable { get; }
public bool DhcpEnabled { get; set; }
public IUAVariable DhcpEnabledVariable { get; }
public string IPAddress { get; set; }
public MaskedIPAddress IPAddressVariable { get; }
public string DNS1 { get; set; }
public IUAVariable DNS1Variable { get; }
public string DNS2 { get; set; }
public IUAVariable DNS2Variable { get; }
public string DefaultGateway { get; set; }
public IUAVariable DefaultGatewayVariable { get; }
public PlaceholderChildNodeCollection<MaskedIPAddress> AdditionalIPAddresses { get; }
Ottenere l’oggetto Sistema
Creare un oggetto Sistema1
all’interno di una cartella (es. Model
) e ottenere il nodo di progetto, ad esempio:
var model = Project.Current.Get("Model");
var systemNode = model.Get<QPlatform.System.System>("Sistema1");
Abilitazione DHCP
Per attivare il servizio di DHCP per la rete LAN basta individuare l’interfaccia di rete corrispondente ed impostare la proprietà DhcpEnabled.
foreach (var networkInterface in systemNode.NetworkInterfaces)
{
if (networkInterface.InterfaceName == "LAN")
networkInterface.DhcpEnabled = true;
}
Configurazione di rete statica
Per disabilitare il servizio di DHCP risulta necessario impostare la variabile DhcpEnabled a False e settare le proprietà per indirizzo IP e maschera.
foreach(var networkInterface in systemNode.NetworkInterfaces)
{
if (networkInterface.InterfaceName == "LAN")
{
networkInterface.DhcpEnabled = false;
networkInterface.IPAddress = "10.10.0.1";
networkInterface.IPAddressVariable.Mask = "255.255.0.0";
}
}
Solo per la rete LAN
sono configurabili degli indirizzi IP addizionali. Essendo questi opzionali, sarà necessario creare una variabile MaskedIPAddress
per ciascun IP addizionale e poi aggiungerla alla collezione degli AdditionalIPAddresses.
foreach (var networkInterface in systemNode.NetworkInterfaces)
{
if (networkInterface.InterfaceName == "LAN")
{
var additionalIPAddressVariable = InformationModel.MakeVariable<MaskedIPAddress>("MyAdditionalIP", OpcUa::DataTypes.String);
additionalIPAddressVariable.SetValue(ipAddress);
additionalIPAddressVariable.Mask = mask;
networkInterface.AdditionalIPAddresses.Add(additionalIPAddressVariable);
}
}
L’impostazione dei valori per i server DNS1, DNS2 e DefaultGateway in questo caso non avrebbe alcun effetto.
Solo per la rete WAN
risulta possibile impostare anche i valori per DNS1, DNS2 e DefaultGateway. L’impostazione di IP addizionali in questo caso porterebbe ad un errore.
Note
A seguito della disattivazione del servizio di DHCP, per cambiare i valori assegnati automaticamente per i server DNS1, DNS2 e DefaultGateway bisogna impostarli esplicitamente. Per questi parametri è ammesso non inserire alcun valore.
foreach(var networkInterface in systemNode.NetworkInterfaces)
{
if (networkInterface.InterfaceName == "WAN")
{
networkInterface.DhcpEnabled = false;
networkInterface.IPAddress = "10.10.0.1";
networkInterface.IPAddressVariable.Mask = "255.255.0.0";
networkInterface.DNS1 = "1.1.1.1";
networkInterface.DNS2 = "";
networkInterface.DefaultGateway = "192.168.1.1";
}
}
Metodi
Per aggiornare i valori memorizzati nell’oggetto Sistema1 (a seguito di un cambiamento esterno) invocare il metodo Aggiorna:
systemNode.Refresh();
Per riavviare il sistema invocare il metodo Riavvia:
systemNode.Reboot();
Nel progetto in allegato è presente un esempio di utilizzo del modulo Sistema tramite QStudio e le API C#.
Scarica il progetto di esempio da qui
.