г. Тула, ул. Тимирязева, 99
+7 (920) 750-12-20
25.06.2014

Как по протоколу MODBUS узнать текущий режим управления ЭД и наличия ошибок для Гидроматик 101? В документации упоминается только регистр 0009, но не дается расшифровка его значений.

25.06.2014

Все состояния блока управления имеют индивидуальные коды меню экрана. Значения кодов экранов описаны ниже. 

Основная их часть подписана кириллицей, при этом все они имеют «говорящие названия». Видны все экраны меню, в т.ч. экраны различных сервисных режимов.

Прибор готов к работе всегда, кроме тех случаев:

  • когда он находится в состоянии «Авария» (ошибка) 
  • какой то из внешних сигналов блокирует дозирование (например ЭКМ)
  • прибор находится в меню настройки или меню выбора режима работы.


Состояние «Авария» , как и другие состояния прибора, определяется по текущему коду экрана меню, на дисплее прибора.

#define esd_stop 0x0e //Aварийный останов (по входу ESD)
#define all_error 0x0f //Aвария (с любым кодом ошибки )

Так же чтением кода экрана меню можно определить, в каком режиме управления РУ, ДУ, и т.д., он находится.

#define m_setup 0x01 //Ручное управление, Остановлен, выбор режима (находится в меню выбора режима дозирования , в позиции «Выбор РУ»)
#define m_nabor 0x02 //Ручное управление, Остановлен (готов к вводу значения подачи, в ожидании команды Пуск)
#define m_value 0x03 //Ручное управление, просмотр объема (находится в меню РУ , в подменю «Просмотр объема» счётчика перекаченной жидкости )
#define m_clr_value 0x04 //Ручное управление, обнуление объема (находится в меню РУ , в подменю «Обнуление объема» счётчика перекаченной жидкости )
#define m_work 0x05 //Ручное управление, дозирование (в Ручном режиме, идёт дозирование)
#define m_stop 0x06 //Ручное управление,аварийный стоп (Стоп в результате возникновения обстоятельств препятствующих продолжению процесса дозирования, например , перегрузка ЭД, сработал ЭКМ, перегрев ЭД или радиатора охлаждения блока)

#define r_setup 0x50 //Дистанционное управление, Остановлен, выбор режима (находится в меню выбора режима дозирования , в позиции «Выбор ДУ»)
#define r_nabor 0x51 //Дистанционное управление, Остановлен (готов к вводу значения подачи, в ожидании команды Пуск
#define r_value 0x52 //Дистанционное управление, просмотр объема (находится в меню ДУ , в подменю «Просмотр объема» счётчика перекаченной жидкости )
#define r_clr_value 0x53 //Дистанционное управление, обнуление объема (находится в меню ДУ , в подменю «Обнуление объема» счётчика перекаченной жидкости )
#define r_work 0x54 //Дистанционное управление, дозирование
#define r_stop 0x55 //Дистанционное управление, аварийный стоп (Стоп в результате возникновения обстоятельств препятствующих продолжению процесса дозирования, например , перегрузка ЭД, сработал ЭКМ, перегрев ЭД или радиатора охлаждения блока)


Блокирующие работу экрана состояния детально не видны, т.к. как правило такие ситуации все равно требуют вмешательства персонала на месте.

При обнаружен останова дозирования, можно использовать такой алгоритм:

  1. Проверяем, что блок в состоянии ДУ (по кодам экранов меню)
  2. Если режим ДУ подтвержден, то осуществляем запуск дозирования командой«Пуск».
  3. Проверяем, через паузу 0,5 сек, что команда принята.
  4. Если дозирование не началось , можно повторить команду«Пуск» N раз, или же можно сразу выдать сообщение на верхний уровень, что «Дозирование остановлено, требуется вмешательство оператора насосной установки».

 

Полный перечень кодов экрана общепромышленной версии "Гидроматик-101"

#define wait_tablo 0x00 //индикация надписей 1сек (короткие вспомогательные информационные экраны на экране блока при навигации по меню)

#define m_setup 0x01 //Ручное управление, Остановлен, выбор режима
#define m_nabor 0x02 //Ручное управление, Остановлен
#define m_value 0x03 //Ручное управление, просмотр объема
#define m_clr_value 0x04 //Ручное управление, обнуление объема
#define m_work 0x05 //Ручное управление, дозирование
#define m_stop 0x06 //Ручное управление, аварийный стоп

#define esd_stop 0x0e //Aварийный останов
#define all_error 0x0f //Aвария

#define sd_setup 0x10 //Малая доза, Остановлен, выбор режима
#define sd_nabor_h 0x11 //Малая доза, Остановлен, набор H
#define sd_level_reagent 0x12 //Малая доза,
#define sd_summadoza 0x13 //Малая доза, число доз и объем
#define sd_summadoza_clr 0x14 //Малая доза, обнулить число доз и объем
#define sd_nabor_t 0x15 //Малая доза, набор T
#define sd_wait 0x16 //Малая доза, задержка после дозы
#define sd_work 0x17 //Малая доза, дозирование
#define sd_pause 0x18 //Малая доза, пауза
#define sd_stop 0x19 //Малая доза, аварийный стоп

#define sdt_setup 0x20 //Малая доза по таймеру, Остановлен, выбор режима
#define sdt_nabor_h 0x21 //Малая доза по таймеру, Остановлен, набор H
#define sdt_nabor_n 0x22 //Малая доза по таймеру, Остановлен, набор N
#define sdt_level_reagent 0x23 //Малая доза по таймеру,
#define sdt_summadoza 0x24 //Малая доза по таймеру, число доз и объем (ТЕКУЩИЕ)
#define sdt_summadoza_clr 0x25 //Малая доза по таймеру, обнулить число доз и объем (ТЕКУЩИЕ)
#define sdt_summadoza_all 0x26 //Малая доза по таймеру, число доз и объем (ВСЕ)
#define sdt_summadoza_all_clr 0x27 //Малая доза по таймеру, обнулить число доз и объем (ВСЕ)
#define sdt_nabor_tp 0x28 //Малая доза по таймеру, набор TP
#define sdt_nabor_t 0x29 //Малая доза по таймеру, набор T
#define sdt_work 0x2a //Малая доза по таймеру, дозирование
#define sdt_wait 0x2b //Малая доза по таймеру, задержка после дозы
#define sdt_clr_doza 0x2c //Малая доза по таймеру, обнуление незавершенного числа доз
#define sdt_pause 0x2d //Малая доза по таймеру, пауза
#define sdt_stop 0x2e //Малая доза по таймеру, аварийный стоп

#define d_setup 0x2f //Доза, Остановлен, выбор режима
#define d_nabor_v 0x30 //Доза, Остановлен, набор V
#define d_nabor_q 0x31 //Доза, Остановлен, набор Q
#define d_level_reagent 0x32 //Доза,
#define d_summadoza 0x33 //Доза, число доз и объем
#define d_summadoza_clr 0x34 //Доза, обнулить число доз и объем
#define d_nabor_t 0x35 //Доза, набор Т
#define d_work 0x36 //Доза, дозирование
#define d_wait 0x37 //Доза, задержка после дозы
#define d_pause 0x38 //Доза, пауза
#define d_stop 0x39 //Доза,аварийный стоп

#define dt_setup 0x40 //Доза по таймеру, Остановлен, выбор режима
#define dt_nabor_v 0x41 //Доза по таймеру, Остановлен, набор V
#define dt_nabor_q 0x42 //Доза по таймеру, Остановлен, набор Q
#define dt_nabor_n 0x43 //Доза по таймеру, Остановлен, набор N
#define dt_level_reagent 0x44 //Доза по таймеру,
#define dt_summadoza 0x45 //Доза по таймеру, число доз и объем (ТЕКУЩИЕ)
#define dt_summadoza_clr 0x46 //Доза по таймеру, обнулить число доз и объем (ТЕКУЩИЕ)
#define dt_summadoza_all 0x47 //Доза по таймеру, число доз и объем (ВСЕ)
#define dt_summadoza_all_clr 0x48 //Доза по таймеру, обнулить число доз и объем (ВСЕ)
#define dt_nabor_tp 0x49 //Доза по таймеру, набор TP
#define dt_nabor_t 0x4a //Доза по таймеру, набор T
#define dt_work 0x4b //Доза по таймеру, дозирование
#define dt_wait 0x4c //Доза по таймеру, задержка после дозы
#define dt_clr_doza 0x4d //Доза по таймеру, обнуление незавершенного числа доз
#define dt_pause 0x4e //Доза по таймеру, пауза
#define dt_stop 0x4f //Доза по таймеру,аварийный стоп

#define r_setup 0x50 //Дистанционное управление, Остановлен, выбор режима
#define r_nabor 0x51 //Дистанционное управление, Остановлен
#define r_value 0x52 //Дистанционное управление, просмотр объема
#define r_clr_value 0x53 //Дистанционное управление, обнуление объема
#define r_work 0x54 //Дистанционное управление, дозирование
#define r_stop 0x55 //Дистанционное управление,аварийный стоп

#define calibr_setup 0x60 //калибровка, не пишем в eeprom
#define all_volume_setup 0x61
#define all_volume 0x62

#define blok_counters_error_setup 0x67
#define blok_counters_error 0x68
#define blok_counters_error_reset 0x69

#define blok_param_setup 0x70
#define blok_param_continue_pump_giving 0x71
#define blok_param_min_pump_giving 0x72
#define blok_param_max_pump_giving 0x73
#define blok_param_remoute 0x74
#define blok_param_avto_pusk 0x75

#define blok_dat_setup 0x80
#define blok_dat_hod 0x81
#define blok_dat_press 0x82
#define blok_dat_press_out 0x83
#define blok_dat_press_units 0x84
#define blok_dat_level 0x85
#define blok_dat_level_units 0x86

#define blok_inputs_setup 0x87
#define blok_impulse_input 0x88
#define blok_impulse_input_freq 0x89
#define blok_discret_input_ekm2 0x8a
#define blok_time_wait_ekm2 0x8b
#define blok_discret_input_esd 0x8c

#define blok_output_setup 0x98
#define blok_relay_motor 0x99
#define blok_optoOut1_motor 0x9a
#define blok_optoOut2_plunger_hod 0x9b
#define blok_vent_regim 0x9c
#define blok_analog_out_set 0x9d

#define blok_RS485_setup 0xa0
#define blok_RS485_number 0xa1
#define blok_RS485_speed 0xa2
#define blok_RS485_control 0xa3

#define blok_PID_Reg_setup 0xa7
#define blok_PID_Reg_control 0xa8
#define blok_PID_Reg_Kd_Kp_Ki 0xa9

#define blok_hydro_system_setup 0xc1
#define blok_hydro_system_pressure 0xc2
#define blok_hydro_system_pressure_lo 0xc3
#define blok_hydro_system_pressure_hi 0xc4
#define blok_hydro_system_viscosity 0xc5

#define blok_calibr_setup 0xd1
#define blok_calibr_pressure 0xd2
#define blok_calibr_viscosity 0xd3
#define blok_calibr_q_nom 0xd4
#define blok_calibr_z2 0xd5
#define blok_calibr_z1 0xd6
#define blok_calibr_pl_speed 0xd7
#define blok_calibr_pl_speed_motor_on 0xd8
#define blok_calibr_volume_1hod 0xd9
#define blok_calibr_ideal_volume_1hod 0xda

#define blok_system_setup 0xe1
#define blok_system_control_Upwr 0xe2
#define blok_system_Upwr 0xe3
#define blok_system_analog_input 0xe4
#define blok_system_freq_pwm 0xe5
#define blok_system_out_4_20 0xe6
#define blok_system_control_power 0xe7
#define blok_system_k_puls 0xe8
#define blok_system_sliv_Upwr 0xe9

#define servise_setup 0xf1
#define servise_setup_zero 0xf2
#define servise_counters_error_zero 0xf3 

    Добавить комментарий
    Введите код с картинки
    Необходимо согласие на обработку персональных данных