Version initiale

Dependencies:   mbed

Fork of Le_Pont_V10116 by SAGNES Christophe

Committer:
CS
Date:
Thu Mar 29 15:41:22 2018 +0000
Revision:
2:a10c8133d71c
Parent:
0:8b3c6f593515
Publish of "Le_Pont_V11003" in the team folder

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CS 0:8b3c6f593515 1 /*******************************************************************/
CS 0:8b3c6f593515 2 /* */
CS 0:8b3c6f593515 3 /* Modbus */
CS 0:8b3c6f593515 4 /* */
CS 0:8b3c6f593515 5 /* Gestion de la liaison Modbus esclave */
CS 0:8b3c6f593515 6 /* */
CS 0:8b3c6f593515 7 /* */
CS 0:8b3c6f593515 8 /*******************************************************************/
CS 0:8b3c6f593515 9 #ifndef _MODBUS_
CS 0:8b3c6f593515 10 #define _MODBUS_
CS 0:8b3c6f593515 11
CS 0:8b3c6f593515 12 #include "mbed.h"
CS 0:8b3c6f593515 13 #include <Serial.h>
CS 0:8b3c6f593515 14
CS 0:8b3c6f593515 15 #include "Constantes.h"
CS 0:8b3c6f593515 16 #include "Variable.h"
CS 0:8b3c6f593515 17
CS 0:8b3c6f593515 18 #include "time.h"
CS 0:8b3c6f593515 19
CS 0:8b3c6f593515 20
CS 0:8b3c6f593515 21
CS 0:8b3c6f593515 22 /***** Etats **********/
CS 0:8b3c6f593515 23 #define ARRET 0
CS 0:8b3c6f593515 24 #define ATTENTE 1
CS 0:8b3c6f593515 25 #define RECEPTION 2
CS 0:8b3c6f593515 26 #define RECU 3
CS 0:8b3c6f593515 27 #define TRAITE 4
CS 0:8b3c6f593515 28 #define EMISSION 5
CS 0:8b3c6f593515 29 #define FIN 6
CS 0:8b3c6f593515 30 #define ERREUR 7
CS 0:8b3c6f593515 31 #define TIMEOUT 8
CS 0:8b3c6f593515 32
CS 0:8b3c6f593515 33 /* ----------------------- Defines ------------------------------------------*/
CS 0:8b3c6f593515 34 #define MB_ADDRESSE_BROADCAST ( 0 ) /*! Modbus adresse de broadcast */
CS 0:8b3c6f593515 35 #define MB_ADDRESSE_MIN ( 1 ) /*! Smallest possible slave address. */
CS 0:8b3c6f593515 36 #define MB_ADDRESSE_MAX ( 247 ) /*! Biggest possible slave address. */
CS 0:8b3c6f593515 37 #define MB_FUNC_NONE ( 0 )
CS 0:8b3c6f593515 38 #define MB_FUNC_READ_COILS ( 1 )
CS 0:8b3c6f593515 39 #define MB_FUNC_READ_DISCRETE_INPUTS ( 2 )
CS 0:8b3c6f593515 40 #define MB_FUNC_WRITE_SINGLE_COIL ( 5 )
CS 0:8b3c6f593515 41 #define MB_FUNC_WRITE_MULTIPLE_COILS ( 15 )
CS 0:8b3c6f593515 42 #define MB_FUNC_READ_HOLDING_REGISTER ( 3 )
CS 0:8b3c6f593515 43 #define MB_FUNC_READ_INPUT_REGISTER ( 4 )
CS 0:8b3c6f593515 44 #define MB_FUNC_WRITE_REGISTER ( 6 )
CS 0:8b3c6f593515 45 #define MB_FUNC_WRITE_MULTIPLE_REGISTERS ( 16 )
CS 0:8b3c6f593515 46 #define MB_FUNC_READWRITE_MULTIPLE_REGISTERS ( 23 )
CS 0:8b3c6f593515 47 #define MB_FUNC_DIAG_READ_EXCEPTION ( 7 )
CS 0:8b3c6f593515 48 #define MB_FUNC_DIAG_DIAGNOSTIC ( 8 )
CS 0:8b3c6f593515 49 #define MB_FUNC_DIAG_GET_COM_EVENT_CNT ( 11 )
CS 0:8b3c6f593515 50 #define MB_FUNC_DIAG_GET_COM_EVENT_LOG ( 12 )
CS 0:8b3c6f593515 51 #define MB_FUNC_OTHER_REPORT_SLAVEID ( 17 )
CS 0:8b3c6f593515 52 #define MB_FUNC_ERROR ( 128 )
CS 0:8b3c6f593515 53 /* ----------------------- Type definitions ---------------------------------*/
CS 0:8b3c6f593515 54 typedef enum
CS 0:8b3c6f593515 55 {
CS 0:8b3c6f593515 56 MB_EX_NONE = 0x00,
CS 0:8b3c6f593515 57 MB_EX_ILLEGAL_FUNCTION = 0x01,
CS 0:8b3c6f593515 58 MB_EX_ILLEGAL_DATA_ADDRESS = 0x02,
CS 0:8b3c6f593515 59 MB_EX_ILLEGAL_DATA_VALUE = 0x03,
CS 0:8b3c6f593515 60 MB_EX_SLAVE_DEVICE_FAILURE = 0x04,
CS 0:8b3c6f593515 61 MB_EX_ACKNOWLEDGE = 0x05,
CS 0:8b3c6f593515 62 MB_EX_SLAVE_BUSY = 0x06,
CS 0:8b3c6f593515 63 MB_EX_MEMORY_PARITY_ERROR = 0x08,
CS 0:8b3c6f593515 64 MB_EX_GATEWAY_PATH_FAILED = 0x0A,
CS 0:8b3c6f593515 65 MB_EX_GATEWAY_TGT_FAILED = 0x0B
CS 0:8b3c6f593515 66 } Code_Erreur_t ;
CS 0:8b3c6f593515 67
CS 0:8b3c6f593515 68 #define TAILLE_MESSAGE_MAXI 20
CS 0:8b3c6f593515 69
CS 0:8b3c6f593515 70 typedef struct
CS 0:8b3c6f593515 71 {
CS 0:8b3c6f593515 72 U8 Etat_U8 ;
CS 0:8b3c6f593515 73 U8 Code_Erreur ;
CS 0:8b3c6f593515 74 U8 Trame_Recue_aU8 [TAILLE_MESSAGE_MAXI] ;
CS 0:8b3c6f593515 75 U8 Nb_Caracteres_Recus_U8 ;
CS 0:8b3c6f593515 76 U8 Trame_Reponse_aU8 [TAILLE_MESSAGE_MAXI] ;
CS 0:8b3c6f593515 77 U8 Nb_Caracteres_A_Emettre_U8 ;
CS 0:8b3c6f593515 78 } Ordre_Modbus_t ;
CS 0:8b3c6f593515 79
CS 0:8b3c6f593515 80 #define TAILLE_PILE_ORDRES 5
CS 0:8b3c6f593515 81
CS 0:8b3c6f593515 82
CS 0:8b3c6f593515 83 extern volatile Ordre_Modbus_t Ordres[TAILLE_PILE_ORDRES] ;
CS 0:8b3c6f593515 84
CS 0:8b3c6f593515 85
CS 0:8b3c6f593515 86
CS 0:8b3c6f593515 87 extern void vModbus_Init(int Baudrate) ;
CS 0:8b3c6f593515 88 extern void vModbus_Start() ;
CS 0:8b3c6f593515 89 extern void vModbus_Stop() ;
CS 0:8b3c6f593515 90 extern void vModbus_Reset() ;
CS 0:8b3c6f593515 91 extern void vModbus() ;
CS 0:8b3c6f593515 92
CS 0:8b3c6f593515 93
CS 0:8b3c6f593515 94
CS 0:8b3c6f593515 95
CS 0:8b3c6f593515 96 #endif