полторы тысячи точек в секунду это достаточно много для Скада системы.
возможно с ними что-то происходит и что-то анализируется. надо посмотреть насколько нагружен компьютер.
Вид для печати
Да, наверное железо не справляется. Поставил интервал 3 секунды, вроде работает.
Детский вопрос: получаю значение частоты вида 500. Надо получить значение вида 50,0. Получается только таким образом: InFreq:=REAL_TO_STRING(InputFreq/10). Но строковое значение не запихнуть в тренд. Как можно цифровом типе сделать?
А исходное число в int или в real ?
Если в real, то конвертировать не надо.
А если допусти в INT то надо сначала преобразовать само число в real, а потом делить
Параметр_2:=INT_TO_REAL(Параметр_1)/10;
А что бы число на экран выводилось в формате 50,0, необходимо на самом текстовом блоке вывода поставить формат F1.
В режиме отладке все равно останется число 50, а на экране будет 50.0
На параметр можно повесить шкалу, где в формате прописать f1.
Уважаемые, гуру! Предоставьте пожалуйста, пример подключения преобразователя частоты(любого) в мастер скада 4д, буду очень благодарен..
Добрый день, всем.
У меня тоже вопрос.
Заметил такой момент. После старта или обновления визуализации (страницы в браузере) текстовые поля имеют значение по умолчанию до тех пор, пока не обновится привязанная переменная.
Поясню на примере.
В проекте, у объекта есть параметр типа реал, который получает свое значение по OPC. Далее этот параметр передается на тренд и в текстовое поле. Меняется этот параметр очень редко.
Так вот. После старта визуализации любым способом или просто обновлении страницы с визуализацией в тренде я вижу актуальное значение этого параметра, а в текстовом поле 0, который прописан этому текстовому полю как значение по-умолчанию.
Как только я меняю значение параметра в редакторе - то наблюдаю изменения и в тренде и в текстовом поле - значение становится корректным.
Такое ощущение, что текстовое поле обновляется по событию - изменение параметра, к которому оно привязано.
Кто-нибудь сталкивался в подобной ситуацией?
P.S. По большой загрузке процессора и памяти.
На это очень сильно влияет отображение трендов. Например, если вы хотите показать на экране тренд за последние сутки, причем данные у вас снимались каждую секунду, то MS4D будет честно пытаться всунуть в вашу картинку 60сек*60мин*24часа=86 400 значений. Но по факту ваш тренд на экране отображает поле 500х300 точек. И фактически покажет только 500 точек по оси X, а никак не 86400. Для решения проблемы можно использовать параметр тренда - Step of Resampling (Шаг прореживания). Который можно формировать исходя из параметров тренда "Ширина" и "Интервал".
У меня есть переменная типа BLOB в БД MySQL это переменная HEX массивб вопрос какую переменную нужно завести в МастерСкаде , чтобы можно было ее увидеть, считал как STRING выглядит как каракули, может есть переменная для HEX массивов
Если переменная из дерева системы, то да, у меня так же.
Я все переменные всегда в объект кладу, а оттуда уже на экраны, и тогда нормально все.
ДУмается мне что помимо изменения числа, переменной из дерева системы, отслеживается еще изменение во времени.
А то что на тренде у вас есть, я думаю это как написано в руководстве : дорисовка констант или что то в этом духе.
Я поставил на опрос модуль ввода, с периодом опроса 10 сек.
Картина как вы и описали, но через объект, все нормально отображается.
Вложение 52549
У меня тоже данные берутся с объекта, а не с системы. Повторюсь, стоит переменной немного измениться и она дальше верно будет отображаться в проекте.
Вложение 52557
Всем привет!
Подскажите пожалуйста по элементу XY , нужно отрисовать график из массива 30 на 2, глубина 30, в каждом 2 значения для X и Y соответственно.
никак не разберусь с перьями..
Возникает Ошибка: Внутренняя ошибка : Не найден файл/папка для загрузки : C:\User\AppData\Roaming\InSAT\MasterSCADA4DBeta\De bug_OpenStreetMapSODK_Kazan\Облачный сервис 1\cfg\netcore Источник: 'Система.Облачный сервис 1' [Id=365067] при любом коде на C# в чем может быть дело? проблема решена в новой версии скады
Добрый вечер. Буду благодарен если скажете как решить ошибку: при использовании панели вкладок - в ней указываем окно текстового ввода - привязываем к данному окну переменную с сохранением значения.
Все вроде отлично. Далее закрываем окно панели вкладок - норм. НО! - при повторном открытии окна панель вкладок - переменная магическим образом обновляется! Как это возможно?!
Точнее: в панели вкладок размещено окно - видимость и активность которого меняется от состояния переменной. Итак вопрос: при изменении статуса активности окна - обнуляются ли данные в нем? СПС.
Как проследить состояние переменной при исполнении - откуда приходит нулевое значение.
вопрос снят - проблема в многовложенности окон с режимом изменения видимости и активности, что приводило к обнулению переменных. странно конечно, активность вроде не должна обнулять...
сейчас поставил панель вкладок и напрямую туда все вбил. НО! Вкладок около 10 - и они не помещаются на дисплее в рабочем режиме, их перекидываем на две строчки - а вторую строчку не видВложение 52721но, как с ней работать теперь?
при вставке в панель вкладок созданного в объекте внешнего окна - данные переменных не сохраняются после закрытия окна.
такое впечатление, что при повторном включении окна в переменную вносятся 0. само вставляемое окно находится как бы поверх окна вкладок, т.е. при смене вкладки его видно.
Кто-нибудь пробовал прописывать интерфейс смены пароля учетной записи пользователя? Составил окно, но пока до конца не разобрался как программно выполнить.Вложение 52752
1. А где смотрите что нет перезаписи с условного примера? В режиме отладки в дереве, или же в базе данных или в трендах?
2. По поводу дисков, в целом, в моих синтетических тестах, когда я писал 1к переменных 10 раз в секунду, на любом пк работало хорошо.
3. Попробуйте использовать не один протокол OPC DA, а несколько, т.е. когда подключаетесь к opc серверу выбрать первую сотню , затем добавить еще один протокол и добавить еще пару сотен . Вы говорите про тысячи тэгов, а я модули ввода разбивал на несколько протоколов: 1 модуль - 1 протокол. Будет интересен результат, т.к. с таким большим числом тегов не работал.
1. Напрямую в БД. В режиме отладки проверял на косяк, ошибок нет.
2. Мне думается что если бы был косяк с диском, он бы начинал "тупить" намного раньше, и перезапуск РТ бы без перезагрузки бы не помогал.
3. Не хотелось бы, это переменные перетягивать в объект по новой...
Написал в ТП, скинул логи, пока не нашли косяк.
UPD Ан нет, сейчас посмотрел, опять косячит. Лечится только перезапуском ПК.
И ещё вопрос: как UNIX время привести к виду ДД.ММ.ГГГГ?
А где там unix ? Время в БД filetime
Вот пример запроса для mssql
Для postgresql где то на форуме есть примерКод:SELECT TOP (10000) [layer],
[archive_itemid],
[source_time] AS [Время в FILE TIME],
CASE WHEN [source_time] <= 1 THEN NULL
ELSE
DATEADD(ms, (([source_time]) / CAST(10000 AS bigint)) % 86400000,
DATEADD(day, ([source_time]) / CAST(864000000000 AS bigint) - 109207, 0))
END
AS [Время в TIME UTC 0] ,[status_code] ,
FORMAT ([value], 'f2') AS Value
FROM [MyBD].[dbo].[data_raw] WHERE [status_code] = 0
В st не знаю, но можно создать программу с#:
Единственный момент где INT в с#, в MS4 это DINT, 2 строчка
Код:public override void Execute()
{
DT= DateTime.Now;
UnixTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
dtConvert= ConvertFromUnixTimestamp(UnixTime);
static DateTime ConvertFromUnixTimestamp(double timestamp)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
return origin.AddSeconds(timestamp);
}
}
Вложение 52849
После конвертации проекта созданного в версии 1.1 2018 года и запуска не работает настройка фона всех окон, как это недоразумение исправить?
Графика проекта большая и некоторые элементы по цвету сливаются с голубым фоном, на графиках с белым, цвет элементов предопределён техническим заданием.
При запуске родной среды проекта, регулировка цвета фона окна работает.
В проекте фон окон выбирается с помощью кнопок выбора цвета далее через переменные SolidColorType в заливку фона. Пришлось удалить связи и по новой создать, всё работает. Кстати в режиме исполнения значения переменных SolidColorType отображаются без закрывающей скобки типа = rgba(40,41,42,1
Добрый день! Подскажите пожалуйста как реализовать сохранение массива данных в файл и чтение данных из файла.
Есть потребность читать уставки (порядка 400 штук формата real) из внешнего файла (по нажатию кнопки, непостоянно) и иногда вносить изменения в файл.
На данный момент нашел только запись строки в файл и чтение строки из файла - но как распознать значения из строки (получается длинный набор чисел без привязки к переменным), надо писать какую-то отдельную программу
- может этот вопрос уже решен? Заранее спасибо за ответ.
Кто работал с XMLString, что это такое, в хелпах нет информации (странный подход у разработчиков - писать блоки и не давать на него инструкций в хелпе).
nub через массив строк не пробовали? з.ы. не работал с MasterScada, но так как она поддерживает C# если не ошибаюсь, то можно писать в файл переменные в виде массива строк при помощи
System.IO.File.WriteAllLines
и читать при помощи
System.IO.File.ReadAllLines
в другой системе я пишу файл вида
[63, 700]
[64, 700]
[451, 53]
[452, 53,5]
[453, 46]
где первая цифра это номер канала, а вторая это значение
пока не нашел в Masterscada4D поддержки C# или С++, кто-нибудь видел? через поиск в хелпах не находит. в инете информация есть только по третьей скаде.
Шарп в 1.2.11 появился, в объект добавляется "Программа C#". По плюсам был вебинар https://www.youtube.com/watch?v=gXwOYFsKJ2c
Большое спасибо! этот вебинар нечто - из "+" информативность - однако нет описания что и от куда берут, к примеру что за masterplcap? сам проект к видео не приложен.
nub тогда наверное вам проще обновиться до версии, где есть C#, я правда не знаю всех механизмов, как в нем писать скрипты (программы) на C# по этому не подскажу правильность кода, но там будет несколько строк всего и привязать это к кнопкам или другим элементам интерфейса.
в моем случае формула чтения значений из файла находится в самом первом канале БД, а записи в самом последнем и если значения менялись в процессе, то происходит запись в файл а при перезагрузке происходит чтение, но можно привязать и к кнопке интерфейса или даже внешней команде.