Advertisement
meditor

Modbus/tcp cliens (linux//---------------------------------)

Feb 23rd, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.29 KB | None | 0 0
  1. //----------------------------------------------------------------------------------------------
  2. // Meditor Digital Strategies since 1989.      
  3. // www.meditor.hu * meditor@meditor.hu          
  4. // This file : csb18_drv.c                      
  5. // Created by: Végvári Lajos                    
  6. // Date      : 2019-feb-17 + 08:54:41          
  7. //----------------------------------------------------------------------------------------------
  8. // >> Sol omnibus lucet                        
  9. //----------------------------------------------------------------------------------------------
  10.  
  11. #define     CSB18_IP_BASE    0
  12. #define     CSB18_OP_BASE   32
  13. #define     CSB18_WDOG  63
  14.  
  15. //----------------------------------------------------------------------------------------------
  16. //----------------------------------------------------------------------------------------------
  17.  
  18. #include    "/usr/local/include/modbus/modbus.h"
  19.  
  20. //----------------------------------------------------------------------------------------------
  21. //----------------------------------------------------------------------------------------------
  22.  
  23. modbus_t    *CTX;
  24. unsigned short  MBregs[64];
  25. unsigned char   MBbits[64];
  26. char        IHS_IpAdr[]="192.168.2.18";
  27.  
  28. //----------------------------------------------------------------------------------------------
  29. //----------------------------------------------------------------------------------------------
  30.  
  31.  
  32. void WatchDogInvert(void)
  33.     {unsigned short tmp_reg;
  34.  
  35.      modbus_read_registers(CTX, CSB18_WDOG, 1, &tmp_reg);
  36.      tmp_reg&=1;tmp_reg^=1;
  37.      modbus_write_registers(CTX, CSB18_WDOG, 1, &tmp_reg);
  38.     }
  39.  
  40. //----------------------------------------------------------------------------------------------
  41.  
  42. unsigned int OpenCard (void)
  43.     {unsigned int   ret;
  44.  
  45.      ret=0;
  46.      memset(&MBregs[0],0,sizeof(unsigned short)*64);memset(&MBbits[0],0,64);
  47.  
  48.      CTX=NULL;CTX=modbus_new_tcp(IHS_IpAdr, 502);
  49.  
  50.      if(modbus_connect(CTX)!=(-1))
  51.      {StartHixTimer(0,500000);
  52.       WatchDogInvert();
  53.       MakeLogline(&DAQ_openok[1]);
  54.       ret++;
  55.      }else{modbus_free(CTX);CTX=NULL;MakeLogline(&DAQ_openerror[1]);}
  56.  
  57.      return(ret);
  58.     }
  59.  
  60. //----------------------------------------------------------------------------------------------
  61.  
  62. void CloseCard (void)
  63.     {
  64.      if(CTX!=NULL){StopHixTimer();modbus_free(CTX);CTX=NULL;MakeLogline(&DAQ_close[1]);}
  65.     }
  66.  
  67. //----------------------------------------------------------------------------------------------
  68. //----------------------------------------------------------------------------------------------
  69.  
  70. void CSB18_ModbusHandler(void)
  71.     {
  72.      // NO_COMMENT::clean_as_the_SUN
  73.  
  74.      modbus_read_bits   (CTX,CSB18_IP_BASE,5,&MBbits[CSB18_IP_BASE]);
  75.      modbus_write_bits  (CTX,CSB18_OP_BASE,5,&MBbits[CSB18_OP_BASE]);
  76.  
  77.      modbus_read_registers  (CTX,CSB18_IP_BASE,6, &MBregs[CSB18_IP_BASE]);
  78.      modbus_write_registers (CTX,CSB18_OP_BASE,3, &MBregs[CSB18_OP_BASE]);
  79.     }
  80.  
  81. //----------------------------------------------------------------------------------------------
  82. //----------------------------------------------------------------------------------------------
  83.  
  84. //----------------------------------------------------------------------------------------------
  85. // End of file.                                
  86. //----------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement