Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - azrael454

Страницы: [1]
1
Ошибки / Ошибка с фиксацией окон
« : 23 Октября 2020, 12:39:49 »
Добрый день. Появилась такая проблема недавно, после обновление было все ок, а через какое-то время открыл снова проект и окна больше не фиксируются после перемещения и как-будто им координаты не задаются.

Писал функцию, что по нажатию кнопки открывается окно с заданным положением. Галка Запоминать положение отключена, так как не однозначно мной трактуется (запоминать последнее положение после перемещения или запоминать последнее заданное положение (я ж могу из скрипта задавать положение)). Задаю положение окна из скрипта, по смене значений переменной даю другие координаты. - Потом все это похерилось, да и я уже понял, что слишком сложное сделал.

Начал тестить с просто по кнопке задавать координаты (нажали-открыли/записали, переместили, закрыли, нажали-открыли/записали). Галка все еще снята на запоминание положения. Так вот вроде окно должно быть в задаваемых координатах, а оно остается в последней позиции после перемещения.

Может я чего не так делаю?
Код
function TTMS_BT_CLR_CHNG (CallButt           :TM_Button;   //кнопка вызова экрана
                           CallWin            :TM_Window;

                           MenuSwitch         :TM_Variable; //отслеживание работы битов меню

                           Num_Bit,                         //номер бита
                           RON,GON,BON,                     //цвет нажатой кнопки
                           ROFF,GOFF,BOFF     :Integer      //цвет ненажатой кнопки
                           ):boolean;
begin
if GetBit(MenuSwitch.AsInt, Num_Bit) = true then begin      //нажата кнопка
  CallButt.States[1].Color := RGB(RON,GON,BON);             //поменяли цвет
  CallWin.ShowAll;
end
else begin                                                  //не нажата кнопка
  CallButt.States[1].Color := RGB(ROFF,GOFF,BOFF);          //поменяли цвет
  CallWin.CloseAll;
  CallWin.X :=80;
  CallWin.Y :=80;

end;
end;

Это функция которая вызывает окно, меняет цвет кнопки по биту слова, на которые затянуты кнопки. Пытался ее модифицировать, писал, что по изменению бита меняется цвет кнопки, закрывается окно и записываются координаты окна (заготовка, чтобы снова его открыть на первоначальном месте). В итоге он первый раз открывает там где надо, а после перемещения открывает там где остановились. Хотя галка на запоминание снята.

Есть сразу предложение: ввести возможность запрета перемещений окон. Сейчас такого параметра нет.


2
Ваши вопросы / Вопрос по шрифтам
« : 14 Июля 2020, 16:09:48 »
Добрый день. Какой шрифт вы используете в SCADA? Хочу некие "гайдлайны" сделать, чтобы соблюдать стилистику в дальнейших проектах.

 Появится ли возможность добавлять свои шрифты в будущем?

3
Ваши вопросы / Вопрос по фильтрам
« : 06 Марта 2020, 10:41:08 »
Добрый день, вопрос следующий.

Имеется датчик давления, с которого считывается аналог 4-20 мА, который идет через S7-1200, который потом выглядит как число от 0 до 27648. Датчик иногда капризничает и выдает меньше 4 мА, что сказывается на сигнале, у которого значение становится больше 27648 (специфика Сименса, дело не в этом). Зная этот факт, хочу ввести фильтр на значение давления. Ввел фильтр мин-макс, на диапазон датчика, но вижу картину на трендах, что он как бы просто рубит значения выше установленного предела. А надо так, чтобы при капризе датчика ( значение > 27648 или значение < 0), масштабируемое значение давление было равно 0. 

пытался скриптом по изменению переменных реализовать, но не увидел пока результата. Может что-то неправильно делаю?
Код: (delphi)
//ФИЛЬТР ПОМЕХ ЗНАЧЕНИЯ ДАВЛЕНИЯ С КОНТРОЛЛЕРА S7-1200
begin
if p5_BP1_DownArchiPress.Value < 0 then     //проверка на нижнюю границу аналогового значения
   p5_PressureSC.Value:=0;                  //обнуление масштабируемого значения давления
if p5_BP1_DownArchiPress.Value > 27648 then //проверка на верхнюю границу аналогового значения
   p5_PressureSC.Value:=0;                  //обнуление масштабируемого значения давления
end.
Есть вопрос и предложение:
вопрос: фильтр отклонений имеет смысл пробовать здесь использовать? так как по картинке примера работы я вижу примерно то, что и нужно, что он присваивает 0 при превышении значение на отклонение.
предложение: добавить в UI настройки фильтра мин-макс поля для ввода значений, которые будут присвоены при превышении верхней и нижней границ с возможностью их не указывать. мне кажется это сделает применение этого фильтра более гибким.

4
Добрый день.
Хотел бы спросить про порядок действий, связанный с переносом проекта с рабочей станции, на которой он разрабатывался, на физический сервер, где он должен будет работать.
Про папку Projects я вроде понял, так что поправьте, если не так:
  • я устанавливаю на сервере DemoTime, подцепляю эл.ключ, который активирует лицензию сервера.
  • переношу папку проектов на сервер
  • Вопрос: можно ли перенести БД с рабочей машины на сервер, чтобы не возиться с созданием таблиц итд?
  • Вопрос: позволяет ли KepОРС перенести теги, которые будут в него занесены на инженерной машине? Соответственно, я так же на сервер ставлю демо-Кер и потом ее активирую и добавляю экспортированные данные
  • Дальше, на клиентских компьютерах, я устанавливаю SS только как клиент и система готова.

Хотелось бы для себя утвердить некий список действий, пока видится такой.

5
Ваши вопросы / Работа с таблицей и БД
« : 06 Сентября 2019, 14:50:46 »
Добрый день.

Стоит задача вести статистику по установке. Данные в таблицу должны заноситься тогда, когда установка закончит свой цикл, т.е. есть условие, по которому происходит запись в таблицу БД, которая была отдельно создана в самой БД (т.е. это не trends_data итд). Данные должны заносится автоматически, без участия кнопок и прочего.
Как может выглядеть скрипт для внесения в базу данных одной записи и последующем чтении этой записи из нее в таблицу? Получилось сделать чтение по кнопке, но это немного не то. А запись вообще не получается.

И еще вопрос. В многих местах реализована выборка по времени. Делал на основе примера, получилось делать выборку за час, день итд. Но как сделать выборку, когда временной диапазон задается календарями, в которых прописывают границы временного отрезка?

Немного не понимаю синтаксис записи SQL запросов из скады.
Код
tblStat.RunSQL('SELECT * FROM `statp1` WHERE(`timestamp_p1` >= ' + aFromStr + ') AND (`timestamp_p1` <= ' + aToStr + ')', tsSaveFixRow);   

когда нужно заносить в ``? когда нужно ставить '' ? зачем ставятся ++?

Прошу не ругаться, раньше работал с WinCC, пока привычка осталась к той среде.

Страницы: [1]