#include "plt.h" struct plc_t plc[PLC_NBR_MAX + 1]; static int plc_dbcb_0(void *para,int ncolumn,char ** columnvalue,char *columnname[]) { int i; struct dbcbparam_t* pcbparam = (struct dbcbparam_t*)para; struct plc_t* dev = &plc[1]; pcbparam->nrow++; log_dbg("%s, ++, row:%d, col:%d", __func__,pcbparam->nrow,ncolumn); for( i = 0; i < ncolumn; i++){ if( strcmp("info",columnname[i]) == 0){ strcpy(dev->szinfo,columnvalue[i]); }else if( strcmp("model",columnname[i]) == 0){ strcpy(dev->szmodel,columnvalue[i]); dev->model = plt_devm_str2nbr(dev->szmodel); } } pcbparam->ret = 0; log_dbg("%s, --,ret:%d",__func__,pcbparam->ret); return 0; } int plc_init() { int result; char *errmsg = NULL; sqlite3* db = NULL; char sql[1024]; struct dbcbparam_t cbparam; int ret = 0; int model = 0; log_dbg( "%s, ++",__func__); plt_lock_ctndb(); db = plt_get_ctndb(); sprintf(sql,"select * from plc"); cbparam.nrow = 0; result = sqlite3_exec(db,sql, plc_dbcb_0,(void*)&cbparam,&errmsg); plt_unlock_ctndb(); if( result != SQLITE_OK ){ log_dbg("%s, result != SQLITE_OK : %d", __func__, result ); ret = -1; }else if( cbparam.ret != 0){ log_dbg("%s, cbparam.ret != 0 : %d", __func__ , cbparam.ret); ret = -2; }else if( cbparam.nrow != 1 ){ log_dbg("%s, cbparam.nrow != 1 : %d", __func__ , cbparam.nrow); ret = -3; }else{ model = plc_get_model(); if( model == DEVM_SIMATIC_S7 ){ simatic_s7_init(); }else{ log_dbg("%s, unknown model:%d", __func__, model); ret = -4; } } log_dbg("%s, --, ret:%d", __func__,ret); return ret; } int plc_get_model() { return plc[1].model; } int plc_get_state() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_get_state( 1 ); }else{ return -1; } } char* plc_get_state_str() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_get_state_str( 1 ); }else{ return NULL; } } int plc_send_sm_cmd(int cmd ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_send_sm_cmd( 1, cmd ); }else{ return -1; } } int plc_set_pcs_shutdown(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_pcs_shutdown( 1, val ); }else{ return -1; } } int plc_set_main_sw_trip(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_main_sw_trip( 1, val ); }else{ return -1; } } int plc_set_ems_reset_signal(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_ems_reset_signal( 1, val ); }else{ return -1; } } int plc_set_ems_safety_relay_reset_signal(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_ems_safety_relay_reset_signal( 1, val ); }else{ return -1; } } int plc_set_ems_pwrspl_reset_signal(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_ems_pwrspl_reset_signal( 1, val ); }else{ return -1; } } int plc_set_ems_safety_relay_off_signal(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_ems_safety_relay_off_signal( 1, val ); }else{ return -1; } } int plc_set_fan_rly1(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_fanrly1( 1, val ); }else{ return -1; } } int plc_set_fan_rly2(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_fanrly2( 1, val ); }else{ return -1; } } int plc_bms_ctrl_pwrup() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_bms_ctrl_pwrup( 1 ); }else{ return -1; } } int plc_bms_ctrl_pwrup_without_shielding_signal() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_bms_ctrl_pwrup_without_shielding_signal( 1 ); }else{ return -1; } } int plc_set_40099(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_40099( 1, val ); }else{ return -1; } } int plc_set_transf_alarm_temp(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_alarm_temp( 1, val ); }else{ return -1; } } int plc_set_transf_err_temp(int val ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7){ return simatic_s7_set_dev_err_temp( 1, val ); }else{ return -1; } } // 0 : ok int plc_chk_state(int stat) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_chk_state( 1, stat ); }else{ return -1; } } int plc_get_dc_non_load_sw_stat( ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_dc_non_load_sw_stat( 1 ); }else{ return -1; } } int plc_get_dc_main_fuse_stat( ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_dc_main_fuse_stat( 1 ); }else{ return -1; } } int plc_get_dc_surge_arrester_stat( ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_dc_surge_arrester_stat( 1 ); }else{ return -1; } } int plc_get_ac_main_sw_stat() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_ac_main_sw_stat( 1 ); }else{ return -1; } } int plc_get_power_supply_mcb_status() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_power_supply_mcb_status( 1 ); }else{ return -1; } } int plc_get_mcb_status() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_mcb_status( 1 ); }else{ return -1; } } int plc_get_power_supply_24v_stat() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_power_supply_24v_stat( 1 ); }else{ return -1; } } int plc_get_e_stop_btn_stat() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_e_stop_btn_stat( 1 ); }else{ return -1; } } int plc_get_reset_push_btn_stat() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_reset_push_btn_stat( 1 ); }else{ return -1; } } int plc_get_safety_relay_stat() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_safety_relay_stat( 1 ); }else{ return -1; } } int plc_get_ac_surge_arrester_stat() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_ac_surge_arrester_stat( 1 ); }else{ return -1; } } int plc_get_pcs_remote_trip_fb() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_pcs_remote_trip_fb( 1 ); }else{ return -1; } } int plc_get_bms_pwrspl_ctrl_rly() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_bms_pwrspl_ctrl_rly( 1 ); }else{ return -1; } } int plc_get_pcs_shutdown_ctrl_rly() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_pcs_shutdown_ctrl_rly( 1 ); }else{ return -1; } } int plc_get_safety_relay_shutdown_ctrl_rly() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_safety_relay_shutdown_ctrl_rly( 1 ); }else{ return -1; } } int plc_get_main_sw_trip_ctrl_rly() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_main_sw_trip_ctrl_rly( 1 ); }else{ return -1; } } int plc_get_safety_relay_reset_rly() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_safety_relay_reset_rly( 1 ); }else{ return -1; } } int plc_get_ems_pwrspl_reset_rly() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_ems_pwrspl_reset_rly( 1 ); }else{ return -1; } } int plc_get_fan_ctrl_rly1() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_fan_ctrl_rly1( 1 ); }else{ return -1; } } int plc_get_fan_ctrl_rly2() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_fan_ctrl_rly2( 1 ); }else{ return -1; } } int plc_get_door_stat(int door_idx) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_door_stat( 1, door_idx ); }else{ return -1; } } int plc_get_fire_stat1_alarm() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_fire_stat1_alarm( 1 ); }else{ return -1; } } int plc_get_fire_stat2_alarm() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_fire_stat2_alarm( 1 ); }else{ return -1; } } int plc_get_fire_alarm() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_fire_alarm( 1 ); }else{ return -1; } } int plc_get_fire_fault() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_fire_fault( 1 ); }else{ return -1; } } int plc_get_gas_alarm1() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_gas_alarm1( 1 ); }else{ return -1; } } int plc_get_gas_alarm2() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_gas_alarm2( 1 ); }else{ return -1; } } int plc_get_transf_temp() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_transf_temp( 1 ); }else{ return -1; } } int plc_get_transf_temp_120_alarm() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_transf_temp_120_alarm( 1 ); }else{ return -1; } } int plc_get_transf_temp_130_alarm() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_transf_temp_130_alarm( 1 ); }else{ return -1; } } int plc_get_comm_st() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_comm_st( 1 ); }else{ return -1; } } char* plc_get_info_str(int idx) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_info_str( 1 ); }else{ return NULL; } } char* plc_get_model_str( ) { // int model = plc[1].model; // if( model == DEVM_SIMATIC_S7 ){ // return simatic_s7_get_model_str( 1 ); // }else{ // return NULL; // } return plc[1].szmodel; } int plc_get_chan_idx( ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_chan_idx( 1 ); }else{ return -1; } } int plc_get_step( ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_step( 1 ); }else{ return -1; } } int plc_get_tick( ) { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_tick( 1 ); }else{ return -1; } } int plc_get_comm_adr() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_comm_adr( 1 ); }else{ return -1; } } char* plc_get_sm_state_str() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_state_str( 1 ); }else{ return NULL; } } int plc_get_hb_from_dev() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_hb_from_dev( 1 ); }else{ return -1; } } int plc_get_ems_reset_sig() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_ems_reset_sig( 1 ); }else{ return -1; } } int plc_get_ems_safety_relay_reset_sig() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_ems_safety_relay_reset_sig( 1 ); }else{ return -1; } } int plc_get_ems_pwrspl_reset_sig() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_ems_pwrspl_reset_sig( 1 ); }else{ return -1; } } int plc_get_ems_safety_relay_off_sig() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_ems_safety_relay_off_sig( 1 ); }else{ return -1; } } char* plc_get_comm_state_str() { int model = plc[1].model; if( model == DEVM_SIMATIC_S7 ){ return simatic_s7_get_comm_state_str( 1 ); }else{ return NULL; } } int plc_get_tool_data(char* buf) { int model = plc[1].model; char temp_buf[2048]; if(model == DEVM_SIMATIC_S7){ sprintf(buf," "REVERSE" PLC "NONE" model:%s\n", plc[1].szmodel); simatic_s7_get_tool_data(1,temp_buf); strcat(buf,temp_buf); }else{ return -1; } return 0; } int plc_get_tbmqtt_data(char* buf) { int model = plc[1].model; char temp_buf[2048]; if(model == DEVM_SIMATIC_S7){ simatic_s7_get_tbmqtt_data(1,buf); }else{ return -1; } return 0; } int plc_get_cloud_data(int ctn_idx,char* buf) { int model = plc[1].model; char temp_buf[2048]; if(model == DEVM_SIMATIC_S7){ simatic_s7_get_cloud_data(ctn_idx,1,buf); }else{ return -1; } return 0; } int plc_get_bkds_data(char* buf) { int model = plc[1].model; char temp_buf[2048]; sprintf(buf,"\"plc\":{"); if(model == DEVM_SIMATIC_S7){ simatic_s7_get_bkds_data(1,temp_buf); strcat(buf,temp_buf); }else{ return -1; } strcat(buf,"}"); return 0; }