User Tools

Site Tools


mycnc:et15-rs485-modbus-rus

Пример настройки шпинделя на Modbus RS485 на контроллере ET15

описание регистров для записи-чтения Modbus находится тут - plc_modbus_api

В примере описывается подключение инвертора Yaskawa v7.

Проверить, что отсутствует настройка расширителей IO портов на Modbus. При наличии удалить

Setup→Inputs/Outputs/Sensors→I/O Expand cards mapping

Important

Important!
If the Modbus device is controlled directly from the PLC procedure, "RS485/Modbus communication" 
checkbox should be UNCHECKED in Settings > Config > Technology > Mill/Lathe > Spindle 
configuration dialog 

Для Hardware PLC добавить файл с процедурами общения по Modbus

func-modbus.h
send_init_modbus()
{
 gvarset(60011,0);//set RTU
 gvarset(60012,9600);//set baud
 gvarset(60010,0x1e);//to Modbus Device # 0x1f
};
 
send_m3_modbus()
{
 gvarset(60019,0x31);//set Register Value
 gvarset(60030,0x1);//send value to Address
 
 timer=200;  do{timer--;}while(timer>0);
 
 gvarset(60019,0x31);//set Register Value
 gvarset(60030,0x1);//send value to Address
 
};
 
send_speed_modbus()
{
 gvarset(60019,val);//set Register Value //SPEED
 gvarset(60030,0x02);//send value to Address
 
};
 
send_m5_modbus()
{
 gvarset(60019,0);//set Register Value
 gvarset(60030,0x02);//send value to Address
 
 gvarset(60019,0x0);//set Register Value //OFF
 gvarset(60030,0x1);//send value to Address
 
};

Инициализация порта Modbus

Инициализация порта Modbus должна выполняться один раз при запуске системы. Ее можно добавить в Software PLC системную процедуру ….HANDLER_INIT.plc

Адрес инвертора на шине Modbus установлен в значение 30 (0x1e) Скорость RS485 - 9600

__HANDLER_INIT.plc
send_init_modbus() //Определение процедуры
{
 gvarset(60011,0);//set RTU
 gvarset(60012,9600);//set baud
 gvarset(60010,0x1e);//to Modbus Device # 0x1e
};
 
 
main() 
{
 
 send_init_modbus() //Вызов инициализации
 exit(99);
 
};

Регулировка скорости шпинделя

Регулировка скорости шпинделя может осуществляться из Software PLC “….SPN.plc” или из Hardware PLC “SPN.plc” При наличии в системе обоих файлов процедур, приоритет имеет Software PLC “….SPN.plc”

Регистр скорости в инверторе имеет адрес “0x02”

Пример Software PLC

__SPN.plc
send_speed_modbus()
{
  gvarset(60019,val);	//set Register Value //SPEED
  gvarset(60030,0x02);	//send value to Address
};
 
//set Spindle speed control via MODBUS
 
main()
{
  val=eparam*10;
  gvarset(7371,eparam); timer=2;do{timer--;}while(timer>0); //Spindle State
 
  send_speed_modbus();
 
 
  exit(99); //normal exit 
};

В зависимости от настроек инвертора по единицам задания скорости шпинделя, коэффициент “10” при задании переменной val необходимо изменить соответствующим образом.

При желании использовать Hardware PLC, текст процедуры “SPN.plc” будет полностью идентичным “__SPN.plc”

Включение шпинделя

Управляющий регистр инвертора имеет адрес “0x01”

Для включения шпинделя надо выставить “бит 0” (записать значение 1) в этот регистр

M03.plc
 
send_m3_modbus()
{
 gvarset(60019,0x1);	//set Register Value (1)
 gvarset(60030,0x1);	//send value to Address (1)
 
 timer=200;  do{timer--;}while(timer>0);
 
 //repeat the command for any case
 gvarset(60019,0x1);	//set Register Value (1)
 gvarset(60030,0x1);	//send value to Address (1)
 
};
 
 
main()
{
  val=eparam*10;
 
  timer=0;
  proc=plc_proc_spindle;
  gvarset(7371,eparam); timer=30;do{timer--;}while (timer>0); //Spindle Speed Mirror register
 
  send_speed_modbus();
  send_m3_modbus();
 
  gvarset(7370,1); timer=30;do{timer--;}while (timer>0); //Spindle State
 
  //delay after spindle started
  timer=spindle_on_delay;
  do{timer--;}while (timer>0); //delay for Spindle reach given speed
 
  exit(99);	//normal exit 
};

Выключение шпинделя

Управляющий регистр инвертора имеет адрес “0x01”

Для выключения шпинделя надо записать 0 в регистр регистр

M05.plc
send_m5_modbus()
{
 //set speed 0
 gvarset(60019,0);	//set Register Value (0)
 gvarset(60030,0x02);	//send value to Address //The speed register(2)
 
 //off spindle
 gvarset(60019,0x0);	//set Register Value //OFF (0)
 gvarset(60030,0x1);	//send value to Address //The control register (1) 
 
};
 
 
main()
{
  send_m5_modbus();
 
  proc=plc_proc_idle;
 
  if (spindle_off_delay!=0)
  {
    timer=spindle_off_delay;
    do { timer--; } while (timer>0);
  };
 
  gvarset(7370,0);  timer=30;do{timer--;}while(timer>0); //Spindle State
 
  exit(99);  //normal exit 
};
mycnc/et15-rs485-modbus-rus.txt · Last modified: 2023/01/20 15:41 by skirillov

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki