===== Как добавить обязательный хоуминг по нажатию аварийной кнопки и сигналу Servo ready =====
Для многих операций ЧПУ очень важно всегда знать точное положение станка. Процедура хоуминга (возврата в исходное положение) используется чтобы найти правильное положение машины, в случаях если есть какая-либо неисправность сервопривода или в ситуациях где была нажата аварийная кнопка.
Процедура хоуминга реализована с помощью **Software PLC**:
{{:plc:homing-handler-002.png}}
**ПРИМЕЧАНИЕ.** По умолчанию данная процедура ВЫКЛЮЧЕНА, поскольку в начале процедуры идет строка //exit(99);//, которая немедленно завершает работу PLC как только процедура запускается. Чтобы включить процедуру хоуминга, добавьте две косые черты перед строкой //exit(99);//, чтобы закомментировать ее. Таким образом PLC сможет работать корректно:
{{:plc:homing-handler-003-comment.png}}
Флаги хоуминга хранятся в глобальных переменных 7391-7399.
^ Переменная ^ Функция глобальной переменной ^
| 7391 | X axis homing flag |
| 7392 | Y axis homing flag |
| 7393 | Z axis homing flag |
| 7394 | A axis homing flag |
| 7395 | B axis homing flag |
| 7396 | C axis homing flag |
Флаги автоматически устанавливаются в «1», если:
- Программное обеспечение myCNC только что загружено.
- Нажата аварийная кнопка
- Сработал соответствующий сигнал готовности сервопривода (Servo ready).
Процедура хоуминга (в Software PLC) мониторит данные флаги и останавливает выполнение G-кода, если какой-либо из флагов установлен в 1.
main()
{
//exit(99);
a=0;
do{
hx=gvarget(7391); //monitor axes flags X, Y, Z and C
hy=gvarget(7392) ;
hz=gvarget(7393);
//hc=gvarget(7396);
a++; if(a>9){a=1;};
b=hx+hy*10+hz*100;
//b=hx+hy*10+hz*100+hc*1000;
c=a*10000000;
gvarset(99,c+b); //build variable to display which axis is not ready
home_old=home;
home=hx+hy+hz; //check if any of axis is not ready
//home=hx+hy+hz+hc; //check if any of axis is not ready
if (home!=0) //if any of axis is not ready, then ...
{
prg=gvarget(6065);
if (prg!=0) //Check if Program running is started and Stop it immediately
{
gvarset(0xffffff,1); //Stop Program
};
gvarset(9100,1); //display the message #1 on the screen, if any of home alarm activated
gvarset(8160,2); //set XHC Homing display
}else
{
gvarset(9100,0); //hide the message #1, if everything's ok
if (home_old!=home) //just home
{
gvarset(8160,0); //set XHC Homing display
};
};
}while(1);
exit(99);
};
Запись «1» в глобальную переменную #9100 покажет **Popup Message #0** (всплывающее окно №0). Информация, отображаемая во всплывающем сообщении, сохраняется в файле cnc-variables.xml. Программное обеспечение myCNC имеет виджет в настройках для добавления подобных всплывающих окон.
{{mycnc:configuration:mycnc-popup-cfg-001.png}}
* Нажмите кнопку **"+"**, чтобы добавить новое всплывающее окно
* **Popup message #** - ID номер всплывающего окна, которое нужно показать/скрыть. В программе зарезервированы переменные №9100-9200 для отображения подобных окон. \\ Например, переменная **№9114** используется для отображения всплывающего сообщения под номером **14**
* **Position X, Y** - используется для определения положения всплывающего окна на экране. Всплывающее окно по умолчанию будет показано в центре, если значение Position x,y не определено.
* **Size** - определяет размер всплывающего окна.
* **Header, Message, Footer** - виджет всплывающего сообщения содержит 3 раздела для отображения вашего сообщения. Вы можете определить текст для каждого раздела (заголовок, основное сообщение, нижний футер). Также можно задать размер раздела (ширина, высота) и размер шрифта.
* **Button Image, Size, Action** - во всплывающем сообщении может быть кнопка в нижней части окна. Файл для изображения этой кнопки, размер кнопки и привязанная к ней команда должны быть корректно определены, чтобы кнопка появилась во всплывающем окне.
* **Hide timeout** - (в разработке) всплывающее сообщение может исчезнуть автоматически по истечении заданного времени.
* **Variable** - одна из текстовых секций может содержать переменную в стиле C для выдачи значения данной переменной. Например, переменная №99 будет напечатана в разделе «Footer», как показано на скриншоте выше.
* **K** - коэффициент для вывода значения переменной. Например, если «K = 0,001», в то время как значение переменной равно «5000», то на экране будет выведено «5» (5000 * 0,001 = 5).
Пример всплывающего окна показан ниже:
{{mycnc:configuration:mycnc-popup-cfg-002.png}}
Ниже приводится описание подобного окна в XML для тех, кто предпочитает редактировать XML-файлы напрямую. Для большинства пользователей в этом нет необходимости, поскольку данный функционал можно использовать и настраивать напрямую из программы myCNC:
0
Всплывающее сообщение может содержать кнопку. У кнопки есть атрибуты
* buttonImage - изображение (skin) для кнопки
* buttonWidth - ширина кнопки в пикселях
* buttonHeight - высота кнопки в пикселях
* buttonAction - действие (команда) при нажатия кнопки
Любой из разделов подобного окна может отображать значение глобальной переменной, чтобы показать, например, текущее состояние или какой-либо таймер.
* Атрибут dest определяет, какую именно переменную следует отображать
* Атрибут K определяет коэффициент отображения для значения переменной
* сообщение раздела должно содержать строку по формату C, например, "%d" будет печатать значение только как целое число.
====Как отключить всплывающее окно====
Процедура хоуминга, как описывается выше, сделана через "HOMING_HANDLER.plc", в Software PLC.
Если вам нужно отключить процедуру и полностью удалить всплывающие сообщения, добавьте команду exit(99);
в начало процедуры «HOMING_HANDLER». По умолчанию данная строка закомментирована, и вы можете просто удалить символы комментария.
Чтобы изменения вступили в силу, вам нужно будет нажать кнопку «Сохранить код» и перезапустить программу.
Хоуминг ВЫКЛЮЧЕН:
main()
{
exit(99);
....
{{mycnc:configuration:mycnc-popup-cfg-003.png}}
Хоуминг ВКЛЮЧЕН:
main()
{
//exit(99);
....