Skip to main content

Collegamento dei propri I/O

Con questa funzionalità, gli I/O locali possono essere collegati a un controllore e utilizzati dall'applicazione IEC.

Modifica della descrizione del dispositivo

Nell'esempio UDSIoDrvExample.project fornito, vengono creati due ingressi e due uscite con la descrizione del dispositivo. Gli ingressi e le uscite sono collegati tramite una presa di dominio Unix. L'esempio si trova nella directory di installazione di CODESYS, nella sottodirectory CODESYS Control SL Extension Package\<version>\Examples\ExternalIoDrv.

_rtslext_img_io_connection.png

Per definire i propri ingressi e uscite, il file di descrizione del dispositivo SocketUnixIOTemplate.devdesc.xml deve essere adattato. Un XML parameter l'elemento deve essere definito per ciascuno degli ingressi e delle uscite ParameterId deve essere univoco qui all'interno del file di descrizione del dispositivo. Si consiglia semplicemente di numerare in ordine crescente senza spazi vuoti. Esempio: 1000 1001 1002 e così via: gli ingressi devono essere numerati da 1000, le uscite da 2000.

Avviso

Se la descrizione del dispositivo viene modificata, deve essere reinstallato nel repository dei dispositivi in modo che sia disponibile nel progetto.

<Parameter ParameterId="1000" type="std:DWORD">
   <Attributes channel="input"/>
   <Default/>
   <Name name="local:in1">/Namne>
</Parameter>

Nome

Descrizione

ParametroId

ID univoco mediante il quale viene chiamato l'input o l'output

genere

Definizione della larghezza dell'ingresso o dell'uscita. Viene fatto specificando un tipo di dati adeguatamente ampio come std:BYTE, std:WORD, std:DWORD, o std:LWORD. Sono consentiti anche altri tipi di dati semplici.

Attributi canale

input o output

Nome nome

Nome per il rispettivo ingresso o uscita

Inoltre, deve essere assegnato l'ID del dispositivo, che è definito in <DeviceIdentification>.A tale scopo viene fornito l'intervallo da 0x0001 8000 a 0x0001 80FF per evitare collisioni con dispositivi esistenti.

Importante

La descrizione del dispositivo e il driver I/O sottostante non devono essere istanziati più volte in un PLC perché l'ordine dei moduli non è fisso. Ciò può comportare che il driver I/O non sia in grado di garantire l'assegnazione.

Esempio Python

Nell'esempio Python uds_io_driver.py, vengono ricevute le uscite e scritti gli ingressi del dispositivo. I parametri di ingresso (uscite IEC) vengono passati come tuple di stringhe (paramType, paramValue) con l'ID parametro della descrizione del dispositivo come indice.

Il driver può gestire i tipi di dati USINT, UINT, UDINT, e ULINT. Altri tipi di dati devono essere convertiti in un tipo di dati adatto.

Esempio: ('2000': ('UDINT', '11'), '2001': ('UDINT', '22')}.I parametri di output sono nello stesso formato.

Anche per il peer, un parametro "output"/output è comunque un valore di output che deve essere trasportato "verso l'esterno" dall'applicazione IEC (ad esempio, scritto in GPIO reali). Il UDS_IODriver_0 classe implementata nell'esempio estende il ExternalFunctionBase class.Da cui deriva il nome della classe UDS_IODriver_ seguito dall'indice di istanza in ordine crescente.Il Call() è necessaria la funzione, che viene richiamata dal meccanismo di IEC. Le uscite IEC possono ora essere valutate qui e gli ingressi IEC possono essere trasferiti.

Utilizzo dell'interfaccia solo come membro di Linux codesysuser gruppo di utenti

Separazione del processo