#include "plt.h" int simatic_s7_nbr; struct simatic_s7_t simatic_s7[SIMATIC_S7_NBR_MAX + 1]; static int simatic_s7_dbcb_0(void *para,int ncolumn,char ** columnvalue,char *columnname[]) { int i; struct dbcbparam_t* pcbparam = (struct dbcbparam_t*)para; struct simatic_s7_t* dev = &simatic_s7[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("adr",columnname[i]) == 0){ dev->comm.adr = atoi(columnvalue[i]); }else if( strcmp("chan_idx",columnname[i]) == 0){ dev->comm.chanidx = atoi(columnvalue[i]); } } pcbparam->ret = 0; log_dbg("%s, --,ret:%d",__func__,pcbparam->ret); return 0; } int simatic_s7_get_dc_non_load_sw_stat( int idx ) { return simatic_s7[idx].dc_non_load_sw_stat; } int simatic_s7_get_dc_main_fuse_stat( int idx ) { return simatic_s7[idx].dc_main_fuse_stat; } int simatic_s7_get_dc_surge_arrester_stat( int idx ) { return simatic_s7[idx].dc_surge_arrester_stat; } int simatic_s7_get_ac_main_sw_stat( int idx ) { return simatic_s7[idx].ac_main_sw_stat; } int simatic_s7_get_power_supply_mcb_status( int idx ) { return simatic_s7[idx].power_supply_mcb_status; } int simatic_s7_get_mcb_status( int idx ) { return simatic_s7[idx].mcb_status; } int simatic_s7_get_power_supply_24v_stat( int idx ) { return simatic_s7[idx].power_supply_24v_stat; } int simatic_s7_get_e_stop_btn_stat( int idx ) { return simatic_s7[idx].e_stop_btn_stat; } int simatic_s7_get_reset_push_btn_stat( int idx ) { return simatic_s7[idx].reset_push_btn_stat; } int simatic_s7_get_safety_relay_stat( int idx ) { return simatic_s7[idx].safety_relay_stat; } int simatic_s7_get_ac_surge_arrester_stat( int idx ) { return simatic_s7[idx].ac_surge_arrester_stat; } int simatic_s7_get_pcs_remote_trip_fb( int idx ) { return simatic_s7[idx].pcs_remote_trip_fb; } int simatic_s7_get_bms_pwrspl_ctrl_rly( int idx ) { return simatic_s7[idx].bms_pwrspl_ctrl_rly; } int simatic_s7_get_pcs_shutdown_ctrl_rly( int idx ) { return simatic_s7[idx].pcs_shutdown_ctrl_rly; } int simatic_s7_get_safety_relay_shutdown_ctrl_rly( int idx ) { return simatic_s7[idx].safety_relay_shutdown_ctrl_rly; } int simatic_s7_get_main_sw_trip_ctrl_rly( int idx ) { return simatic_s7[idx].main_sw_trip_ctrl_rly; } int simatic_s7_get_safety_relay_reset_rly( int idx ) { return simatic_s7[idx].safety_relay_reset_rly; } int simatic_s7_get_ems_pwrspl_reset_rly( int idx ) { return simatic_s7[idx].ems_pwrspl_reset_rly; } int simatic_s7_get_fan_ctrl_rly1( int idx ) { return simatic_s7[idx].fan_ctrl_rly1; } int simatic_s7_get_fan_ctrl_rly2( int idx ) { return simatic_s7[idx].fan_ctrl_rly2; } int simatic_s7_get_door_stat( int idx, int door_idx ) { return simatic_s7[idx].door_limit_sw_stat[door_idx]; } int simatic_s7_get_fire_stat1_alarm( int idx ) { return simatic_s7[idx].fire_stat1_alarm; } int simatic_s7_get_fire_stat2_alarm( int idx ) { return simatic_s7[idx].fire_stat2_alarm; } int simatic_s7_get_fire_alarm( int idx ) { return simatic_s7[idx].fire_alarm; } int simatic_s7_get_fire_fault( int idx ) { return simatic_s7[idx].fire_fault; } int simatic_s7_get_gas_alarm1( int idx ) { return simatic_s7[idx].gas_alarm1; } int simatic_s7_get_gas_alarm2( int idx ) { return simatic_s7[idx].gas_alarm2; } int simatic_s7_get_transf_temp( int idx ) { return simatic_s7[idx].transf_temp; } int simatic_s7_get_transf_temp_120_alarm( int idx ) { return simatic_s7[idx].transf_temp_120_alarm; } int simatic_s7_get_transf_temp_130_alarm( int idx ) { return simatic_s7[idx].transf_temp_130_alarm; } int simatic_s7_get_state( int idx ) { return simatic_s7[idx].sm.state; } char* simatic_s7_get_state_str( int idx ) { return simatic_s7[idx].sm.szState; } int simatic_s7_chk_state( int idx, int stat ) { return simatic_s7_get_state(idx) == stat ? 0 : -1; } int simatic_s7_get_hb_from_dev(int idx) { return simatic_s7[idx].hb_from_dev; } char* simatic_s7_get_info_str(int idx) { return simatic_s7[idx].szinfo; } char* simatic_s7_get_model_str(int idx) { return simatic_s7[idx].szmodel; } int simatic_s7_get_chan_idx(int idx) { return simatic_s7[idx].comm.chanidx; } int simatic_s7_get_step(int idx) { struct statemachine_t* sm = &simatic_s7[idx].sm; return sm_get_step(sm); } int simatic_s7_get_tick(int idx) { return simatic_s7[idx].sm.tick; } int simatic_s7_get_comm_adr(int idx) { return simatic_s7[idx].comm.adr; } int simatic_s7_get_ems_reset_sig(int idx) { return simatic_s7[idx].ems_reset_sig; } int simatic_s7_get_ems_safety_relay_reset_sig(int idx) { return simatic_s7[idx].ems_safety_relay_reset_sig; } int simatic_s7_get_ems_pwrspl_reset_sig(int idx) { return simatic_s7[idx].ems_pwrspl_reset_sig; } int simatic_s7_get_ems_safety_relay_off_sig(int idx) { return simatic_s7[idx].ems_safety_relay_off_sig; } char* simatic_s7_get_comm_state_str(int idx) { struct statemachine_t* sm = &simatic_s7[idx].sm; return sm_get_szstate(sm); } static void* simatic_s7_thrd_main(void* param) { log_dbg("%s, ++",__func__); simatic_s7_sm_init(1); simatic_s7_comm_init(1); while( 1 ){ simatic_s7_comm_dac(1); simatic_s7_sm( 1 ); usleep(100000); // 100ms } log_dbg("%s, --",__func__); } static void* simatic_s7_thrd_aux(void* param) { struct simatic_s7_t* dev = &simatic_s7[1]; struct comm_t* comm = &dev->comm; int emshb_timer = 0; log_dbg("%s, ++",__func__); while(1){ usleep(100000); // 100ms if(emshb_timer++ >= 10){ // 1s emshb_timer = 0; dev->hb_to_dev++; if( comm_get_state(comm) == COMMST_NORMAL){ simatic_s7_set_dev_emshb(1, dev->hb_to_dev); }else{ usleep(100000); // 100ms } } } log_dbg("%s, --",__func__); } int simatic_s7_init() { pthread_t thrd; int ret = 0; int result; char *errmsg = NULL; char sql[1024]; struct dbcbparam_t cbparam; sqlite3* db = NULL; struct simatic_s7_t* dev = &simatic_s7[1]; log_dbg( "%s, ++",__func__); plt_lock_ctndb(); db = plt_get_ctndb(); sprintf(sql,"select * from simatic_s7"); cbparam.nrow = 0; result = sqlite3_exec(db,sql, simatic_s7_dbcb_0,(void*)&cbparam,&errmsg); plt_unlock_ctndb(); if( result != SQLITE_OK ){ log_dbg("%s, result != SQLITE_OK, result:%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{ simatic_s7_nbr = 1; if(pthread_create(&thrd, NULL, simatic_s7_thrd_main, NULL) != 0){ log_dbg( "%s, create simatic_s7 thrd main fail", __func__); ret = -1; }else if(pthread_create(&thrd, NULL, simatic_s7_thrd_aux, NULL) != 0){ log_dbg( "%s, create simatic_s7 thrd aux fail", __func__); ret = -2; } } log_dbg( "%s, --, ret:%d", __func__, ret); return ret; } int simatic_s7_send_sm_cmd( int idx, int val ) { int ret = 0; struct simatic_s7_t* dev = &simatic_s7[idx]; dev->cmd = val; leave: log_dbg("%s, idx:%d, cmd:%d, ret:%d",__func__, idx, val, ret); return ret; } int simatic_s7_get_cmd( int idx) { return simatic_s7[idx].cmd; } void simatic_s7_reset_cmd( int idx) { simatic_s7[idx].cmd = CMD_SM_DONE; } int simatic_s7_get_comm_st(int idx) { struct simatic_s7_t* dev = &simatic_s7[idx]; struct comm_t* comm = &dev->comm; return comm_get_state(comm); } int simatic_s7_bms_ctrl_pwrup(int idx) { int ret = -1; log_dbg("%s, ++", __func__); if( 0 == simatic_s7_set_dev_40099(idx, 1)){ if( 0 == simatic_s7_set_dev_ems_reset_signal(idx, 1)){ sleep(2); if( 0 == simatic_s7_set_dev_ems_safety_relay_reset_signal(idx, 1)){ ret = 0; } } } log_dbg("%s, --, ret:%d", __func__, ret); } int simatic_s7_bms_ctrl_pwrup_without_shielding_signal(int idx) { int ret = -1; log_dbg("%s, ++", __func__); if( 0 == simatic_s7_set_dev_ems_reset_signal(idx, 1)){ sleep(2); if( 0 == simatic_s7_set_dev_ems_safety_relay_reset_signal(idx, 1)){ ret = 0; } } log_dbg("%s, --, ret:%d", __func__, ret); } int simatic_s7_get_tool_data(int idx,char* buf) { struct simatic_s7_t* dev = &simatic_s7[idx]; struct statemachine_t* sm = &dev->sm; struct comm_t* comm = &dev->comm; char temp_buf[1024]; if(idx < 1 || idx > simatic_s7_nbr || buf == NULL){ return -1; } sm_get_summary(sm, temp_buf, sizeof(temp_buf)); sprintf(buf, " %s ", temp_buf); comm_get_summary(comm, temp_buf, sizeof(temp_buf)); strcat(buf,temp_buf); strcat(buf,"\n"); sprintf(temp_buf,"hb_from_dev:%05d hb_to_dev:%05d dc non-load sw:%d dc main fuse:%d dc surge arrester:%d ac main sw:%d pwrspl mcb:%d mcb:%d pwrspl 24v:%d e-stop btn:%d reset push btn:%d ", dev->hb_from_dev, dev->hb_to_dev, dev->dc_non_load_sw_stat, dev->dc_main_fuse_stat, dev->dc_surge_arrester_stat, dev->ac_main_sw_stat, dev->power_supply_mcb_status, dev->mcb_status, dev->power_supply_24v_stat, dev->e_stop_btn_stat, dev->reset_push_btn_stat); strcat(buf,temp_buf); sprintf(temp_buf,"safety relay:%d ac surge arrester:%d pcs remote trip fb:%d bms_pwrspl_rly:%d pcs_shutdown_rly:%d safety_relay_shutdown_rly:%d\n", dev->safety_relay_stat, dev->ac_surge_arrester_stat, dev->pcs_remote_trip_fb, dev->bms_pwrspl_ctrl_rly, dev->pcs_shutdown_ctrl_rly, dev->safety_relay_shutdown_ctrl_rly); strcat(buf,temp_buf); sprintf(temp_buf,"main_sw_trip_rly:%d safety_relay_reset_rly:%d ems_pwrspl_reset_rly:%d fan_ctrl_rly1|2:%d|%d ", dev->main_sw_trip_ctrl_rly, dev->safety_relay_reset_rly, dev->ems_pwrspl_reset_rly, dev->fan_ctrl_rly1, dev->fan_ctrl_rly2); strcat(buf,temp_buf); sprintf(temp_buf,"door1:%d door2:%d door3:%d door4:%d door5:%d door6:%d door7:%d door8:%d door9:%d ", dev->door_limit_sw_stat[1],dev->door_limit_sw_stat[2],dev->door_limit_sw_stat[3],dev->door_limit_sw_stat[4],dev->door_limit_sw_stat[5], dev->door_limit_sw_stat[6],dev->door_limit_sw_stat[7],dev->door_limit_sw_stat[8],dev->door_limit_sw_stat[9]); strcat(buf,temp_buf); sprintf(temp_buf,"fire stat1 alarm:%d fire stat2 alarm:%d fire alarm:%d fire fault:%d gas alarm1:%d gas alarm2:%d\n", dev->fire_stat1_alarm, dev->fire_stat2_alarm, dev->fire_alarm, dev->fire_fault, dev->gas_alarm1, dev->gas_alarm2); strcat(buf,temp_buf); sprintf(temp_buf,"transf_alarm_temp:%d,transf_err_temp:%d,transf_temp:%d 120_alarm:%d 130_alarm:%d ", dev->transf_alarm_temp,dev->transf_err_temp,dev->transf_temp, dev->transf_temp_120_alarm, dev->transf_temp_130_alarm); strcat(buf,temp_buf); sprintf(temp_buf,"ems reset sig:%d safety relay reset sig:%d power reset sig:%d safety relay off sig:%d\n", dev->ems_reset_sig, dev->ems_safety_relay_reset_sig, dev->ems_pwrspl_reset_sig, dev->ems_safety_relay_off_sig); strcat(buf,temp_buf); return 0; } int simatic_s7_get_tbmqtt_data(int idx,char* buf) { sprintf(buf, "'plc_dc_sw':%d,\ 'plc_dc_main_fu':%d,\ 'plc_dc_sa':%d,\ 'plc_ac_sw':%d,\ 'plc_pwrspl_mcb_stat':%d,\ 'plc_mcb_stat':%d,\ 'plc_pwrspl_24v_stat':%d,\ 'plc_estop_btn':%d,\ 'plc_rstpush_btn':%d,\ 'plc_safety_rly_stat':%d,\ 'plc_ac_sa_stat':%d,\ 'plc_pcs_rmt_trip_fb':%d,\ 'plc_bms_pwrspl_ctrl_rly':%d,\ 'plc_pcs_shutdown_ctrl_rly':%d,\ 'plc_safety_rly_shutdown_ctrl_rly':%d,\ 'plc_main_sw_trip_ctrl_rly':%d,\ 'plc_safety_rly_reset_rly':%d,\ 'plc_ems_pwrspl_reset_rly':%d,\ 'plc_fan_ctrl_rly1':%d,\ 'plc_fan_ctrl_rly2':%d,\ 'plc_door1':%d,\ 'plc_door2':%d,\ 'plc_door3':%d,\ 'plc_door4':%d,\ 'plc_door5':%d,\ 'plc_door6':%d,\ 'plc_door7':%d,\ 'plc_door8':%d,\ 'plc_door9':%d,\ 'plc_fire_stat1_alarm':%d,\ 'plc_fire_stat2_alarm':%d,\ 'plc_fire_alarm':%d,\ 'plc_fire_fault':%d,\ 'plc_gas_alarm1':%d,\ 'plc_gas_alarm2':%d,\ 'plc_tf_temp':%d,\ 'plc_tf_120_alarm':%d,\ 'plc_tf_130_alarm':%d,\ 'plc_state':'%s'", simatic_s7_get_dc_non_load_sw_stat( idx ), simatic_s7_get_dc_main_fuse_stat( idx ), simatic_s7_get_dc_surge_arrester_stat( idx ), simatic_s7_get_ac_main_sw_stat( idx ), simatic_s7_get_power_supply_mcb_status( idx ), simatic_s7_get_mcb_status( idx ), simatic_s7_get_power_supply_24v_stat( idx ), simatic_s7_get_e_stop_btn_stat( idx ), simatic_s7_get_reset_push_btn_stat( idx ), simatic_s7_get_safety_relay_stat( idx ), simatic_s7_get_ac_surge_arrester_stat( idx ), simatic_s7_get_pcs_remote_trip_fb( idx ), simatic_s7_get_bms_pwrspl_ctrl_rly( idx ), simatic_s7_get_pcs_shutdown_ctrl_rly( idx ), simatic_s7_get_safety_relay_shutdown_ctrl_rly( idx ), simatic_s7_get_main_sw_trip_ctrl_rly( idx ), simatic_s7_get_safety_relay_reset_rly( idx ), simatic_s7_get_ems_pwrspl_reset_rly( idx ), simatic_s7_get_fan_ctrl_rly1( idx ), simatic_s7_get_fan_ctrl_rly2( idx ), simatic_s7_get_door_stat( idx, 1), simatic_s7_get_door_stat( idx, 2), simatic_s7_get_door_stat( idx, 3), simatic_s7_get_door_stat( idx, 4), simatic_s7_get_door_stat( idx, 5), simatic_s7_get_door_stat( idx, 6), simatic_s7_get_door_stat( idx, 7), simatic_s7_get_door_stat( idx, 8), simatic_s7_get_door_stat( idx, 9), simatic_s7_get_fire_stat1_alarm( idx ), simatic_s7_get_fire_stat2_alarm( idx ), simatic_s7_get_fire_alarm( idx ), simatic_s7_get_fire_fault( idx ), simatic_s7_get_gas_alarm1( idx ), simatic_s7_get_gas_alarm2( idx ), simatic_s7_get_transf_temp( idx ), simatic_s7_get_transf_temp_120_alarm( idx ), simatic_s7_get_transf_temp_130_alarm( idx ), simatic_s7_get_state_str( idx )); } int simatic_s7_get_cloud_data(int ctn_idx,int idx,char* buf) { sprintf(buf, "'id':'plc_%d', 'plc_dc_sw':%d,\ 'plc_dc_main_fu':%d,\ 'plc_dc_sa':%d,\ 'plc_ac_sw':%d,\ 'plc_pwrspl_mcb_stat':%d,\ 'plc_mcb_stat':%d,\ 'plc_pwrspl_24v_stat':%d,\ 'plc_estop_btn':%d,\ 'plc_rstpush_btn':%d,\ 'plc_safety_rly_stat':%d,\ 'plc_ac_sa_stat':%d,\ 'plc_pcs_rmt_trip_fb':%d,\ 'plc_bms_pwrspl_ctrl_rly':%d,\ 'plc_pcs_shutdown_ctrl_rly':%d,\ 'plc_safety_rly_shutdown_ctrl_rly':%d,\ 'plc_main_sw_trip_ctrl_rly':%d,\ 'plc_safety_rly_reset_rly':%d,\ 'plc_ems_pwrspl_reset_rly':%d,\ 'plc_fan_ctrl_rly1':%d,\ 'plc_fan_ctrl_rly2':%d,\ 'plc_door1':%d,\ 'plc_door2':%d,\ 'plc_door3':%d,\ 'plc_door4':%d,\ 'plc_door5':%d,\ 'plc_door6':%d,\ 'plc_door7':%d,\ 'plc_door8':%d,\ 'plc_door9':%d,\ 'plc_fire_stat1_alarm':%d,\ 'plc_fire_stat2_alarm':%d,\ 'plc_fire_alarm':%d,\ 'plc_fire_fault':%d,\ 'plc_gas_alarm1':%d,\ 'plc_gas_alarm2':%d,\ 'plc_tf_temp':%d,\ 'plc_tf_120_alarm':%d,\ 'plc_tf_130_alarm':%d,\ 'plc_state':%d", idx, simatic_s7_get_dc_non_load_sw_stat( idx ), simatic_s7_get_dc_main_fuse_stat( idx ), simatic_s7_get_dc_surge_arrester_stat( idx ), simatic_s7_get_ac_main_sw_stat( idx ), simatic_s7_get_power_supply_mcb_status( idx ), simatic_s7_get_mcb_status( idx ), simatic_s7_get_power_supply_24v_stat( idx ), simatic_s7_get_e_stop_btn_stat( idx ), simatic_s7_get_reset_push_btn_stat( idx ), simatic_s7_get_safety_relay_stat( idx ), simatic_s7_get_ac_surge_arrester_stat( idx ), simatic_s7_get_pcs_remote_trip_fb( idx ), simatic_s7_get_bms_pwrspl_ctrl_rly( idx ), simatic_s7_get_pcs_shutdown_ctrl_rly( idx ), simatic_s7_get_safety_relay_shutdown_ctrl_rly( idx ), simatic_s7_get_main_sw_trip_ctrl_rly( idx ), simatic_s7_get_safety_relay_reset_rly( idx ), simatic_s7_get_ems_pwrspl_reset_rly( idx ), simatic_s7_get_fan_ctrl_rly1( idx ), simatic_s7_get_fan_ctrl_rly2( idx ), simatic_s7_get_door_stat( idx, 1), simatic_s7_get_door_stat( idx, 2), simatic_s7_get_door_stat( idx, 3), simatic_s7_get_door_stat( idx, 4), simatic_s7_get_door_stat( idx, 5), simatic_s7_get_door_stat( idx, 6), simatic_s7_get_door_stat( idx, 7), simatic_s7_get_door_stat( idx, 8), simatic_s7_get_door_stat( idx, 9), simatic_s7_get_fire_stat1_alarm( idx ), simatic_s7_get_fire_stat2_alarm( idx ), simatic_s7_get_fire_alarm( idx ), simatic_s7_get_fire_fault( idx ), simatic_s7_get_gas_alarm1( idx ), simatic_s7_get_gas_alarm2( idx ), simatic_s7_get_transf_temp( idx ), simatic_s7_get_transf_temp_120_alarm( idx ), simatic_s7_get_transf_temp_130_alarm( idx ), simatic_s7_get_state( idx )); } int simatic_s7_get_bkds_data(int idx,char* buf) { sprintf(buf,"\ \"info\":\"%s\",\"model\":\"%s\",\"chan_idx\":%d,\"adr\":%d,\"state\":\"%s\",\ \"tick\":%d,\"comm_state\":\"%s\",\"hb_from_dev\":%d,\"dc_non_load_sw\":%d,\"dc_main_fuse\":%d,\ \"dc_surge_arrester\":%d,\"ac_main_sw\":%d,\"power_supply_mcb\":%d,\"mcb\":%d,\"power_supply_24v\":%d,\ \"e_stop_btn\":%d,\"reset_push_btn\":%d,\"safety_relay\":%d,\"ac_surge_arrester\":%d,\"pcs_remote_trip_fb\":%d,\ \"door1\":%d,\"door2\":%d,\"door3\":%d,\"door4\":%d,\"door5\":%d,\ \"door6\":%d,\"door7\":%d,\"door8\":%d,\"door9\":%d,\"fire_alarm1\":%d,\ \"fire_alarm2\":%d,\"fire_fault\":%d,\"gas_spray\":%d,\"bms_pwrspl_ctrl_rly\":%d,\"pcs_shutdown_ctrl_rly\":%d,\ \"safety_relay_shutdown_ctrl_rly\":%d,\"main_sw_trip_ctrl_rly\":%d,\"safety_relay_reset_rly\":%d,\"ems_pwrspl_reset_rly\":%d,\"fan_ctrl_rly1\":%d,\ \"fan_ctrl_rly2\":%d,\"transf_temp\":%d,\"transf_temp_120_alarm\":%d,\"transf_temp_130_alarm\":%d,\"ems_reset_sig\":%d,\ \"ems_safety_relay_reset_sig\":%d,\"ems_pwrspl_reset_sig\":%d,\"ems_safety_relay_off_sig\":%d\ ", simatic_s7_get_info_str( idx ),"simatic_s7",simatic_s7_get_chan_idx( idx ),simatic_s7_get_comm_adr( idx ),simatic_s7_get_state_str( idx ), simatic_s7_get_tick( idx ),simatic_s7_get_comm_state_str( idx ),simatic_s7_get_hb_from_dev( idx ),simatic_s7_get_dc_non_load_sw_stat( idx ),simatic_s7_get_dc_main_fuse_stat( idx ), simatic_s7_get_dc_surge_arrester_stat( idx ),simatic_s7_get_ac_main_sw_stat( idx ),simatic_s7_get_power_supply_mcb_status( idx ),simatic_s7_get_mcb_status( idx ),simatic_s7_get_power_supply_24v_stat( idx ), simatic_s7_get_e_stop_btn_stat( idx ),simatic_s7_get_reset_push_btn_stat( idx ),simatic_s7_get_safety_relay_reset_rly( idx ),simatic_s7_get_ac_surge_arrester_stat( idx ),simatic_s7_get_pcs_remote_trip_fb( idx ), simatic_s7_get_door_stat( idx , 1 ),simatic_s7_get_door_stat( idx , 2 ),simatic_s7_get_door_stat( idx , 3 ),simatic_s7_get_door_stat( idx , 4 ),simatic_s7_get_door_stat( idx , 5 ), simatic_s7_get_door_stat( idx , 6 ),simatic_s7_get_door_stat( idx , 7 ),simatic_s7_get_door_stat( idx , 8 ),simatic_s7_get_door_stat( idx , 9 ),simatic_s7_get_fire_stat1_alarm( idx ), simatic_s7_get_fire_stat2_alarm( idx ),simatic_s7_get_fire_fault( idx ),simatic_s7_get_gas_alarm1( idx ),simatic_s7_get_bms_pwrspl_ctrl_rly( idx ),simatic_s7_get_pcs_shutdown_ctrl_rly( idx ), simatic_s7_get_safety_relay_reset_rly( idx ),simatic_s7_get_main_sw_trip_ctrl_rly( idx ),simatic_s7_get_safety_relay_reset_rly( idx ),simatic_s7_get_ems_pwrspl_reset_rly( idx ),simatic_s7_get_fan_ctrl_rly1( idx ), simatic_s7_get_fan_ctrl_rly2( idx ),simatic_s7_get_transf_temp( idx ),simatic_s7_get_transf_temp_120_alarm( idx ),simatic_s7_get_transf_temp_130_alarm( idx ),simatic_s7_get_ems_reset_sig( idx ), simatic_s7_get_ems_safety_relay_reset_sig( idx ),simatic_s7_get_ems_pwrspl_reset_sig( idx ),simatic_s7_get_ems_safety_relay_off_sig( idx ) ); }