Con questo articolo cercheremo di spiegare in che modo avviene la lettura dei dati di campo tramite Smeup ERP, quali tecnologie sono coinvolte e quali strumenti vengono utilizzati.

Terminologia

Prima di addentrarci nel cuore della questione, permettetemi una breve spiegazione dei termini che incontreremo.

  • Plugin: componente software che estende le funzionalità di Smeup Provider, in grado di scambiare dati con i  dispositivi fisici.
  • Smeup Provider: entità software che si pone come intermediaria tra i plugin e Smeup ERP.
  • K10: /copy che permette la lettura dei dati lato Smeup ERP
  • LOA37_XX: SCP_SET di configurazione dei plugin

Requisiti

E’ bene ricordare che, al fine di poter sfruttare l’integrazione con i dati di campo, sono necessari alcuni requisiti fondamentali.

  1. Una versione di Smeup ERP >= 4.1
  2. Una versione di Smeup Provider >= 4.1

Partiamo

Sempre più spesso abbiamo la necessità di integrare i dati provenienti da svariate tipologie di strumenti con il nostro software gestionale; questa necessità viene colmata dall’utilizzo di appositi plugin che permettono la lettura e/o scrittura di dati da e verso Smeup ERP.

In massimo sintesi, potremmo rappresentare la struttura con questa immagine

Rappresentazione schematica della struttura di raccolta dei dati

Come possiamo vedere, i dati provenienti dagli strumenti vengono letti attraverso Smeup Provider (ed i suoi plugin), convogliati verso Smeup ERP che ne permetterà la gestione attraverso le interfacce di LoocUp e WebUp.

Nella pratica

Per meglio comprendere in che modo tutto questo avvenga, prenderemo ad esempio una bilancia; un semplice strumento di misura presente in quasi tutte le realtà produttive.

Le bilance, solitamente, presentano una interfaccia di tipo seriale (RS232/485) che viene usata per il trasferimento dei dati verso altri dispositivi. Quesa porta di comunicazione sarà l’origine dei dati che andremo ad integrare.

Sfruttando un convertitore seriale/ethernet, collegheremo la bilancia al nostro Smeup Provider e, da qui, andremo a leggerne i dati in uscita.

Il grosso del lavoro verrà svolto dal plugin seriale che si occuperà di leggere i dati in arrivo dallo strumento e li renderà fruibili in Smeup ERP attraverso Smeup Provider.

Nota 
I plugin vengono installati nella seguente cartella: 
c:\Programmi(x86)\Smeup Provider\libs\plugins

Lato Smeup ERP andremo quindi a impostare la LOA37_BI, che configurerà il plugin al momento del suo avvio, come nell’esempio seguente :

--------------------------------- 
 LOA37_BI - Gestine bilancia SmeLab con plugin seriale
--------------------------------- 
::A37.SUPPRV DtaQ="SRVBIL" 
 -- unità fisica 
::SEZ Cod="BIL" Txt="Bilancia SmeLab" 
::A37.CLSSEZ Class="Smeup.smeui.uifield.connectors.seriale.SerialManagerPlugin" TOg="" Ogg="" Pgm="£L" 
 -- variabili di configurazione unità fisica 
::A37.CNFSEZ Name="Porta" Value="COM1" 
::A37.CNFSEZ Name="Baud" Value="9600" 
::A37.CNFSEZ Name="DataBit" Value="8" 
::A37.CNFSEZ Name="BitStop" Value="1" 
::A37.CNFSEZ Name="Parity" Value="0" 
::A37.CNFSEZ Name="FlowControl" Value="0" 
::A37.CNFSEZ Name="TipoLettura" Value="Comando" 
::A37.CNFSEZ Name="Comando" Value="N" 
::A37.CNFSEZ Name="Delay" Value="200" 
::A37.CNFSEZ Name="PosDec" Value="6" 
::A37.CNFSEZ Name="LungStr" Value="9" 
 -- unità logica 
::SUB Cod="B01" Txt="Bilancia 01" 
 -- varibili di configurazione unità logica 
::A37.SUBVAR Name="STRINGA" Txt="Stringa display bilancia" TpVar="IN" TpDato="STRING" DftVal="0" WhenRead="ONCHGDFT"
  -- variabili di messaggio 
::A37.MSGVAR Name="STRINGA" IO="B"

A questo punto saremo pronti per utilizzare la /copy K10 per la lettura del dato proveniente dalla bilancia; richiamando il comando *READ la variabile STRINGA verrà restituita con il valore letto dallo strumento, come da esempio seguente di codice RPG:

C                   CLEAR                   £K10SK                                       
C                   EVAL      £K10I_FU='SND'                                             
C                   EVAL      £K10I_ME='OUT'                                              
C                   EVAL      £K10I_SB='BI.BIL.B01'                       
C                   EVAL      £K10S_NM(1)='STRINGA'                      
C                   EVAL      £K10S_VA(1)='*READ'                                             
C                   EXSR      £K10

 Chiamate sincrone e asincrone

Nel caso della bilancia, la chiamata avverrà sempre in maniera sincrona, nel senso che saremo noi a decidere quando richiedere il dato; esiste però la possibilità che il dato arrivi in maniera asincrona.

Guardando il LOA37 di esempio, notiamo come, a livello di SUBVAR, esista una proprietà chiamata WhenRead: le impostazioni di tale proprietà determineranno in che modo l’evento verrà scatenato.

In questo caso, avendo impostato il valore ONCHGDFT, stiamo dicendo che, se il valore letto dalla bilancia cambia rispetto al valore indicato come default (DftVal=”0″), verrà generato un evento.

Dove finisce questo evento?

L’evento scatenato verrà comunicato al programma indicato nella proprietà Pgm=””. Il codice seguente mostra come l’evento viene ricevuto dal programma indicato (in questo caso un ‘X6‘) comunicando il valore della variabile ‘TARGA‘.

C                   EVAL      $F=%LOOKUP('TARGA':A37NAM)            
C                   IF        $F>0                                  
C                   EVAL      $TARGA=A37VAL($F)                     
C                   ENDIF

 

Altri casi di integrazione

Oltre alla bilancia, rappresentativa di tutti gli strumenti che presentano interfaccia seriale, sono stati sviluppati molti plugin che consentono la lettura/scrittura di dati dai dispositivi esterni.

  • PLC Plugin : permette l’interazione con i PLC delle macchine di produzione e la lettura dei dati da un OPCServer
  • Mitutoyo: è stato sviluppato un plugin specifico per la lettura dei dati dagli strumenti di misura, come calibri e spessimetri, di questa casa produttrice
  • IoT Plugin : permette l’interazione con dispositivi che espongono un servizio REST, scambiando dati in formato JSON
  • TCP Listener : permette la lettura di flussi TCP

Questi, e molti altri esempi di integrazione, sono visionabili presso lo showroom di Erbusco.