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 riconfigurazioneEnableDisableCANbus: Attivazione e disattivazione dinamica di un CANbus in modalità runtime mediante riconfigurazioneGetCANbus: Ricerca generica di un'istanza CANbus ingegnerizzata tramite la libreria di diagnosi del dispositivo
CANopen Master examples
Diagnostica
ReceiveEMCYFromAllDevicesExample: Ricezione di messaggi di emergenza tramiteCiA405.RECV_EMCYReceiveEMCYFromOneDeviceExample: Ricezione di messaggi di emergenza per uno specifico dispositivo tramiteCIA405.RECV_EMCY_DEVGetCANopenKernelStateExample: Rilevamento dello stato del kernel CANopen tramiteCIA405.GET_CANOPEN_KERNEL_STATEGetStateExample: Rilevamento dello stato CANopen di uno slave tramiteCIA405.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) tramiteCiA405.SDO_READ4ExpeditedWriteExample: Scrittura di un oggetto <= 4 byte tramite SDO (expedited transfer) tramiteCIA405.SDO_WRITE4SegmentedAndBlockReadExample: Lettura di un oggetto di qualsiasi lunghezza tramite SDO (trasferimento segmentato o trasferimento a blocchi) medianteCiA405.SDO_READ_DATASegmentedAndBlockWriteExample: Scrittura se un oggetto di qualsiasi lunghezza tramite SDO (trasferimento segmentato o trasferimento a blocchi) tramiteCiA405.SDO_WRITE_DATA
Funzioni API generali
CANopenManagerAPI: Dimostra l'utilizzo di tutti i metodi e le proprietà dell'istanza CANopenManagerCANopenManagerEventHandler: Implementazione esemplare di un gestore di eventi CANopenCANopenRemoteDeviceAPI: 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à runtimeNMTExample: Modifica dello stato CANopen locale
Dizionario degli oggetti
ReadObjectExample1: Lettura di un oggetto dal dizionario oggetti localeReadObjectExample2: Esempio alternativo diReadObjectExample1WriteObjectExample1: scrittura del valore di un oggetto nel dizionario degli oggettiWriteObjectExample2: Esempio alternativo diWriteObjectExample1CountObjects: attraversa tutti gli oggetti del dizionario oggetti tramite_3SCSS.ObjectIteratorGetPDOInfo: esempio aggiuntivo di attraversamento del dizionario degli oggettiObjectDictionaryEventHandler: 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
SCARICAMENTO Progetto