Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //----------------------------------------------------------------------------------------------
- // Meditor Digital Strategies since 1989.
- // www.meditor.hu * meditor@meditor.hu
- // This file : csb18_drv.c
- // Created by: Végvári Lajos
- // Date : 2019-feb-17 + 08:54:41
- //----------------------------------------------------------------------------------------------
- // >> Sol omnibus lucet
- //----------------------------------------------------------------------------------------------
- #define CSB18_IP_BASE 0
- #define CSB18_OP_BASE 32
- #define CSB18_WDOG 63
- //----------------------------------------------------------------------------------------------
- //----------------------------------------------------------------------------------------------
- #include "/usr/local/include/modbus/modbus.h"
- //----------------------------------------------------------------------------------------------
- //----------------------------------------------------------------------------------------------
- modbus_t *CTX;
- unsigned short MBregs[64];
- unsigned char MBbits[64];
- char IHS_IpAdr[]="192.168.2.18";
- //----------------------------------------------------------------------------------------------
- //----------------------------------------------------------------------------------------------
- void WatchDogInvert(void)
- {unsigned short tmp_reg;
- modbus_read_registers(CTX, CSB18_WDOG, 1, &tmp_reg);
- tmp_reg&=1;tmp_reg^=1;
- modbus_write_registers(CTX, CSB18_WDOG, 1, &tmp_reg);
- }
- //----------------------------------------------------------------------------------------------
- unsigned int OpenCard (void)
- {unsigned int ret;
- ret=0;
- memset(&MBregs[0],0,sizeof(unsigned short)*64);memset(&MBbits[0],0,64);
- CTX=NULL;CTX=modbus_new_tcp(IHS_IpAdr, 502);
- if(modbus_connect(CTX)!=(-1))
- {StartHixTimer(0,500000);
- WatchDogInvert();
- MakeLogline(&DAQ_openok[1]);
- ret++;
- }else{modbus_free(CTX);CTX=NULL;MakeLogline(&DAQ_openerror[1]);}
- return(ret);
- }
- //----------------------------------------------------------------------------------------------
- void CloseCard (void)
- {
- if(CTX!=NULL){StopHixTimer();modbus_free(CTX);CTX=NULL;MakeLogline(&DAQ_close[1]);}
- }
- //----------------------------------------------------------------------------------------------
- //----------------------------------------------------------------------------------------------
- void CSB18_ModbusHandler(void)
- {
- // NO_COMMENT::clean_as_the_SUN
- modbus_read_bits (CTX,CSB18_IP_BASE,5,&MBbits[CSB18_IP_BASE]);
- modbus_write_bits (CTX,CSB18_OP_BASE,5,&MBbits[CSB18_OP_BASE]);
- modbus_read_registers (CTX,CSB18_IP_BASE,6, &MBregs[CSB18_IP_BASE]);
- modbus_write_registers (CTX,CSB18_OP_BASE,3, &MBregs[CSB18_OP_BASE]);
- }
- //----------------------------------------------------------------------------------------------
- //----------------------------------------------------------------------------------------------
- //----------------------------------------------------------------------------------------------
- // End of file.
- //----------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement