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.