Ошибка исправлена. Исправление будет доступно в следующей стабильной версии.
Вид для печати
еще вопрос. как из кода программы управлять командой
Простите не в той теме написал
Из программы ST? Что вы подразумеваете под управлением командой?
Опишите вашу задачу
Спасибо, все получилось.
Хотел ещё задать вопрос по архивам в MasterSCADA 4D. Насколько я понимаю, основной архив записывает все параметры с проставленной галочкой "архивировать". Чем он тогда отличается от "архива данных", который также можно добавить на АРМ?
Могу ли я записывать все изменяющиеся электрические параметры фидера в один из этих архивов? Можно ли открывать архив по кнопке из мнемосхемы?
Т.к. я сейчас сделал переход от основной мнемосхемы к окнах с графиками U(t), I(t) и т.д., заметил следующую особенность - график начинает отрисовывать с момента захода на окно, ранее данные отсутствуют. Графики не связаны с архивом? Это bug или feature?
Извините, что так много глупых вопросов. Заранее спасибо за ответ.
Необходим вывод мнемосхемы на один из двух мониторов по нажатию соответствующей кнопки.
Сделаны две одинаковые кнопки вызова мнемосхемы, отличающиеся настройкой "выводить на другом мониторе".
Есть проблема, если мнемосхема отображается на основном мониторе, нажатие на кнопку вывода на другой монитор не работает,
окно так и остается на основном мониторе.
Из второго монитора на основной все корректно- мнемосхема на втором закрывается и открывается на основном.
Подскажите как настроить, тестовый проект на всякий случай во вложении (3.9.1.4545 18Jun22(Demo)_18_06_22_02_00).
Подскажите, как в скрипте отследить, на каком мониторе открыто окно.
Кнопка вызова мнемосхемы на другой монитор не работает именно в том случае,
если окно уже открыто на основном мониторе.
Как настроить, чтобы по нажатию кнопки вызова мнемосхема открывалась на другом мониторе
вне зависимости от того, открыта она или нет на основном мониторе.
Так сделать нельзя.
Можно еще одно окно открыть. Укажите идентификатор у кнопки открытия на первом мониторе
подскажите пожалуйста. почему не компилируется такая конструкция
program main_program
FUNCTION a:bool
var_output
out:bool;
end_var
out:=0; a:=in;
END_function
(*TODO: TYPE PROGRAM CODE HERE*)
end_program.
вернее такая
program main_program
FUNCTION a:bool
var_output
out:bool;
end_var
out:=0; a:=out;
END_function
(*TODO: TYPE PROGRAM CODE HERE*)
end_program.
Вот пример правильной функции
function Get:bool
Get:=true;
end_function
PROGRAM MAIN_PROGRAM
VAR_INPUT
in:bool;
END_VAR
VAR_OUTPUT
out:bool;
END_VAR
(*TODO: TYPE PROGRAM CODE HERE*)
out:=Get();
END_PROGRAM
Здравствуйте. У меня еще один вопрос по поводу синхронизации. Если я помещу на сервер проект с MasterSCADA а на рабочих компьютерах укажу путь где лежит проект, то то такой вариант будет рабочим? Если да, то что произойдет в случаи разрыва связи между сервером и рабочим ПК, SCADA тоже встанет или продолжит работать?
Список проблем при работе с двумя мониторами.
1. Ваш вариант с открытием второго окна при назначении идентификатора у кнопки нам подходит, но
не работают связи окна с объектами типизации.
2. При открытии окна через вкладку действия (для события), игнорируется настройка окна "относительно
текущего монитора" - окно открывается все равно на основном мониторе. Другой способ открытия не применим
из-за того, что при открытии окна необходимо выполнять определенные команды.
3. Если у объекта есть меню управления, то его открытие по нажатию на изображение объекта работает корректно
только для типизованных объектов и не зависит от того, открыто окно на другом мониторе или нет.
Для объектов без типизации открыть меню на другом мониторе не возможно, если оно открыто уже на другом мониторе.
Такое разное поведение скады при открытии окон сбивает с толку пользователя, поэтому всетаки хотелось бы решить
эту проблему.
4. Не работает настройка "распологать на нескольких мониторах".
Проблемы перечислены в порядке приоритета и надеемся на Вашу помощь в их устранении. Все проблемы проявляются в
приложенном тестовом проекте. У нас ключевая версия, тестировалось на последней Beta.
1. Этот функционал только начинает разрабатываться. В новой версии программы будет возможность выбирать у объектов, какой архив использовать. Пока этого нет, используется всегда "Основной архив".
2. Любые параметры можно архивировать, в том числе и электрические параметры фидера.
3. По поводу графика напишите, пожалуйста, в техподдержку на почту support.ms4d@insat.ru. Там специалисты более подробно разберут Вашу ситуацию.
Еще есть проблема при работе с двумя мониторами.
5. При установке настройки "не выгружать из памяти при закрытии" и "загрузить все при старте" окна все равно открываются
на основном мониторе при установленной настройке "открыть на другом мониторе" (в настройках кнопки вызова окна).
(см. - в тестовом проекте при установке этих настроек при нажатии на кнопки "Цех1" или "Цех2" окна открываются только на одном мониторе).
не могу разобраться. не компилируется функциональный блок. подскажите пожалуйста
FUNCTION testz0y0 :bool(*тест концевиков телеги оба =1*)
var_input
z0,y0:bool;
end_var
testz0y0:=z0 and y0;
end_function
function TestState:bool(* состояние=0 тулега готова к передвижению*)
var_input сост:bool; end_var(* состояние=1 движение пошло*)
teststate:=сост;
end_function
function testz0y01:bool (*проверка что движение по у,z пошло*)
var_input z0,y0:bool; end_var
testz0y01:=z0 or y0;
end_function
function_block on_off
var_input in:bool; end_var
var_output out:bool; end_var
out:=1
end_function_block
PROGRAM MAIN_формы_на_заливку
VAR_INPUT
stop,start,z0,y0,сост:bool;(*start пуск программы с кнопки без фиксации*)
END_VAR
VAR_OUTPUT
сост2,сост1,вых_сост,пуск,testz0y0,testz0y01,кн_ст арт:bool;
END_VAr
var start_pr:bool; end_var
if start then start_pr:=1 end_if; (*старуем и стопарим программу*)
if stop then start_pr:=0 end_if;
if start_pr then пуск:=1 else пуск:=0 end_if;
if start_pr and testz0y0(z0,y0) then testz0y0:= 1 else testz0y0:=0 end_if;
if start_pr and (teststate(сост)=0) then сост1:=0;(* готовность к движению*)
else сост1:=1 end_if;
if start_pr and (teststate(сост)) then сост2:=1;(*движение пошло по x *)
else сост2:=0 end_if;
if start_pr and testz0y01(z0,y0) then testz0y01:= 1 else testz0y01:=0 end_if;
on_off(z0:=in,кн_старт:=out);
(*TODO: TYPE PROGRAM CODE HERE*)
кн_старт:=on_off.out;
END_PROGRAM.
Так что в ошибках выдается?
воспринимает on_off как необъявленную переменную
Правильно. Нужно же объявить теперь этот функциональный блок.
а какому типу переменных его приписать?
Добрый день!
Уточните пожалуйста можно ли реализовать архивирование в SQL и файловый архив одновременно из одного выполняемого проекта.
К SQL возможно будет обращаться 1С, а из файлового архива будем строить необходимые нам отчеты.
Уточню, что как настроить архивирование по отдельности в SQL и файловый архив знаю, а вот чтоб одновременно не соображу. (возможно ли такое).
P.S. К чему такие сложности?
У меня не получается извлечь данные ( построить отчет) из SQL. Вот и решил может можно прибегнуть к такому костылю.
Заранее спасибо.
Одновременно нельзя, и не нужно.
Вы можете вести архивацию в SQL - из нее будет брать данные как сама скада, так внешнее ПО.
Также можно настроить экспорт данных.
не могли бы написать пример функцинального блока его объявления и вызова в программе. никак не могу разобраться.
Вызовите справку к ФБ "Программа ST" - там есть пример.
в данном контексте программа компилируется но не исполняется. т.е. кн_старт не становится 1. где ошибка
function_block on_off
var_input in:bool; end_var
var_output out:bool; end_var
out:=1
end_function_block
PROGRAM MAIN_PROGRAM
VAR_INPUT in:bool; END_VAR
VAR_OUTPUT вход_выполнен,кн_старт:bool; END_VAR
var on:on_off; end_var
вход_выполнен:=in;
кн_старт:=on.out;
END_PROGRAM
каким-то образом залез смайлик
function_block on_off
var_input in:bool; end_var
var_output out:bool; end_var
out:=1
end_function_block
PROGRAM MAIN_PROGRAM
VAR_INPUT in:bool; END_VAR
VAR_OUTPUT вход_выполнен,кн_старт:bool; END_VAR
var on:on_off; end_var
вход_выполнен:=in;
кн_старт:=on.out;
END_PROGRAM
А вызывать блок кто будет?
function_block on_off
var_input
in:bool;
end_var
var_output
out:bool;
end_var
out:=true;
end_function_block
PROGRAM MAIN_PROGRAM
VAR_INPUT in:bool; END_VAR
VAR_OUTPUT вход_выполнен,кн_старт:bool; END_VAR
var
on:on_off;
end_var
вход_выполнен:=in;
on();
кн_старт:=on.out;
END_PROGRAM
Добрый день!
Подскажите пожалуйста, пытаюсь в объектах создать отчет. отчет буде брать данные из SQL. И уже в отчете пытаюсь добавить (новый источник данных).
И скада зависает, и пока из диспетчера задач не завершишь процесс - мастер скада не на что не реагирует.
На этапе добавления источника?
У вас ключевая версия или Демо? Если ключевая - есть ли опция работы с БД?
Да, на этапе добавления источника.
Версия демо.
Так вы какой источник данных добавляете? Сделайте серию скриншотов.
При попытку нажать на "Нажмите здесь" мастер скада зависает.
Аналогично на втором рисунке, (новый источник данных)
У нас все корректно. А если показать больше, а там - через контекстное меню.
Есть подозрение что скада не зависает, а открывающеся окно у вас просто куда то скрывается.
Ну или окно что-то блокирует.