Ciao! Sei pronto per un’avventura entusiasmante nel mondo dell’automazione industriale? In questo articolo, ti guiderò passo dopo passo nella rivoluzionaria connessione di un PLC Siemens S7-1500 a un programma JavaScript, sfruttando il potente protocollo OPC UA. Ma non finisce qui! Ti mostrerò anche come catturare e salvare dati essenziali, come BOOL, INT, REAL e ARRAY, direttamente in un file Excel. Segui con attenzione ogni fase, e in men che non si dica, avrai un’applicazione perfettamente funzionante per interagire con il tuo PLC Siemens S7-1500. Iniziamo!

Prerequisiti

Per seguire questo tutorial, è necessario avere familiarità con i concetti di base della programmazione JavaScript e PLC Siemens. Assicurati di avere installato Node.js sul tuo computer e di avere accesso a un PLC Siemens S7-1500 con un server OPC UA integrato.

Passaggio 1: Configurare il PLC Siemens S7-1500

Per prima cosa, è necessario configurare il server OPC UA sul PLC Siemens S7-1500. Per farlo, segui questi passaggi:

  1. Avvia TIA Portal e apri il tuo progetto.
  2. Nella finestra “Device view”, seleziona il tuo PLC e fai clic destro su “Properties”.
  3. Vai alla scheda “General” e attiva “OPC UA Server”.
  4. Nella scheda “Endpoint”, imposta un indirizzo IP appropriato e porta (es. 4840) per il server OPC UA.
  5. Salva le modifiche e carica il progetto sul tuo PLC.

Passaggio 2: Installare i pacchetti Node.js

Per collegare il nostro programma JavaScript al PLC tramite OPC UA, utilizzeremo la libreria “node-opcua”, mentre per salvare i dati su un file Excel impiegheremo “exceljs”. Per installare entrambi i pacchetti, apri il prompt dei comandi o il terminale e inserisci il seguente comando:

npm install node-opcua exceljs

Passaggio 3: Creare il file JavaScript

Ora creiamo un nuovo file JavaScript (ad esempio, plc-connection.js) e importiamo le librerie appena installate:

const opcua = require("node-opcua");
const ExcelJS = require("exceljs");

Passaggio 4: Connettersi al PLC Siemens

Per connetterci al PLC, creiamo una funzione asincrona connectToPLC:

async function connectToPLC() {
  const endpointUrl = "opc.tcp://192.168.1.100:4840"; // Sostituisci con l'indirizzo IP del tuo PLC
  const client = opcua.OPCUAClient.create({ endpoint_must_exist: false });

  await client.connect(endpointUrl);
  console.log("Connected to the PLC");

  const session = await client.createSession();
  console.log("Session created");

  // Inserisci qui il codice per leggere e scrivere i dati

  await session.close();
  console.log("Session closed");

  await client.disconnect();
  console.log("Disconnected from the PLC");
}

connectToPLC();

Passaggio 5: Leggere e scrivere i dati PLC Siemens

All’interno della funzione connectToPLC, possiamo ora leggere e scrivere i dati dal PLC:

// Leggere dati
const readData = async (nodeId) => {
  const dataValue = await session.readVariableValue(nodeId);
  return dataValue.value.value;
};

// Scrivere dati
const writeData = async (nodeId, dataType, value) => {
  const writeValue = {
    nodeId: nodeId,
    attributeId: opcua.AttributeIds.Value,
    value: {
      value: { dataType: dataType, value: value },
    },
  };

  const statusCodes = await session.write([writeValue]);
  return statusCodes[0];
};

// Esempio di lettura e scrittura di dati
const main = async () => {
  const boolValue = await readData("ns=1;s=MyBOOL");
  const intValue = await readData("ns=1;s=MyINT");
  const realValue = await readData("ns=1;s=MyREAL");
  const arrayValue = await readData("ns=1;s=MyARRAY");

  console.log("BOOL:", boolValue);
  console.log("INT:", intValue);
  console.log("REAL:", realValue);
  console.log("ARRAY:", arrayValue);

  const statusCode = await writeData("ns=1;s=MyINT", opcua.DataType.Int16, 42);
  console.log("Write status:", statusCode.toString());
};

main();

Nota: Ricorda di sostituire i nodi ID (es. “ns=1;s=MyBOOL”) con i corrispondenti nodi ID del tuo PLC.

Passaggio 6: Salvare i dati su un file Excel

Per salvare i dati su un file Excel, creiamo una funzione saveToExcel:

const saveToExcel = async (data) => {
  const workbook = new ExcelJS.Workbook();
  const worksheet = workbook.addWorksheet("Dati PLC");

  worksheet.columns = [
    { header: "Tipo", key: "type", width: 10 },
    { header: "Valore", key: "value", width: 20 },
  ];

  for (const item of data) {
    worksheet.addRow(item);
  }

  await workbook.xlsx.writeFile("DatiPLC.xlsx");
  console.log("Dati salvati su DatiPLC.xlsx");
};

Infine, chiamiamo la funzione saveToExcel nella funzione main:

const main = async () => {
  // ... (codice precedente)

  const data = [
    { type: "BOOL", value: boolValue },
    { type: "INT", value: intValue },
    { type: "REAL", value: realValue },
  ];

  for (let i = 0; i < arrayValue.length; i++) {
    data.push({ type: `ARRAY[${i}]`, value: arrayValue[i] });
  }

  await saveToExcel(data);
};

main();

Ora il tuo programma JavaScript dovrebbe essere in grado di connettersi al PLC Siemens S7-1500, leggere e scrivere i dati e salvarli su un file Excel.

Conclusione

In questo articolo, ti ho mostrato come connettere un PLC Siemens S7-1500 a un programma JavaScript utilizzando il protocollo OPC UA e come salvare i dati su un file Excel. Ora dovresti essere in grado di utilizzare queste informazioni per creare applicazioni personalizzate per monitorare e controllare i tuoi sistemi di automazione basati su PLC.

Potresti anche estendere ulteriormente il tuo progetto integrando funzionalità aggiuntive, come la visualizzazione dei dati in tempo reale tramite un’interfaccia web o l’invio di notifiche in caso di anomalie. Inoltre, potresti esplorare altre librerie e strumenti per lavorare con diversi tipi di PLC e protocolli di comunicazione.

Buona fortuna con i tuoi progetti di automazione e non esitare a condividere i tuoi successi e le tue sfide con la comunità. Spero che queste informazioni ti siano state utili e ti auguro un’esperienza gratificante nel mondo dell’automazione industriale!

Se in questo preciso momento stai desiderando di mettere le mani per la prima volta su qualche PLC, allora…


Clicca Qui e Guarda questo Video Tutorial passo passo >>>

Condividi ora questa guida con i tuoi contatti: