Вопросы по скриптам в Simple-Scada 2

Автор Simple-Scada, 29 января 2016, 15:19:20

Simple-Scada

#570
Victor_P., можно не использовать свойство "Бит" которое есть у кнопок, а вместо этого записывать в переменную Val число в котором включен только один бит. Возьмем двоичные числа в которых включен только один бит и посмотрим чему они равны:
00000001 = 1
00000010 = 2
00000100 = 4
00001000 = 8
00010000 = 16
...и так далее. Т.е. чтобы включить второй бит и выключить все остальные достаточно записать в переменную Val число 2. Чтобы включить четвертый бит и выключить остальные нужно записать число 8. Поэтому можно не использовать свойство кнопок "Бит", а вместо этого просто оставить у кнопок одно состояние с нужным значением. Кнопка bt0 должна присваивать значение равное 1. Кнопка bt1, значение 2. Кнопка bt2, значение 4. Кнопка bt3, значение 8. Кнопка bt4, значение 16. Т.е. нажатие на любую кнопку оставит включенным только один бит. Правда в этом случае нужно поставить на событие OnDataChange кнопок один универсальный скрипт для "подсветки" включенного бита. Ещё вместо пяти кнопок можно использовать один компонент "Список", который отлично подойдёт в роли переключателя (он им и является по сути). Посмотрите пример во вложении, в нём реализован переключатель битов на основе кнопок и на основе списка. Напишите, если что-то непонятно.

* перед запуском демо-проекта откройте его в редакторе и пересохраните.

Victor_P.

#571
pan2000, спасибо, работает.
Simple-Scada, я сначала так и делал, только записывал кнопками значение в переменную 1, 2, 3, ... (мне не принципиально что записывать биты или значения),
но в этом случае при нажатии одной кнопки остальные становились не активными (прикрепил скриншоты).
Я так понял, вы предлагаете вообще не привязывать переменную к кнопкам, а значение присваивать скриптом.
Пример ваш не открылся, пишет сделан в версии 2.2.7.1, а у меня 2.2.7.0
Кстати, а почему кнопки становятся не активными, если привязання к ним переменная принимает значение не равному одному из состояний кнопки.

Simple-Scada

#572
Цитироватьно в этом случае при нажатии одной кнопки остальные становились не активными (прикрепил скриншоты).
Правильно, потому что у этих кнопок нет состояния для текущего значения переменной. Т.е. кнопка находится в одном из недопустимых состояний, поэтому она блокируется.

ЦитироватьПример ваш не открылся, пишет сделан в версии 2.2.7.1, а у меня 2.2.7.0
Скачать последнюю версию можно с сайта. Если у Вас лицензионная версия, то напишите на support@simple-scada.com.

ЦитироватьЯ так понял, вы предлагаете вообще не привязывать переменную к кнопкам, а значение присваивать скриптом.
Нет, все делается как обычно, только у кнопок оставляется только одно состояние. Проще понять если посмотреть пример, он очень простой.

Victor_P.

Спасибо, с примером стало понятно.
Сделал аналогичным образом у себя в проекте, все работает.
А вот сам пример ведет себя не адекватно (возможно только у меня на машине),- при выборе в комбобоксе все норм,
а вот при клике по кнопке вываливается с ошибкой, при этом при попытке нажать PrintScreen уводит винду в BSOD.

Simple-Scada

ЦитироватьА вот сам пример ведет себя не адекватно (возможно только у меня на машине),- при выборе в комбобоксе все норм,
а вот при клике по кнопке вываливается с ошибкой, при этом при попытке нажать PrintScreen уводит винду в BSOD.
Это из-за того что мы сохранили его своей отладочной версией редактора. Откройте проект и пересохраните его в Редакторе на Вашем ПК. Тогда он должен работать корректно.

Victor_P.

#575
Пересохранение не помогло.
Заметил, что в свойствах кнопок состояние указано как "Отпущена", хотя включен английский интерфейс и остальные свойства как кнопок так и других обьектов указываются на английском. Переключил систему на русский (думал, что причина в этом), но это тоже не помогло.
Собственно работоспособность данного примера мне и не нужна, что мне было в нем нужно я увидел, но если есть желание разобраться в причине такого поведения, то можем попробовать что-нибудь еще :) Если есть варианты.

Simple-Scada

Victor_P., исправили ошибку с отображением кнопок с одним состоянием. Архив со скадой обновили.

deldemo

#577
Здравствуйте.
Уважаемые разработчики, возможно ли добавить выделение цветом строки в таблице с автозаполнением.

Мое видение:
Есть таблица с автозаполнением. В этой таблице есть управляющий столбец который отвечает за выдиление цветом строки .
Если в этом столбце имеется ячейка со значением TRUE значит строка выделяется цветом

Simple-Scada

Здравствуйте.
Мы планируем расширение возможностей таблицы, но только после внедрения веб и OPC-UA. Ваше предложение рассмотрим.

serg

Подскажите ! А можно ли на один объект с одной булевой переменной написать 2 или более скрипта ? Например - при переменной = 1 начинает моргать и воспроизводит звуковой файл . Или лучше от доп. переменной ?

И ещё . Есть где скачать  изображения и анимации ?

Simple_Scada

#580
Здравствуйте!

ЦитироватьА можно ли на один объект с одной булевой переменной написать 2 или более скрипта ? Например - при переменной = 1 начинает моргать и воспроизводит звуковой файл . Или лучше от доп. переменной ?
Можно, но для описанной Вами задачи это не имеет смысла. Если нужно, чтобы объект при изменении значения связанной с ним переменной начинал мигать цветом, то Вам необходимо написать скрипт на событие OnDataChange объекта - пример скрипта мигания цветом можно найти здесь. Воспроизвести/остановить воспроизведение звукового файла можно при помощи процедур для работы со звуком.

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

serg

Спасибо . А можно ли сделать звуковую сигнализацию при потере связи с контроллером ( ПЛК100 Ethernet ) ?

deldemo

#582
ЦитироватьА можно ли сделать звуковую сигнализацию
Код: pascal
begin
  if MyVar.IsGoodQuality = False then // Где MyVar Ваша переменная на ПЛК
  AddMessage(Now, mkAlarm, 'Нет связи с ПЛК!', True, True);
end.
https://simple-scada.com/help/script/varisgoodquality.html
https://simple-scada.com/help/script/addmessage.html

Victor_P.

#583
Код на событие OnDataChange:
Код: pascal
var
  aImg: TM_Image;

begin
  if not (Sender is TM_Image) then Exit;
  aImg := Sender as TM_Image;

  if aImg.AsBool then aImg.AnimSpeed := 12
  else
    begin
      aImg.AnimSpeed := 0;
      aImg.Frame := 4;
    end;
end.
не выставляет рисунок в 4 кадр при остановке анимации.
Почему?

Simple-Scada

Victor_P., спасибо, исправили. Обновление опубликуем на след. неделе.