Skip to main content

Esempio: CANopen

Prodotto: CODESYS CANopen Manager SL

Questo esempio riguarda l'interfaccia di programmazione dello stack di comunicazione del master CANopen e dello slave CANopen. Il progetto contiene esempi per SDO, NMT, diagnostica e configurazione dinamica dei parametri di comunicazione (baud rate, ID di rete, ID del nodo) e molti altri.

Descrizione

Il progetto contiene diversi esempi per l'utilizzo dell'interfaccia di programmazione dello stack CANopen Master e CANopen Slave. Gli argomenti trattati sono i seguenti:

  • SDO (expedited, segmented, block), accesso al dizionario degli oggetti

  • Gestione della rete (NMT)

  • Diagnostica (stato CANopen, EMCY)

  • Gestore di eventi per il dizionario degli oggetti e la macchina a stati del gestore CANopen

  • Riconfigurazione: modifica dinamica della velocità di trasmissione, dell'ID di rete e dell'ID del nodo

  • Accesso alla configurazione CAN tramite la libreria di diagnosi del dispositivo

Informazioni aggiuntive

Il progetto include uno stack CANopen Master e uno stack CANopen Slave che comunicano tra loro tramite CANbus. Per la messa in servizio del progetto sono necessarie due interfacce CAN interconnesse. Il modo più semplice per implementare ciò è utilizzare il file CODESYS Control Win controller e un adattatore USB-CAN a 2 canali, come PEAK PCAN-USB Pro o due adattatori a 1 canale.

Affinché la comunicazione funzioni, il rispettivo componente del sistema di runtime deve essere inserito nel file di configurazione.

Per ulteriori informazioni, vedere: Configurazione dell'esecuzione.

Il progetto può essere utilizzato anche su qualsiasi controllore con due interfacce CAN mediante un aggiornamento del dispositivo del PLC. Il progetto si articola in tre aree:

CANbus Examples

  • ChangeBaudrate: Modifica dinamica del baud rate in modalità runtime mediante riconfigurazione

  • EnableDisableCANbus: Attivazione e disattivazione dinamica di un CANbus in modalità runtime mediante riconfigurazione

  • GetCANbus: Ricerca generica di un'istanza CANbus ingegnerizzata tramite la libreria di diagnosi del dispositivo

CANopen Master examples

Diagnostica

  • ReceiveEMCYFromAllDevicesExample: Ricezione di messaggi di emergenza tramite CiA405.RECV_EMCY

  • ReceiveEMCYFromOneDeviceExample: Ricezione di messaggi di emergenza per uno specifico dispositivo tramite CIA405.RECV_EMCY_DEV

  • GetCANopenKernelStateExample: Rilevamento dello stato del kernel CANopen tramite CIA405.GET_CANOPEN_KERNEL_STATE

  • GetStateExample: Rilevamento dello stato CANopen di uno slave tramite CIA405.GET_STATE

Gestione della rete

  • GetCANopenManagerNodeIDExample: Rilevamento dell'ID del nodo CANopenManager tramite CiA405.

  • GET_CANOPEN_KERNEL_STATE: Invio di richieste NMT tramite CIA405.NMT

SDO (trasferimento dati aciclico)

  • ExpeditedReadExample: Lettura di un oggetto <= 4 byte tramite SDO (expedited transfer) tramite CiA405.SDO_READ4

  • ExpeditedWriteExample: Scrittura di un oggetto <= 4 byte tramite SDO (expedited transfer) tramite CIA405.SDO_WRITE4

  • SegmentedAndBlockReadExample: Lettura di un oggetto di qualsiasi lunghezza tramite SDO (trasferimento segmentato o trasferimento a blocchi) mediante CiA405.SDO_READ_DATA

  • SegmentedAndBlockWriteExample: Scrittura se un oggetto di qualsiasi lunghezza tramite SDO (trasferimento segmentato o trasferimento a blocchi) tramite CiA405.SDO_WRITE_DATA

Funzioni API generali

  • CANopenManagerAPI: Dimostra l'utilizzo di tutti i metodi e le proprietà dell'istanza CANopenManager

  • CANopenManagerEventHandler: Implementazione esemplare di un gestore di eventi CANopen

  • CANopenRemoteDeviceAPI: Dimostra l'uso di tutti i metodi e le proprietà di un'istanza CANopenRemoteDevice

CANopen Slave examples

Diagnostica

  • GetLocalDeviceInfoExample: Dimostra la lettura dello stato CANopen e dell'ID del nodo

Gestione della rete

  • ChangeNodeIDExample: Modifica dell'ID del nodo in modalità runtime

  • NMTExample: Modifica dello stato CANopen locale

Dizionario degli oggetti

  • ReadObjectExample1: Lettura di un oggetto dal dizionario oggetti locale

  • ReadObjectExample2: Esempio alternativo di ReadObjectExample1

  • WriteObjectExample1: scrittura del valore di un oggetto nel dizionario degli oggetti

  • WriteObjectExample2: Esempio alternativo di WriteObjectExample1

  • CountObjects: attraversa tutti gli oggetti del dizionario oggetti tramite _3SCSS.ObjectIterator

  • GetPDOInfo: esempio aggiuntivo di attraversamento del dizionario degli oggetti

  • ObjectDictionaryEventHandler: Implementazione esemplare di un gestore di eventi di dizionario oggetti

Requisiti di sistema e restrizioni

Sistema di programmazione

CODESYS Development System (versione 3.5.14.0 o successiva)

Sistema di esecuzione

CODESYS Control Win (versione 3.5.14.0)

Componenti aggiuntivi

Due interfacce CAN

Avviso

_example_icon.png SCARICAMENTO Progetto