Постоянный мониторинг переменных

Post Reply
haitta
Posts: 3
Joined: Wed Oct 17, 2018 1:27 pm

Постоянный мониторинг переменных

Post by haitta » Wed Oct 17, 2018 1:39 pm

Здравствуйте.
Необходимо написать некоторые условия для постоянного мониторинга переменных и видачи результата на выходы контроллера независимо от выполнения g кода.
Есть ли возможность это сделать в каком-то файле, который работал бы постоянно фоново, пока запущено программное обеспечение станка.


Спасибо!

mycnc
Posts: 160
Joined: Thu May 10, 2018 2:42 pm

Re: Постоянный мониторинг переменных

Post by mycnc » Wed Oct 17, 2018 3:12 pm

Для этого был сделан Software PLC.
Процедуры Software PLC работают параллельно с основной системой управления.
Время цикла составляет 100мс. Для постоянного мониторинга используется конструкция вечного цикла

Code: Select all

do
{
}while(1);
После каждого прохода цикла, PLC освобождает управление и получает его следующий раз через 100мс.

Некоторые примеры есть на сайте документации
http://docs.pv-automation.com/plc/software_plc_examples

http://docs.pv-automation.com/plc/how_t ... eady_alarm

http://docs.pv-automation.com/plc/oil_change_counter

http://docs.pv-automation.com/plc/contr ... est_-_bv17

http://docs.pv-automation.com/plc/charge_pump


Если есть конкретное ТЗ - можно разобрать и предложить методы решения

haitta
Posts: 3
Joined: Wed Oct 17, 2018 1:27 pm

Re: Постоянный мониторинг переменных

Post by haitta » Thu Oct 18, 2018 12:42 pm

При положении оси Х относительно домашней позиции от 0 до 500мм. необходимо подавать сигнал на один выход, при положении оси Х от 500 до 1000мм подавать сигнал на другой выход.

В моем понимании должно быть что-то похожее на на это, но код явно не рабочий в этом виде:

Code: Select all

#include pins.h

main()
{
  pos_x=gvarget(5021);
 do					
 {
 	if (pos_x>=0)&(pos_x<500);
	portclr(Portname_2);
	portset(Portname_1);
	if (pos_x>=500)&(pos_x<1000);
	portclr(Portname_1);
	portset(Portname_2);
	 }while(1);			        
  exit(99);
};
Посоветуйте пожалуйста правильное решение.

mycnc
Posts: 160
Joined: Thu May 10, 2018 2:42 pm

Re: Постоянный мониторинг переменных

Post by mycnc » Thu Oct 18, 2018 3:19 pm

Во-первых, еще до создания Software PLC было сделано управление системой вытяжной вентиляции

Задается Ось, за которой следить, минимальная, максимальная координата и выход, который включить,
если координата находится в заданном диапазоне.

Заказчик, который это хотел, решил вопрос другим способом. Честно говоря, не знаю, пользуется ли этой опцией кто-нибудь. Если надо, можно проверить, работает ли это сейчас
mycnc-update-001-7.png

Во вторых, в Software PLC, без сомнения, это можно сделать.
Правда, в вашем коде есть ошибка (я не смотрю на синтаксис) -
текущая координата считывается только один раз при входе в процедуру, а надо ее мониторить внутри цикла.
А также лучше следить, что координата изменилась, и только при этом условии проверять остальные условия, чтобы не слать лишний раз в контроллер portset/portclr - лишний трафик контроллеру не желателен.

Примерно так

Code: Select all

#include pins.h

main()
{
  pos_x_old=gvarget(5021);
 do					
 {

pos_x=gvarget(5021);

if (pos_x!=pos_x_old)
{
	pos_x_old=pos_x;

 	if (pos_x<500)
 	{
	portset(Portname_1);
	portclr(Portname_2);
	}else
	{
   		if (pos_x<1000)
		{
		portclr(Portname_1);
		portset(Portname_2);
		};
	};
};

 }while(1);			        

  exit(99);
};

Всё это надо потестировать, разумеется.

haitta
Posts: 3
Joined: Wed Oct 17, 2018 1:27 pm

Re: Постоянный мониторинг переменных

Post by haitta » Mon Nov 05, 2018 1:01 pm

Тестирую первый вариант, на данный момент функционала хватает.

Добавил включение переферийного оборудования с выходов контроллера, но при нажатии кнопки STOP сбрасываются все выходы, кроме тех, которые добавлял. При нажатии кнопок E-Stop все работает, так как добавил сброс значений выходов в файл EST.plc.
Какую процедуру или файл запускает нажатие кнопки STOP и где можно подправить выключение выходов?
123.png
123.png (5.94 KiB) Viewed 49 times
Спасибо!

mycnc
Posts: 160
Joined: Thu May 10, 2018 2:42 pm

Re: Постоянный мониторинг переменных

Post by mycnc » Mon Nov 05, 2018 10:31 pm

Если во время нажания кнопки СТОП выполняется программа, то кроме остановки выполнения дополнительно запускается M02.plc
В остальных случаях (например при повторном нажатии) запускается OFF.plc

Post Reply