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

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

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

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


Сообщения - AndreyA

Страницы: [1] 2 3
1
Получилось, но тесты на оборудовании только завтра.
Использовал скрипты на сброс состояния кнопки. Переделка проекта в ПЛК требуется. По результату отпишусь.

2
Спасибо за ответ!
Но в данном случае реализация кнопки с "фиксацией" пока не понятна , так как  при старте завода группы  с обьектами стартуют в определенном порядке без воздействия на кнопки старт/стоп каждого агрегата. Программа в контроллере сама запускает агрегаты. В определенный момент оператор отключает  конвейер из группы обьектов кнопкой "стоп"  и после определенных проверок нажимает кнопку "старт" конвейера и тем самым конвейер снова работает в цепочке агрегатов в "АВТО" Режиме. Если выбрать кнопку с фиксацией, то при подаче команды на "старт" кнопка будет держать постоянно бит в программе ПЛК и при следующем старте будет ошибка так как команда наобьект приходит а группа остановлена, то есть каким то образом надо потом кнопку саму сбрасывать, если существует вариант сброса кнопки "с фиксацией" подскажите пожалуйста.
Да, актуальный проект скину на почту
После тестов кнопок "с фиксацией" получилось корректно получать данные на ПЛК , но вопрос  с сбросом кнопки остается.
Приведу пример: в ПЛК запуск осуществляется кнопками с импульсом на примере: меркер M427.0 включает М427.1 , для останова используется меркер М427.2. В случае с "фиксированной " кнопкой включить / выключить меркер М427.0 получиться но сброс М427.1 нет. Символов нет, так как пример небольшой.



3
Добрый день!
Версия 2.7.2
Кнопка "без фиксации" , 2 состояния (FALSE,TRUE) - при нажатии на кнопку переменная меняет свое значение на ОРС сервере примерно 1 сек.
Цикл опроса на сервере переменной 100мс, сервер и клиент на одной машине. Всего в проекте внешних переменных около 2000.
В режиме Run-Time когда на клиенте происходит нажатие на кнопку - второе состояние кнопки часто не меняется (надпись), меняется при длительном нажатии и удержании.
Куда можно посмотреть еще?
Заранее благодарю!

4
Ваши вопросы / Re: Границы переменных
« : 25 Апреля 2025, 12:34:50 »
Коллеги, Благодарю!
Я сделал кнопку на сброс, т.е. когда выскакивает баннер по превышению(понижению) уставки на главном окне, то оператор выбирает окно с объектом на котором аварийная ситуация и уже открыв окно он сбрасывает состояние Visible у баннера.

5
Ваши вопросы / Re: Границы переменных
« : 24 Апреля 2025, 10:50:21 »
Понятно. Благодарю

6
Ваши вопросы / Re: Границы переменных
« : 24 Апреля 2025, 10:33:21 »
Да, наверно запутал))
Вот текущий скрипт:
Суть такая: если значение переменной выходит за пределы Аварийных границ как HH или LL - баннер появляется, при  выходе переменной из аварийных уставок баннер пропадает.
Но! У меня баннер не пропадает пока он находиться между HighHigh и High  уставкой, хотя предупреждение отключено (Нigh) 
Код: (delphi)
begin
  if IsFirstChange then  // Выход, если это первое изменение
    Exit;

  if power1.Value < 100 then   // Выход, если мощность меньше 100
    Exit;

  // Основная логика (выполняется только если IsFirstChange=False и power1 >= 100)
  if (Pressure.GetValueZone = 2) or
   (temperatura.GetValueZone = 2) or
   (Pressure.GetValueZone = -2) or
   (temperatura.GetValueZone = -2) then
    Shape5.Visible := True
  else if (Pressure.GetValueZone >= 0) or (temperatura.GetValueZone >= 0) then
    Shape5.Visible := False;
end.

Пока нет не помогло

7
Ваши вопросы / Re: Границы переменных
« : 24 Апреля 2025, 09:33:55 »
В продолжение предыдущего поста :
Столкнулся с непонятной ситуацией : в скрипте я описывал ситуацию, при изменении Верхней аварийной границы появляется баннер, но баннер пропадает только если
Предупредительная граница не нарушена.  Прописывал условие для предупредительной границы -1 и +1. Ниже скрипт, но не помогает это условие:
Код: (delphi)
begin
  if not IsFirstChange then
  begin
    if temperatura.GetValueZone = 2 then
      Shape5.Visible := True
    else if temperatura.GetValueZone = 0 or
             temperatura.GetValueZone = 1 or
             temperatura.GetValueZone = -1 then
      Shape5.Visible := False;
  end;
end.

8
Ваши вопросы / Re: Границы переменных
« : 17 Апреля 2025, 15:15:54 »
Добрый день!
Необходимо чтобы по превышению  аварийных уставок становилось видимой форма ( прямоугольник),
небольшой скрипт "Нарушена граница":
Код: (delphi)
begin
  if not IsFirstChange then
    Shape5.Visible := True
  else if temperatura.GetValueZone = 0 then
  begin
    Shape5.Visible := False;
    AddMessage(Now, mkMessage, 'Температура в норме ', True, False);
  end;
end.


Проблема в том что форма остается видимой на экране, даже при том что значение переменной ушло в допустимые пределы.

upd:
Код: (delphi)
begin
  if not IsFirstChange then
  begin
    if temperatura.GetValueZone = 2 then
      Shape5.Visible := True
    else if temperatura.GetValueZone = 0 then
      Shape5.Visible := False;
  end;
end.

Работает так. И немного поменял % зоны нечувствительности

9
Еще бывает так когда не выбран интервал времени от: и до:,
в этом случае выводиться заголовок, данные не выводятся.

10
Здравствуйте!
Планируется ли в будущем добавить возможность импорта переменных напрямую без ОРС серверов по протоколу Modbus ASCII/RTU/TCP ?
Либо устройств работающих посредством Modbus драйвера с Simple Scada.
Очень актуально.
Благодарю!

11
Благодарю за оперативный ответ! Все работает

12
Я делал так - создал внутреннюю переменную(ые) Int64 с восстановлением, которая будет хранить количество секунд. Далее в скрипте "Прошла секунда" проверяется состояние переменных работы устройства. Если устройство работает, увеличиваем переменную с количеством секунд на 1. Для вывода времени на мнемосхему используем внутреннюю переменную типа String, используя функцию SecondsToString(КолвоСекунд) - получаем из числа секунд строку вида ЧЧ:ММ:СС.
Здравствуйте,
а не подскажете как вывести текстовую переменную на экран?
тип скрипта по переводу секунд в текстовую переменную у меня - по изменению переменной.
Код: (delphi)
var
  EAST_udiSeconds : Int64;
  vr_EAST_Harbor_WorkHoursAsString: string;
begin
  vr_EAST_Harbor_WorkHoursAsString := SecondsToStr(EAST_udiSeconds);
end.
на экран вывожу переменную TM_Text  и потом не понимаю что делать

13
Благодарю за ответ! Но получается что надо знать текущую дату и начальную чтобы вычислить разницу, и как я понял процедура будет запускаться 1 раз в час и вычислять время наработки. В моем случае подсчет может осуществляться несколько лет и наверно постоянный опрос 1 раз в час всего интервала у каждого механизма будет возможно замедлять работу скады. 

14
Здравствуйте!
Задача в следующем: необходимо подсчитывать время наработки механизмов и выводить часы наработки оператору (не рапорта) как переменные процесса.
сделал скрипт раз в секунду:
Код: (delphi)
const
  TIMEHOUR = 3600;
begin
  if (conv1.Value = 20) and (worksec_conv1.Value < TIMEHOUR) then
    worksec_conv1.Value := worksec_conv1.AsInt + 1;

  if (conv1.Value = 20) and (worksec_conv1.Value >= TIMEHOUR) then
  begin
    workhours_conv1.Value := workhours_conv1.AsInt + 1;
    worksec_conv1.Value := 0;
  end;
end.
Вопрос : как этот скрипт подвязать к 70 обьектам? В этом скрипте сделать копии или можно оптимизировать как шаблон?
conv1.Value = 20 - состояние конвейера (в работе)
Спасибо за внимание         

15
Изменив скорость на 19200 удалось подключиться и получить данные.
на мохе n-port 5130  пины 3 + DATA и 4- DATA
                                         |                |
на ТензоМ                         7 Data +  и 8 Data -

данные с орс ТензоМ забираю клиентом и с него уже в скаду попадают.
1раз в несколько часов орс Тензо М выдает неисправность по портам подключения. Одновременно с этим   пропадает возможность работы с приложением сервера Simple Scada,
проекты нельзя остановить\запустить. Данные на экранах визуализации не обновляются. Через диспетчер задач прерываю выполнение сервера ОРС Тензо М и перезагружаю сервер Simple Scada.

Буду пробовать поставить ОРС DA  сервер от Тензо М на отдельной машине и забирать удаленно.
Upd: возможно зависание было вызвано перегревом оборудования. У нас карьер и летом было довольно жарко. Месяц полет нормальный

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