User Tools

Site Tools


plc:управление_шпинделем_подключенным_через_pulse-dir

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
plc:управление_шпинделем_подключенным_через_pulse-dir [2018/12/16 17:09] skirillovplc:управление_шпинделем_подключенным_через_pulse-dir [2018/12/16 17:34] skirillov
Line 101: Line 101:
 При этой скорости шпинделя на аналоговый выход необходимо выдать полный сигнал 10В, поэтому коэффициент "voltage ratio" выставлен в "1" (в сучае, например, шпинделя с диапазоном входного сигнала 0-5В, этот коэффициент был бы 0.5, чтобы на масимальной скорости получить сигнал 5В). При этой скорости шпинделя на аналоговый выход необходимо выдать полный сигнал 10В, поэтому коэффициент "voltage ratio" выставлен в "1" (в сучае, например, шпинделя с диапазоном входного сигнала 0-5В, этот коэффициент был бы 0.5, чтобы на масимальной скорости получить сигнал 5В).
  
-При вызове процедур PLC включения шпинделя (М03) и изменения скорости шпинделя (SPN.plc) dеличина скорости шпинделя приходит в переменной eparam. myCNC коннтроллеры имеют 12-бит регистры для значений ШИМ и ЦАП 0-10В. +При вызове процедур PLC включения шпинделя (М03.plc) и изменения скорости шпинделя (SPN.plc) значение скорости шпинделя приходит в переменной **eparam** 
 + 
 +myCNC контроллеры имеют 12-бит регистры для значений ШИМ и ЦАП 0-10В. 
 Это означает, что при максимальной скорости шпинделя в "24000 об/мин" и коэффициенте "1" в переменной eparam будет максимальное значение в 4095. Это означает, что при максимальной скорости шпинделя в "24000 об/мин" и коэффициенте "1" в переменной eparam будет максимальное значение в 4095.
  
Line 113: Line 115:
 <code>10000 * (4500/60) = 750 000</code> <code>10000 * (4500/60) = 750 000</code>
  
-Значение "RAW" регистра для частоты 750кГц должно быть+Значение "RAW" регистра для частоты 750кГц (750000Гц) должно быть
 <code> 750000/0.0014549=515499347 <code> 750000/0.0014549=515499347
 </code> </code>
  
-Если максимальная скорость соответствует величине eparam "2559", то значение коэффициента для получения "515499347" будет+Если максимальная скорость соответствует величине eparam "768", то значение коэффициента для получения "515499347" будет
 <code>515499347/768=671223 <code>515499347/768=671223
 </code> </code>
  
 +Установив эти величины в PLC процедуры M03.plc и SPN.plc мы получим генерацию на необходимой частоте 750кГц при установке скорости шпинделя 4500, а также плавную регулировку частоты во всем диапазоне от 0 до 4500 об/мин.
 +
 +
 +Метод оценки необходимого ускорения генератора.
 +
 +Единица задания Ускорения генератора по очень грубому приближению составляет 1 имп/с2. 
 +Это означает, что при таком ускорении до частоты в 1Гц генератор "разгонится" за 1сек.
 +
 +Если, в нашем случае максимальная частота составляет 750 000, то ускорение должно быть равно этой же величине, чтобы "разогнаться" до этой частоты за 1 сек.
 +
 +
 +Тестовые коды для процедур включения шпинделя и регулировки скорости шпинделя
 +
 +<code C M03.plc>
 +//Turn on Spindle clockwise
 +#include pins.h
 +#include vars.h
 +main()
 +{
 +  command=PLC_MESSAGE_SPINDLE_SPEED_CHANGED;
 +  parameter=eparam;
 +  message=PLCCMD_REPLY_TO_MYCNC;
 +  timer=0;do{timer++;}while (timer<10);//pause to push the message with Spindle Speed data
 +
 +  timer=0;
 +  proc=plc_proc_spindle;
 +
 +  val=eparam;
 +  if (val>0xfff) {val=0xfff;};
 +  if (val<0) {val=0;};
 +
 +  dac01=val;
 +
 +  portclr(OUTPUT_CCW_SPINDLE);
 +  portset(OUTPUT_SPINDLE);
 +
 +  gvarset(7370,1);//Spindle State
 +  timer=30;do{timer--;}while (timer>0); //
 +  gvarset(7371,eparam);//Spindle Speed Mirror register
 +
 +  //gvarset(7372,0);//Mist State
 +  //gvarset(7373,0);//Flood State
 +
 +
 +  gvarset(8131, 500000); timer=30;do{timer--;}while(timer>0); //Задержка на 30мс
 +  k=671223; 
 +  freq=val*k; //calculate the RAW frequency
 +  if (freq>515499348) {freq=515499348;};
 +  gvarset(8130,freq); timer=30;do{timer--;}while(timer>0); //Задержка на 30мс
 +
 +
 +  //delay after spindle started
 +  timer=spindle_on_delay;
 +  do{timer--;}while (timer>0); //delay for Spindle reach given speed
 +
 +  exit(99); //normal exit 
 +};
 +</code>
 +
 +<code C SPN.plc>
 +#include vars.h  
 +//set Spindle speed control via DAC
 +main()
 +{
 +  val=eparam;
 +  dac01=val; //send the value to the DAC register
 +
 +  //Change the Spindle State
 +  gvarset(7371,eparam);  timer=30;do{timer--;}while (timer>0);  //30ms delay
 +
 +  s=gvarget(7370);
 +  if (s!=0) //if spindle should be ON
 +  {
 +    k=671223; 
 +    freq=val*k; //calculate the RAW frequency
 +    if (freq>515499348) {freq=515499348;};
 +    gvarset(8130,freq); timer=30;do{timer--;}while(timer>0); //30ms delay
 +  };
 +  exit(99);//normal exit 
 +};
 +
 +</code>
 +
 +
 +{{mycnc-spindle-pulse-dir-005.png}}
 +{{mycnc-spindle-pulse-dir-006.png}}
  
plc/управление_шпинделем_подключенным_через_pulse-dir.txt · Last modified: 2021/08/24 11:28 by ivan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki