описание регистров для записи-чтения Modbus находится тут - plc_modbus_api
В примере описывается подключение инвертора Yaskawa v7.
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
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 должна выполняться один раз при запуске системы. Ее можно добавить в Software PLC системную процедуру ….HANDLER_INIT.plc
Адрес инвертора на шине Modbus установлен в значение 30 (0x1e) Скорость RS485 - 9600
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
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) в этот регистр
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 в регистр регистр
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 };