La funziona carica i messaggi da trasmettere nel buffer FIFO di trasmissione, il controller CAN controlla se messaggi nel buffer e quando il bus è libero trasmette il primo messaggio caricato e poi di seguito con tutti gli altri. Mentre il controller trasmette svuotando il buffer è possibile se vi è spazio (Funzione SysIsCANRxTxAv) caricare altri messaggi da trasmettere.
Il messaggio da trasmettere và creato in una variabile di tipo SYSCANMESSAGE il cui indirizzo và passato alla funzione nel parametro Msg.
Descrizione
Msg (@SYSCANMESSAGE)) Indirizzo variabile di tipo SYSCANMESSAGE che contiene il messaggio da trasmettere.
La funzione ritorna (BOOL) TRUE se messaggio trasferito nel buffer.

Esempi
Come utilizzare gli esempi.
Nell’esempio ogni secondo viene inviato un messaggio CAN di 4 bytes di lunghezza, il contenuto del messaggio è il valore della variabile UDINT TxData.
LogicLab (Ptp116, ST_SysCANTxMsg)
PROGRAM ST_SysCANTxMsg
VAR
Pulse : BOOL; (* Pulse *)
TxData : UDINT; (* Tx data *)
RSts : ARRAY[0..1] OF BOOL; (* Result status *)
CANMsg : SYSCANMESSAGE; (* CAN message *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_SysCANTxMsg"
// *****************************************************************************
// A 29 bit CAN message is sent at every 1 second.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
IF (SysFirstLoop) THEN
RSts[0]:=SysCANSetMode(CAN_250KBIT, 16#00000000, 16#00000000); //Accept all 11 and 29 bits messages
END_IF;
// -------------------------------------------------------------------------
// MESSAGE TRANSMISSION
// -------------------------------------------------------------------------
// At every 1 second a CAM message is sent.
IF NOT(SysIsCANRxTxAv(TRUE)) THEN RETURN; END_IF;
IF (SysClock1000 <> Pulse) THEN
Pulse:=SysClock1000; //Pulse
TxData:=TxData+1; //Tx data
// Prepare the CAM message and send it.
CANMsg.RmReq:=FALSE; //eFALSE:Data frame, eTRUE:Remote request
CANMsg.Length:=4; //Data length
CANMsg.MsgID:=16#92345678; //Message ID 29 Bit
CANMsg.Data[0]:=TO_BYTE(TxData/16#1000000); //Message data
CANMsg.Data[1]:=TO_BYTE(TxData/16#10000); //Message data
CANMsg.Data[2]:=TO_BYTE(TxData/16#100); //Message data
CANMsg.Data[3]:=TO_BYTE(TxData); //Message data
RSts[1]:=SysCANTxMsg(ADR(CANMsg)); //Eseguo trasmissione
END_IF;
// [End of file]