PDA

Просмотр полной версии : Вопросы начинающего



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31

SCADAMaster
21.12.2018, 15:06
Ну это не сильно лучше встроенного.
Можете попробовать сделать баз данных, но не факт что это будет сильно быстрее работать.
Можно Posgtre использовать (только лучше тогда Beta версию скады установить) - она побыстрее, но ее база занимает больше места на жестком диске.

env
24.12.2018, 07:59
Добрый день! Подскажите пожалуйста, как можно реализовать вывод списка существующих, сохраненных отчетов на мнемосхему? Может какой-то изменяющийся список с выборкой по датам?

SCADAMaster
24.12.2018, 09:11
Штатно такого механизма нет.
Можно в качества такого списка использовать обычный журнал - генерируйте событие с текстом в момент сохранения отчета.
Чтобы потом из журнала получить какие то данные (например выбранную строку), можно использовать специальный скрипт - он в приложении. От этого скрипта можно уже делать другие действия - открывать уже сохраненный отчет, или формировать новый по тем же параметрам.

VladGC
25.12.2018, 11:09
SCADAMaster, подскажите пожалуйста, какую версию надо покупать локальную или серверную. Если необходим web доступ к MS4D ? Для чего необходимы клиенты ?

env
25.12.2018, 12:12
Добрый день! Не могли бы вы подсказать как связать событие с текстом в момент сохранения отчета?

SCADAMaster
25.12.2018, 12:25
Вы отчет как сохраняете?
Если через ФБ "Управление документом", то у него есть выход "Выполняется" - его задний фронт и есть окончание отчета.

env
25.12.2018, 12:38
Честно говоря даже не знал о таком, сохраняю по расписанию. попробую под фб переделать сперва. Спасибо

env
25.12.2018, 14:11
А нет примера по этому ФБ?

SCADAMaster
25.12.2018, 14:25
Видеопримеры по отчетам:
https://insat.ru/products/?category=1524
в том числе и этот Фб рассматривался

SCADAMaster4D
25.12.2018, 15:23
SCADAMaster, подскажите пожалуйста, какую версию надо покупать локальную или серверную. Если необходим web доступ к MS4D ? Для чего необходимы клиенты ?

В MS4D клиентом является открытое окно встроенного или стороннего браузера, подключенное к web-серверу MS4D.
Число клиентов ограничено приобретенной лицензией, также доступен отдельный пакет на дополнительное число клиентов.
Клиенты нужны для визуализации мнемосхем.

VladGC
26.12.2018, 10:13
В MS4D клиентом является открытое окно встроенного или стороннего браузера, подключенное к web-серверу MS4D.
Число клиентов ограничено приобретенной лицензией, также доступен отдельный пакет на дополнительное число клиентов.
Клиенты нужны для визуализации мнемосхем.
Добрый день, а где можно увидеть пример работы с правами доступа? В справке никуда не переходит.
40575
Задача состоит в том, что бы при нажатии на в определенное место открывалось всплывающее окно.
Но необходимо сделать так, что бы из двух пользователей оператор и администратор, всплывающее окно открывалось у администратора.

SCADAMaster4D
26.12.2018, 14:06
Добрый день, а где можно увидеть пример работы с правами доступа? В справке никуда не переходит.
40575
Задача состоит в том, что бы при нажатии на в определенное место открывалось всплывающее окно.
Но необходимо сделать так, что бы из двух пользователей оператор и администратор, всплывающее окно открывалось у администратора.

Выделите тот элемент, по которому кликаете, и в настройках прав доступа у него задайте разрешение для администратора и запрет у оператора.

Panda
28.12.2018, 09:38
Добрый день.
В проекте использую метку времени, чтобы отслеживать время последнего подключения устройства. Но при остановке проекта метка времени сбивается.
Как сделать, чтобы метка времени не сбивалась даже после закрытия проекта ?

SCADAMaster
28.12.2018, 09:44
Приложите ваш проект и несколько скриншотов с демонстрацией проблемы.

Bigcrash
14.01.2019, 14:27
Как в 4Д добавить ОРС сервер, установленный на ПК. В 3 версии все делалось по ПКМ через хост, здесь добавил протокол ОРС DA, а дальше куда? Потыкался, потыкался, так и не нашел.

SCADAMaster4D
14.01.2019, 14:45
Двойным кликом по протоколу откройте окно, в котором наверху будет выбор сервера. После выбора сервера подключитесь к нему, выберите нужные теги и нажмите кнопку "Применить" внизу окна.

Bigcrash
14.01.2019, 18:30
Ошибку понял, создал контроллер вместо АРМа. Но тогда возникает такой вопрос. 2 ОРС установлены как положено, через установщик, а один идет без установки и скада его не видит, как быть?

Bigcrash
15.01.2019, 09:48
И еще такая проблема, что на одном ПК вообще нажатие кнопки "Выбор сервера" ни к чему не приводит, на другом открывает, но после применения, я так понимаю они должны появиться справа в дереве системы, но не появляются. В чем может быть причина, какие рекомендации?40761

SCADAMaster4D
15.01.2019, 12:29
Внизу под деревом тегов должна быть кнопка "Применить". Скорей всего у Вас разрешение экрана меньше, чем заявлено у нас в минимальных требованиях (1280x1024), поэтому она не влезла.

Bigcrash
16.01.2019, 12:44
Еще такой вопрос, можно ли в мнемосхему внедрить масштабируемую карту с возможностью ставить метки?
Примерно в таком (https://dom.engorod.ru/Account/LogOn?ReturnUrl=%2f) варианте (лог Demo, pass Demo_123). Очень удобно и наглядно.
И вопрос с неинсталлируемым ОРС остается открытым (arOPC (https://www.ardsoft.ru/))

do_foo
16.01.2019, 12:52
Здравствуйте!
Подскажите, пожалуйста, есть ли возможность в MasterSCADA 3.9 динамически создавать, изменять и удалять привязки к тегам?
Например, необходимо, чтобы выходы одного объекта были связаны с разными тегами контроллера в зависимости от состояния входного целочисленного параметра этого объекта.
Можно было бы добавить в объект множество выходных параметров (около 30), но хочется найти более рациональный подход.
Опыт работы с С-Script в WinCC подсказывает, что этого можно добиться с помощью C# скриптов, но API для таких действий я не находил.

Заранее спасибо за ответ.

SCADAMaster
16.01.2019, 13:01
В Runtime такого делать нельзя. В режиме разработки - можно скриптами расставлять связи.
Теоретически в Runtime можно напрямую из скрипта обращаться к разным переменным, а дальше эти значения передавать в другие переменные.
Но есть ли в этом рациональный смысл?
Почему в зависимости от состоянии одной переменной должны меняться связи? Опишите вашу задачу

SCADAMaster
16.01.2019, 13:06
Еще такой вопрос, можно ли в мнемосхему внедрить масштабируемую карту с возможностью ставить метки?
Примерно в таком (https://dom.engorod.ru/Account/LogOn?ReturnUrl=%2f) варианте (лог Demo, pass Demo_123). Очень удобно и наглядно.
И вопрос с неинсталлируемым ОРС остается открытым (arOPC (https://www.ardsoft.ru/))
Нет, карту сделать нельзя.
Если только положить контрол "WEB-браузер"
Про ОРС вопрос не понятен. Хотим отметить что этот ОРС - не нашей разработки

SCADAMaster4D
16.01.2019, 13:19
Еще такой вопрос, можно ли в мнемосхему внедрить масштабируемую карту с возможностью ставить метки?
Готового специального контрола нет. Можно реализовать через контейнер и указанием в нём URL, по которому карта будет открываться. Но только она должна быть без запроса логина и пароля.


И вопрос с неинсталлируемым ОРС остается открытым (arOPC (https://www.ardsoft.ru/))
Другими OPC клиентами пробовали подключаться? Они видят его?

do_foo
16.01.2019, 14:23
В упрощенном варианте задача выглядит так:
Есть несколько идентичных объектов автоматизации. Один из этих объектов является мастером (ведущим), остальные - слейвами (ведомыми). В ходе работы статус мастера может передаваться от объекта к объекту.
На мнемосхеме есть общие кнопки управления и кнопки управления у каждого объекта. В зависимости от того, какой из объектов является в данный момент мастером, эти кнопки должны выдавать команды на контроллер объекта-мастера. С помощью динамической привязки можно было бы изменять префикс связи на ходу.

SCADAMaster
16.01.2019, 15:24
В упрощенном варианте задача выглядит так:
Есть несколько идентичных объектов автоматизации. Один из этих объектов является мастером (ведущим), остальные - слейвами (ведомыми). В ходе работы статус мастера может передаваться от объекта к объекту.
На мнемосхеме есть общие кнопки управления и кнопки управления у каждого объекта. В зависимости от того, какой из объектов является в данный момент мастером, эти кнопки должны выдавать команды на контроллер объекта-мастера. С помощью динамической привязки можно было бы изменять префикс связи на ходу.
Если вы добавите все теги в ОРС сервер, то большого смысла от динамической перепривязки на ходу не будет - теги все равно есть. Проще уж сделать набор объектов, и скрывать/открывать нужные мнемосхемы, когда объект является ведомым.
Если же реализовать переключение на уровне ОРС - то можно сделать.
Какой ОРС сервер вы будете использовать?

do_foo
16.01.2019, 15:44
Если вы добавите все теги в ОРС сервер, то большого смысла от динамической перепривязки на ходу не будет - теги все равно есть. Проще уж сделать набор объектов, и скрывать/открывать нужные мнемосхемы, когда объект является ведомым.
Если же реализовать переключение на уровне ОРС - то можно сделать.
Какой ОРС сервер вы будете использовать?

Multi-Protocol MasterOPC Server от ИнСАТ

SCADAMaster
16.01.2019, 16:04
А протокол какой?
В принципе можно использовать плагин Script. В зависимости от вашего значения, брать теги из разных групп и записывать значения в теги скрипта. А их уже использовать в скаде.

do_foo
16.01.2019, 16:27
А протокол какой?
В принципе можно использовать плагин Script. В зависимости от вашего значения, брать теги из разных групп и записывать значения в теги скрипта. А их уже использовать в скаде.

Протокол Siemens. Попытаюсь применить плагин, хотя уже склоняюсь к Вашему совету использовать наборы объектов. В моем представлении вызов всплывающих окон при управлении объектами будет ухудшать эргономику основной мнемосхемы (а здесь она важна), но нужно попробовать.
Спасибо Вам за отзывчивость!

STARTS
16.01.2019, 16:59
Здравствуйте! Есть ТМК130 , надо считать из него архивные данные. В документации есть функция modbus.ExtFunction. Пробую через нее вызвать 65 функцию, но приходит ошибка 11, то есть ошибка CRC.
Пробовал формировать запрос через server.SendAndReceiveDataByMask с контролем четности CRC16, стандартная функция 17 (получение наименование устройства) работает отлично, а вот если вызвать через server.SendAndReceiveDataByMask 65 функцию (получение страницы архива), то ничего не выполняется. Сталкивался кто-нибудь с таким?

SCADAMaster
16.01.2019, 17:11
То есть устройство возвращает неправильную контрольную сумму?
Пришлите лог при выполнии ExtFucntion и SendandRecive
Для этого в свойствах сервера включите запись журнала и всех его событий размер лога задайте равным 10000. Запустите режим исполнения и воспроизведите ошибку. Лог пишется в папку:
c:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERLOGS\
Лог заархивируйте и вышлите нам, также пришлите вашу конфигурацию ОРС сервера.

STARTS
17.01.2019, 08:17
То есть устройство возвращает неправильную контрольную сумму?
Пришлите лог при выполнии ExtFucntion и SendandRecive
Для этого в свойствах сервера включите запись журнала и всех его событий размер лога задайте равным 10000. Запустите режим исполнения и воспроизведите ошибку. Лог пишется в папку:
c:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERLOGS\
Лог заархивируйте и вышлите нам, также пришлите вашу конфигурацию ОРС сервера.

https://yadi.sk/d/gne16eLXwyFM7w -- логи ExtFunction + OPC Server
https://yadi.sk/d/P3i1VB8EPw_F8A -- логи SendAndReceiveDataByMask

Тег ExtFucntion -- В нем сама функция с тестовыми параметрами, чтобы получить хоть какой-то ответ
Тег 0х11 -- стандартная 17 функция на получение наименования устройства (работает отлично)
Тег Test -- проба отправить полностью сформированный массив байт в устройство через функцию SendAndReceiveDataByMask. Самое странное что в ответ приходит dest[1]=1 dest[2]=193 dest[3]=3 будто вызывается функция 193 :confused:

STARTS
17.01.2019, 09:02
Теперь просто появляется ошибка
17-01-2019 08:56:47.471 Test:ЯФ_К14.ТМК-Н130.Test >> stack traceback:
[C]: in function '__index'
[string "--[[(R)ЯФ_К14.ТМК-Н130.Test]]-- Initializatio..."]:56: in function <[string "--[[(R)ЯФ_К14.ТМК-Н130.Test]]-- Initializatio..."]:28>
https://yadi.sk/d/B9lRKrG21CtKig лог прилагаю. Непонятно вообще что это такое...

SCADAMaster
17.01.2019, 09:25
В одном случае возвращается код ошибки:
[17.01.2019 8:35:39.844] TRACE : (192.168.11.37:20114) Tx: [0015] 01 41 00 01 00 06 01 00 0C 0D 10 01 13 6F 8C
[17.01.2019 8:35:41.447] TRACE : (192.168.11.37:20114) Rx: [0005] 01 C1 03 31 91
Этот возвращает само устройство - значит, вы что-то не то у него спрашиваете.

[17.01.2019 8:03:04.388] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 01 00 01 01 01 A8 81
[17.01.2019 8:03:05.107] TRACE : (192.168.11.37:20114) Rx: [0006] 01 41 01 00 02 01
[17.01.2019 8:03:05.107] Inf : ТМК-Н130:Запрос :EXT_FUNCTION:ТМК-Н130:EXT_FUNCTION
[17.01.2019 8:03:05.111] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 01 00 01 01 01 A8 81
[17.01.2019 8:03:05.114] TRACE : (192.168.11.37:20114) Rx: [0001] 00
[17.01.2019 8:03:05.114] Inf : ТМК-Н130:Запрос :EXT_FUNCTION:ТМК-Н130:EXT_FUNCTION
[17.01.2019 8:03:05.118] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 01 00 01 01 01 A8 81
[17.01.2019 8:03:05.798] TRACE : (192.168.11.37:20114) Rx: [0006] 01 41 01 00 02 01
В этом случае судя по всему прерывается ответ.
Если вы используете конвертер Ethernet-COM, то в свойствах СОМ порта должна быть настройка межсимвольного таймаута (Force Transmit например) - задайте побольше.
Ну и обратите внимание что в разных логах вы делаете запрос по разному.

В третьем случае:
[17.01.2019 8:57:02.703] Inf : ЯФ_К14.ТМК-Н130.0x11::(node)ЯФ_К14:(device)ТМК-Н130:(teg)0x11:(OnRead)::[string "--[[(R)ЯФ_К14.ТМК-Н130.0x11]]-- Initializatio..."]:72: attempt to index local 'dest' (a nil value)
у вас в dest пришел nil. Скорее всего от устройства не было ответа (или некорректный).
Нужно обязательно после выполнения запроса проверять dest на nil, и только если там есть данные - обрабатывать их дальше

STARTS
17.01.2019, 09:35
Спасибо за ответ. Попробуем найти и увеличить межсимвольный таймаут, может тогда ExtFunction и вернет нам что-то :)

STARTS
17.01.2019, 15:42
Увеличили таймаут, но результата это не дало :(

[17.01.2019 15:37:12.192] Inf : ТМК-Н130:Запрос :EXT_FUNCTION:ТМК-Н130:EXT_FUNCTION
[17.01.2019 15:37:12.196] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 01 01 01 01 01 A9 7D
[17.01.2019 15:37:14.796] TRACE : (192.168.11.37:20114) Rx: [0006] 01 41 01 01 00 01
[17.01.2019 15:37:14.796] Inf : ТМК-Н130:Запрос :EXT_FUNCTION:ТМК-Н130:EXT_FUNCTION
[17.01.2019 15:37:14.800] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 01 01 01 01 01 A9 7D
[17.01.2019 15:37:17.220] TRACE : (192.168.11.37:20114) Rx: [0006] 01 41 01 01 00 01
[17.01.2019 15:37:17.220] Inf : ТМК-Н130:Запрос :EXT_FUNCTION:ТМК-Н130:EXT_FUNCTION
[17.01.2019 15:37:17.224] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 01 01 01 01 01 A9 7D
[17.01.2019 15:37:19.633] TRACE : (192.168.11.37:20114) Rx: [0006] 01 41 01 01 00 01
[17.01.2019 15:37:19.633] SCRIPT : ЯФ_К14.ТМК-Н130.ExtFunction:err = 11
[17.01.2019 15:37:19.633] SCRIPT : ЯФ_К14.ТМК-Н130.ExtFunction:dstdata = nil
[17.01.2019 15:37:19.633] SCRIPT : ЯФ_К14.ТМК-Н130.ExtFunction:dslen = nil
Все равно ошибка CRC

SCADAMaster
17.01.2019, 15:58
Ну у вас ответ приходит не полностью. Либо контроллер так шлет, либо конвертер ерундит.
Попробуйте подключится через конвертер USB-COM.

STARTS
17.01.2019, 16:58
Попробовал сформировать запрос заново через server.SendAndReceiveDataByMask
Ответ как ни странно пришел :o
Но вот от ExtFunction ничего не приходит

Ответ от server.SendAndReceiveDataByMask

[17.01.2019 16:51:38.000] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 00 01 01 01 01 94 BD
[17.01.2019 16:51:41.648] TRACE : (192.168.11.37:20114) Rx: [0109] 01 41 00 01 00 01 01 12 0B 1E 04 3C 00 F4 01 88 13 00 00 80 A7 FB BD 3E 00 00 00 00 D4 66 50 42 50 ED 51 42 00 00 00 00 00 00 00 00 C2 FF 53 42 8E CC 54 42 00 00 00 00 00 00 00 00 00 00 00 00 CC 17 08 15 E6 08 CA 3A CB 17 07 15 00 00 00 00 7E 13 6A 0A 4E 0A 88 13 02 85 08 00 08 08 80 07 04 88 00 00 00 00 3C 00 00 C5 8F F0 30


Ответ от ExtFunction
[17.01.2019 16:56:34.400] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 00 01 01 01 01 94 BD
[17.01.2019 16:56:34.517] TRACE : (192.168.11.37:20114) Rx: [0005] 01 41 00 01 00

Как видно запрос идет один и тот же, а вот ответа нет

SCADAMaster
17.01.2019, 17:07
err,dstdata,dstlen = modbus.ExtFunction(65,srclen,srcmask,srcdata,nil);
Попробуйте прописать маску приема.

STARTS
18.01.2019, 08:30
С маской приема

[18.01.2019 8:29:10.046] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 00 01 01 01 01 94 BD
[18.01.2019 8:29:12.287] TRACE : (192.168.11.37:20114) Rx: [0005] 01 41 00 01 00

SCADAMaster
18.01.2019, 09:53
Оставьте в конфигурации только тег, из которого вы выполняете запрос Ext Function, снова сформируйте лог и пришлите его вместе с конфигурацией.
Но вообще мы только недавно проверяли 65 функцию со Взлетом - все работало. Вот пример:
local srcdata = {0,1,0,526}
local srcmask = {"int16:10","int16:10","byte","int16:10"}
local dstdata = {}
local dstmask = {"int32:1:3210","string:200"}
err,dstdata,dstlen = modbus.ExtFunction(65,table.maxn(srcdata),srcmask, srcdata,dstmask);

STARTS
18.01.2019, 10:35
https://yadi.sk/d/JucZuBAG40iy3g

SCADAMaster
18.01.2019, 11:29
Так почему у вас такая маска коротка?
Пропишите как у нас в примере - string и количество байт данных которое должно прийти.
Ну и в ряде случае все же наблюдается разрыв пакетов:
[18.01.2019 10:32:31.124] TRACE : (192.168.11.37:20114) Rx: [0005] 01 41 00 01 00
[18.01.2019 10:32:31.124] Inf : ТМК-Н130:Запрос :EXT_FUNCTION:ТМК-Н130:EXT_FUNCTION
[18.01.2019 10:32:31.128] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 00 01 01 01 01 94 BD
[18.01.2019 10:32:31.131] TRACE : (192.168.11.37:20114) Rx: [0001] 00
[18.01.2019 10:32:31.131] Inf : ТМК-Н130:Запрос :EXT_FUNCTION:ТМК-Н130:EXT_FUNCTION
[18.01.2019 10:32:31.135] TRACE : (192.168.11.37:20114) Tx: [0009] 01 41 00 01 01 01 01 94 BD
[18.01.2019 10:32:34.153] SCRIPT : ЯФ_К14.ТМК-Н130.ExtFunction:err = 10

STARTS
21.01.2019, 15:16
local destmask={"byte:6","int16:3:01","byte:1","Float:11:32107654","int16:12:01","byte:2","int32:2:01","byte:7"};
local srcdata = {0,0,221,5,1};
local srcmask = {"byte","byte","byte","byte","byte"};
local dstdata = {};
err,dstdata,dstlen = modbus.ExtFunction(65,table.maxn(srcdata),srcmask, srcdata,destmask);

Приходит

Tx: [0008] 01 03 00 F0 00 01 84 39
Rx: [0005] 01 41 00 00 DE
Tx: [0008] 01 03 00 F0 00 01 84 39
Rx: [0007] 01 03 02 00 00 B8 44
Tx: [0008] 01 03 01 59 00 01 55 E5
Rx: [0001] 00

В тоже время отправляем через SendAndReceiveDataByMask и данные приходят.
Раз не получается через ExtFunction, то будем работать через SendAndReceiveDataByMask
Не подскажите по данным приема?
http://prntscr.com/ma1k12 -- это что приходит от контроллера

local destmask={"byte:13","int16:3:01","byte:1","Float:11:32107654","int16:12:01","byte:2","int32:2:01","byte:7"};

Это моя маска приема. До 10 байта все принимается нормально, данные действительные, но начиная с 12 начинается что-то непонятное. К примеру Q1 должно быть 0.337, а приходит
Q1 -25663
Можете сказать с чем это может быть связано?

SCADAMaster
21.01.2019, 15:36
Может чередование байт неправильное, может не в тот адрес попадаете.
Посмотрите в ответе принятые байты и определите их реальное значение:
https://www.scadacore.com/tools/programming-calculators/online-hex-converter/

STARTS
21.01.2019, 16:07
Может чередование байт неправильное, может не в тот адрес попадаете.
Посмотрите в ответе принятые байты и определите их реальное значение:
https://www.scadacore.com/tools/programming-calculators/online-hex-converter/

Огромное спасибо за ссылку. Неправильное чередование поставил, нужно от младшего к старшему

liga_blunt
22.01.2019, 12:06
М.S 3.5 При открытии любого скрипта для редактирования экран в молоко. Раньше не было такого. Что надо переустановить?

SCADAMaster
22.01.2019, 12:46
Для начала переустановить MasterSCADA, под администратором.
Если не поможет - то также NetFramework.

env
23.01.2019, 08:35
Какая-то проблема с сохранением отчета через фб управление документом. Вроде делаю все правильно, по примеру, но отчеты не появляются.
объект СИКВ

SCADAMaster
23.01.2019, 09:20
С виду все правильно.
Если просто вручную подать сигнал на вход "Сохранить" - сохраняется?Если нет, то какую ошибку выдает ФБ?

env
23.01.2019, 11:59
Все в порядке, спасибо, моя ошибка

VladGC
24.01.2019, 11:39
Добрый день!
Установлена последняя версия MS 3.10 (на 32 точки)
В блоге указано что firebird поддерживается бесплатно.
С версией embedded все работает, но если создать сетевую бд, не важно на локальном пк или другом вылезает сообщение что поддержка бд не включена в версию
40854

SCADAMaster
24.01.2019, 11:49
Все верно - включена только Embedded.

VladGC
24.01.2019, 16:15
Все верно - включена только Embedded.
Спасибо, не заметил заголовок.
Еще вопрос, по расчету суммы по архиву, не могу понять как считать сумму, если значение не изменяется. Если число изменяется формула работает. Вроде опросы везде выставлены "Периодически".
40860

SCADAMaster
24.01.2019, 16:47
Так если оно не меняется, то и сумма не меняется.
Может вам интеграл нужен?

VladGC
24.01.2019, 17:04
Так если оно не меняется, то и сумма не меняется.
Может вам интеграл нужен?

мне надо что бы допустим
переменная
которая принимает значение 1 в течении 5 секунд считалась как 5, а интеграл выдает 4,9 и т.п.
40861

SCADAMaster
24.01.2019, 18:00
В таком случае используется именно интеграл. То что число получается дробным - это следствие работы алгоритмов с плавающей запятой.
Скорее всего такая потеря точности не будет принципиальна

za9c
27.01.2019, 22:52
Здравствуйте! Подскажите пож-та, как через событие(молнию) изменить цвет и шрифт ячейки в отчёте!
я не знаю как, но как-то, около того - по типу: "Источник_данных1.Text7.Font.Arial.10; "

SCADAMaster
28.01.2019, 09:53
Как то так:
Text1.TextBrush=new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawi ng.Color.FromArgb(255, 255, 0, 0));;
Text1.Font = new System.Drawing.Font("Arial", 16F);

Text1 - название контрола

nenaika
29.01.2019, 21:12
Здравствуйте.
Вопрос по MasterSCADA 4D 1.2 (на контроллере) - можно ли, что бы при изменении булевой переменной на компьютере оператора выдавался звуковой сигнал, если можно, то как это сделать - может можно запускать медиаплеер со звуковым сигналом или что-то в этом роде?
И еще есть вопрос может кто подскажет - передача битовых значений из MasterSCADA 4D на панель оператора wientek 8071: битовая переменная во внешних каналах (адрес 10001) - отвечает за цвет надписи и её содержимое, с панель weintek считывет командой 0х - данные на панель не проходят - обрыв связи , при считывании командой 0х single bit и установки битовой переменной на экране панели - обрыва связи мастерскада и панели не происходит, но при смене состояния переменной в МС отображение надписи не изменяется.

SCADAMaster4D
30.01.2019, 10:59
Добрый день!

Для проигрывания звука используйте системный ФБ PlaySound.
По проблеме с передачей данных битовой переменной, какие настройки канала в проекте MS4?

nenaika
30.01.2019, 11:40
Спасибо, буду пробовать. По битовой решилось - чудила сама панель.

Bigcrash
31.01.2019, 14:51
Добрый день.
Есть настольный ПК и ноутбук. На обоих установлена одинаковая винда. На ноутбуке такая проблема, что MS4D 1.2 не видит ОРС серверов, на настольном ПК все в порядке. Что делать?

evilscorp
31.01.2019, 20:19
Здравствуйте, создал сетевой проект, данные с котельной 1 дублируются в диспетчерскую, возможно ли в проект диспетчерской добавить вторую котельную? добавить пытаюсь, но почему то при импорте проекта с котельной 2 пишет что скада на котельной 2 не запущена, хотя это не так. Ну и я так понял что теги копируются на все 3 компьютера и отнимаются от приобретенного объема? Могу ли я на компьютере диспетчерской добавлять не один, а несколько объектов?

SCADAMaster
01.02.2019, 08:50
Здравствуйте, создал сетевой проект, данные с котельной 1 дублируются в диспетчерскую, возможно ли в проект диспетчерской добавить вторую котельную? добавить пытаюсь, но почему то при импорте проекта с котельной 2 пишет что скада на котельной 2 не запущена, хотя это не так. Ну и я так понял что теги копируются на все 3 компьютера и отнимаются от приобретенного объема? Могу ли я на компьютере диспетчерской добавлять не один, а несколько объектов?
Как они дублируются?
Ощущение что вы неправильно делаете сетевой проект. Посмотрите вот эту статью:
https://insat.ru/blog/sozdanie-i-nastroyka-setevykh-proektov-v-masterscada/
И документацию (https://insat.ru/metodicheskie-materialy/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9%20%D0%B F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%20MasterSCADA.pdf)

Kaa1
02.02.2019, 16:06
Добрый день!
Не взыщите за некомпетентность. Вопрос от дилетанта. Достаточно ли мастеру Scada для чтения и записи регистров ведомого контроллера следующих параметров: ID контроллера, тип функции, адрес регистра? Протокол MODBUS.

Алексеев
03.02.2019, 11:27
Вопрос. Данные записываются в ОРС по изменению (и естественно в прибор) , но иногда бывает данные не изменились , а их необходимо
записать ( плохая связь по интернету) . Слышал что повторная запись это аналогично как будто изменились .
Организовал событие и присваиваю в переменную ОРС сервера то что нужно записать .
Но возникли сомнения улучшение не наблюдаю . Подтвердите или поправьте или как нибудь по другому .
Заранее благодарен . 41031

SCADAMaster
04.02.2019, 09:49
Добрый день!
Не взыщите за некомпетентность. Вопрос от дилетанта. Достаточно ли мастеру Scada для чтения и записи регистров ведомого контроллера следующих параметров: ID контроллера, тип функции, адрес регистра? Протокол MODBUS.
Да, но нужен еще тип данных (float, nt16, int32 и т.д.)
Если его нет, то скорее всего тип будет int16

SCADAMaster
04.02.2019, 09:50
Вопрос. Данные записываются в ОРС по изменению (и естественно в прибор) , но иногда бывает данные не изменились , а их необходимо
записать ( плохая связь по интернету) . Слышал что повторная запись это аналогично как будто изменились .
Организовал событие и присваиваю в переменную ОРС сервера то что нужно записать .
Но возникли сомнения улучшение не наблюдаю . Подтвердите или поправьте или как нибудь по другому .
Заранее благодарен . 41031
Да, это рабочий вариант.

Kaa1
04.02.2019, 16:12
Да, но нужен еще тип данных (float, nt16, int32 и т.д.)
Если его нет, то скорее всего тип будет int16

Отлично!
СПАСИБО!

STARTS
05.02.2019, 08:41
Здравствуйте форумчане!
В общем такая проблемка. От устройства приходит
00 04 04 3F 1E 0C 0D 43 93 первые 3 байта это адрес, номер функции, размер поля данных, далее пошли данные и CRC. Данные принимаю функцией server.SendAndReceiveDataByMask. Беда в том что при объявлении destmask={"byte:3:10","float:1:76543210"}; мне приходит 0 вместо 0.6173714.
Пробовал получать два числа int16 destmask={"byte:3:10","int16:2:10"}; и потом уже переводить их во float функцией
function ConvertToFloat(RegH, RegL), но все равно в итоге функция возвращает 0 вместо 0.6173714
Не подскажите как получить заветные 0.6173714 ? Дело в том что прибор отдельно передает Q1 целую и Q1 дробную часть, в скрипте хочу их склеить. Заранее спасибо за ответ :)

SCADAMaster
05.02.2019, 09:33
Выставить другое чередование байт - 32107654, или 10327654
https://www.scadacore.com/tools/programming-calculators/online-hex-converter/

STARTS
05.02.2019, 11:43
Выставить другое чередование байт - 32107654, или 10327654
https://www.scadacore.com/tools/programming-calculators/online-hex-converter/

Очень странно, но сработало) Хотя чередование ставил по протоколу. Спасибо

Kaa1
06.02.2019, 13:34
41072
и снова дилетант.
устройство не соединяется
программа предлагает установить настройки порта.
критичен ли указанный параметр, или вообще преобразователь не канает?
спасибо)

SCADAMaster
06.02.2019, 17:24
Эти настройки можно не трогать - ОРС сервер сам открывает порт с нужными параметрами.
Начните отсюда:
https://insat.ru/products/chasto-zadavaemye-vopros-po-modbus-opc.php?clear_cache=Y

TATARin
07.02.2019, 10:32
Гаспода, кто знает подскажите как опрашивать мастера в сети - ПЛК110 через ОВЕН-OPC в MasterSCADA?

SCADAMaster
07.02.2019, 11:13
Лучше разместить данный вопрос в разделе "Сервисного ПО".
Наш Modbus Universal может работать в SLAVE режиме.

TATARin
07.02.2019, 11:57
Спасибо! Так и сделаю.

TATARin
07.02.2019, 12:28
Я запустил Modbus Universal, а где настраивается SLAVE?

SCADAMaster
07.02.2019, 12:55
В окне добавления узла будет настройка "Slave подключение"

ryuraa
08.02.2019, 09:38
Привет
Как в диаграмме выставить время на 24 часовой.

dd/MM/hh/mm получается 12 часовой.

ryuraa
08.02.2019, 10:11
dd/MM/HH/mm )

ryuraa
11.02.2019, 10:09
Здравствуйте
Перешли на версию PRO.
настраиваю SMS отправку
scada непрерывно опрашивает модем (cinterion mc35i)
AT
OK
AT
OK
AT+CMGL=0
ERROR

и смс не отправляются

как решить проблему?

ASG
11.02.2019, 10:16
День добрый,
Как надпись на кнопке в две строки сделать (\r\n не работает)?

SCADAMaster
11.02.2019, 10:36
День добрый,
Как надпись на кнопке в две строки сделать (\r\n не работает)?
Перенос на кнопках в данный момент не поддерживается

SCADAMaster
11.02.2019, 10:39
AT
OK
AT
OK
AT+CMGL=0
ERROR
как решить проблему?
Как именно вы проверяете отправку? Через ФБ "Отправка СМС" или Канал?
Вообще указанная команда - это чтение смс из модема.
Из терминала (HyperTerminal, Putty) отправка СМС происходит?

ryuraa
11.02.2019, 10:50
Serial Port Monitor
Через ФБ "Отправка СМС" com1
HyperTerminal, Putty - не пробовал, через демо версию (ФБ отличаются на Про еще два выхода) scada на другом ПК проходят смс (модем тот же физически)

SCADAMaster
11.02.2019, 11:12
На вкладке "Настройки" настройка "Использовать текстовый режим" в каком состоянии?

ryuraa
11.02.2019, 11:16
пробовал и лож и истину, сейчас лож
41137

ryuraa
11.02.2019, 11:26
при нажатие кнопки
AT+CMGS=15
error

SCADAMaster
11.02.2019, 11:43
Настройку поставьте в ложь. Включите режим исполнения, воспроизведите ошибку и сформируйте отчет об ошибках
Для того чтобы сформировать отчет об ошибках:
В Режиме Исполнения (RT):
"Сервис"->"Отчет об ошибках" или
Alt+F10 ->"Отчет об ошибках"
Поставьте галочку "Включая конфигурацию текущего проекта". Сформированную папку заархивируйте и вышлите нам. Если размер архива превышает 5 мб, то выложите его на файлообменник (например Yandex.Disk, Google Drive), а нам пришлите ссылку.

SCADAMaster
11.02.2019, 12:52
Посмотрели ваш лог. У вас сообщение:
System.ApplicationException: Cannot open serial port: COM1
Убедитесь что никакое другое ПО не пытается подключится к модему или к этому порту.

ryuraa
11.02.2019, 12:57
чисто
но АТ от скады ок по Serial Port Monitor показывает, иначе бы он показывал что еще опрос есть, тест модема по свойствам все хорошо

SCADAMaster
11.02.2019, 13:30
У вас в ОРС есть группа "Прием смс" - может вы там к модему обращаетесь?
Вообщем других вариантов тут нет - если не открывается порт, то значит он занят другим ПО. Пробуйте перенастроить модем на другой порт

STARTS
12.02.2019, 08:55
Здравствуйте, форумчане!
Прошу Вас помощи, ибо уже сломал мозг :(
Есть счетчик ТМК-Н100, хочу считать с него хоть какой-то архив. В документации написано вот такое: http://prntscr.com/mjvuwz
Я делаю запрос вот так:
local send={server.GetCurrentDeviceAddress(),65,0,1,1000 ,1};
local sendmask={"byte","byte","byte","byte","int16","byte"};
local dest={};
local destmask={"byte:13:01","int16:6:01","int32:1:01","int16:1:01","float:8:01234567","int16:6:01","byte:1:01","int32:1:01","int16:1:01","byte:5:01"};
err,dest,len=server.SendAndReceiveDataByMask(2,tab le.maxn(send),sendmask,send,destmask,2048);

Сам запрос и ответ:
Tx: [0009] 00 41 00 01 03 E8 01 6A 2D
Rx: [0009] 00 41 00 01 02 E8 01 3B ED

Получаю ошибку 7.
Со счетчиком ТМК-Н120\130 такой запрос выполняется отлично и архив получаю успешно, но с ТМК-Н100 ничего не выходит.
Прошу помогите и укажите на мою ошибку, буду очень благодарен! :o

SCADAMaster
12.02.2019, 09:47
Почему ошибку то?
7 - это количество принятых байт. Минус два байта на контрольную сумму.

Другое дело что принятый пакет у вас явно короче того, что вы ожидаете. Но это уже надо с прибором разбираться

STARTS
12.02.2019, 11:25
Почему ошибку то?

Переменная err возвращает 7 err = 7

SCADAMaster
12.02.2019, 11:58
Посмотрите справку. Если число отрицательное - ошибка, если положительное то количество принятых байт.

STARTS
12.02.2019, 12:56
Возвращаемые значения:
1 – код ошибки; если 0 – ошибок нет;


Коды ошибок:

07 – подчиненный не может выполнить программную функцию, принятую в запросе. Этот код возвращается для неудачного программного запроса, использующего функции с номерами 13 или 14. Главный должен запросить диагностическую информацию или информацию об ошибках с подчиненного;

У меня в справке вот такое написано

SCADAMaster
12.02.2019, 13:08
Вы это где прочитали?
В инструкции к прибору? И причем здесь она?

STARTS
12.02.2019, 13:17
Вы это где прочитали?
В инструкции к прибору? И причем здесь она?

Извините, смотрел коды ошибок функции ext...
Кстати про нее, она просто возвращает ошибку контрольной суммы.
В общем вы думаете что проблема в неисправности прибора?

SCADAMaster
12.02.2019, 13:31
Неисправность или нет - уже вопрос к производителю прибора. Отвечает он верно, но почему такой короткий ответ - это нам неведомо.
Или в приборе что-то не так, или вы запрос не правильно формируете.

STARTS
12.02.2019, 13:40
В документации написано вот так -- https://prnt.sc/mjvuwz
По этим данным я составляю такой запрос server.GetCurrentDeviceAddress(),65,0,1,1000 ,1
Беру часовой (0), считываю назад(1), страницу ставлю 1000, количество страниц 1
Просмотрите пожалуйста, верно ли я делаю?

SCADAMaster
12.02.2019, 14:11
Не нужно ли в 1 байте кроме направления указать еще и маску запроса (от какой теплосистемы)?

STARTS
12.02.2019, 14:18
Не нужно ли в 1 байте кроме направления указать еще и маску запроса (от какой теплосистемы)?

Что-то вроде передать 00011000 (bin) или 24 в десятичной?

SCADAMaster
12.02.2019, 14:36
попробуйте

STARTS
12.02.2019, 14:39
попробуйте

Пробовал разное чередование бит, получаем либо
Tx: [0009] 00 41 00 10 03 E8 01 6F 11
Rx: [0005] 00 C1 04 21 93

Либо вообще пустота...

SCADAMaster
12.02.2019, 14:47
С1 - код ошибки.
Обращайтесь к производителю прибора.

STARTS
12.02.2019, 14:48
С1 - код ошибки.
Обращайтесь к производителю прибора.

Огромное спасибо за помощь!

env
13.02.2019, 07:45
Добрый день! Подскажите пожалуйста, как привязать к журналу возможность выборки конкретных дней элементом календарь и возможно ли сделать с выборкой до часов-минут?

SCADAMaster
13.02.2019, 10:25
Если разместить журнал на мнемосхеме, то можно управлять его разверткой через входы динамизации Дата с и Дата По

env
13.02.2019, 12:53
Если разместить журнал на мнемосхеме, то можно управлять его разверткой через входы динамизации Дата с и Дата По

То есть это имеется ввиду?
41186
Только так эта панель выглядит в режиме редактирования, а при выполнении так
41187

SCADAMaster
13.02.2019, 13:06
Нажмите на круглую кнопку - и можно будет просматривать архив сообщений, а в том числе задавая начало и конец.
Если нужно делать это внешними средствами (через какие то внешние команды), то используются входы динамизации.
Подробнее про динамизацию (https://insat.ru/metodicheskie-materialy/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D0%B7%D0%B0%D 1%86%D0%B8%D1%8F%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5% D0%BD%D1%82%D0%BE%D0%B2%20%D0%BC%D0%BD%D0%B5%D0%BC %D0%BE%D1%81%D1%85%D0%B5%D0%BC.pdf).

VladGC
19.02.2019, 09:06
Подскажите пожалуйста,
пытаюсь отследить статус окна, что оно открыто
Пользуюсь статьей https://masteropc.insat.ru/blog/fb-skript-c-i-ego-ispolzovanie-v-masterscada-skript-otslezhivaniya-otk/
Но что то идет не так


41299

public override void Execute()
{
Объект1=Объект2=false; //сбрасываем все выходы
foreach (IDocumentHlp document in HostFB.TreeItemHlp.Project.Documents) //перебираем документы
{
IAttributeHlp attribute = document.Attribute;
if (attribute.Opened) //проверяем загружено ли окно
{
var mnemoInfo = attribute.CurrentCallInfo;
var callType = mnemoInfo.CurrentCallType;
//проверяем что окно открыто и оно имеет тип "документ"
if (attribute.DocumentInfo.Handle != 0 && callType == MasterSCADA.Interfaces.ECallType.ctDocument )
{
//взводим определенный выход в зависимости от имени объекта у которого открыто окно
if (attribute.TreeItem.Name=="Объект 1") Объект1=true;
if (attribute.TreeItem.Name=="Объект 2") Объект2=true;

}
}
}
}

SCADAMaster
19.02.2019, 10:00
Опрос у скрипта должен быть периодический

VladGC
19.02.2019, 10:35
Опрос у скрипта должен быть периодический

Спасибо, то что надо,
Теперь я могу сделать что бы сразу при переключении экранов сразу скрипт выполнялся, присутствует некоторая задержка - окно переключилось, скрипт еще не выполнился.
Менял цикл на "Собственный" 10 мс,
Менял условия выполнения по изменению входов,
но все равно есть задержка

SCADAMaster
19.02.2019, 10:47
Задержка будет равна общему циклу опроса объектов - порядка 1 секунды

VladGC
19.02.2019, 13:27
Задержка будет равна общему циклу опроса объектов - порядка 1 секунды

Еще подскажите пожалуйста,
На основную мнемосхему добавлено "изображение объекта" , при нажатии правой кнопкой мыши на нем, в контекстном меню есть выбор:
"Тренд"
"Журнал"
"Таблица"
Как убрать эти пункты ?

SCADAMaster
19.02.2019, 14:40
У изображения это не выключить.
У обычной кнопки вызова есть настройка "Контекстное меню"

ASG
20.02.2019, 16:25
[QUOTE=VladGC;299296]Подскажите пожалуйста,
пытаюсь отследить статус окна, что оно открыто
Пользуюсь статьей https://masteropc.insat.ru/blog/fb-skript-c-i-ego-ispolzovanie-v-masterscada-skript-otslezhivaniya-otk/
Но что то идет не так

День добрый,
Также использую скрипт из статьи.
Компилируется без ошибок, но в РТ или отладке в Журнале появляется Ошибка "...Ссылка на объект не указывает на экземпляр объекта. : Неправильный указатель"
Не пойму что не так..?

Код:
blic override void Execute()
{
Паркинг=Этаж1=Этаж2=Этаж3=Этаж4=Этаж4=Этаж5=Этаж6= ТехЭтаж=false; //сбрасываем все выходы
ОВиК=ИТП=ГРЩ=false;
foreach (IDocumentHlp document in HostFB.TreeItemHlp.Project.Documents) //перебираем документы
{
IAttributeHlp attribute = document.Attribute;
if (attribute.Opened) //проверяем загружено ли окно
{
var mnemoInfo = attribute.CurrentCallInfo;
var callType = mnemoInfo.CurrentCallType;
//проверяем что окно открыто и оно имеет тип "документ"
if (attribute.DocumentInfo.Handle != 0 && callType == MasterSCADA.Interfaces.ECallType.ctNewWindow )
{
//взводим определенный выход в зависимости от имени объекта у которого открыто окно
if (attribute.TreeItem.Name=="Паркинг") Паркинг=true;
if (attribute.TreeItem.Name=="1 этаж") Этаж1=true;
if (attribute.TreeItem.Name=="2 этаж") Этаж2=true;
if (attribute.TreeItem.Name=="3 этаж") Этаж3=true;
if (attribute.TreeItem.Name=="4 этаж") Этаж4=true;
if (attribute.TreeItem.Name=="5 этаж") Этаж5=true;
if (attribute.TreeItem.Name=="6 этаж") Этаж6=true;
if (attribute.TreeItem.Name=="Технический") ТехЭтаж=true;
}
if (attribute.DocumentInfo.Handle != 0 && callType == MasterSCADA.Interfaces.ECallType.ctWindow )
{
//взводим определенный выход в зависимости от имени объекта у которого открыто окно
if (attribute.TreeItem.Name=="ОВиК") ОВиК=true;
if (attribute.TreeItem.Name=="ИТП") ИТП=true;
if (attribute.TreeItem.Name=="ГРЩ") ГРЩ=true;
}
}
}
}
}

SCADAMaster
20.02.2019, 16:39
Подцепитесь отладчиком посмотрите где падает:
https://masteropc.insat.ru/blog/fb-skript-c-i-ego-ispolzovanie-v-masterscada-otladka-skriptov/

Алекс123
20.02.2019, 20:57
Доброго времени суток можно ли интегрировать OPC-сервер TensoOpc в мастер скада ?

SCADAMaster
21.02.2019, 09:34
Как и любой другой ОРС сервер.
Документация (https://insat.ru/metodicheskie-materialy/Связь%20с%20нижним%20уровнем.pdf)

ASG
21.02.2019, 10:59
Подцепитесь отладчиком посмотрите где падает:
https://masteropc.insat.ru/blog/fb-skript-c-i-ego-ispolzovanie-v-masterscada-otladka-skriptov/

День добрый,
Ошибка вылезает на строке - var callType = mnemoInfo.CurrentCallType
Что где покрутить?

;41351

SCADAMaster
21.02.2019, 11:22
Приложите ваш проект (Проект - Экспортировать)

ASG
21.02.2019, 11:57
Тестовый проект со скриптом

SCADAMaster
21.02.2019, 12:48
Мы проверили у нас все работает.
Проверьте на текущей Demo версии

ASG
21.02.2019, 12:57
Мы проверили у нас все работает.
Проверьте на текущей Demo версии

Ошибка появляется через пару минут работы в отладке или РТ

SCADAMaster
21.02.2019, 13:03
На сервере или на клиенте? Какие действия при этом выполняются?

ASG
21.02.2019, 13:17
На сервере или на клиенте? Какие действия при этом выполняются?

Просто переключение окон в меню (режим отладки)

SCADAMaster
21.02.2019, 13:39
Не проявляется.
Добавьте просто такой код - это должно снять ошибку.

ASG
21.02.2019, 17:26
1. Обновил Демо версию (в тестовом проекте1 ошибка не проявилась) - в рабочем проекте ошибка лезет.
2. Добавил код - в основном проекте ошибка лезет (хотя при этом визуально все работает как надо).
3. Сделал Тест2 (у меня раньше было 2 таких скрипта в проекте объединил в 1).. долго кликал по кнопкам в итого ошибка вылезла (хотя реже чем в основном проекте). Закономерностей вызывающих ошибку не выявил... .(кроме разве кривых рук ;(

Скрин
41362

+ экспорт Тест2

SCADAMaster
21.02.2019, 18:03
Подцепитесь отладчиком - где теперь падает?
В том же месте падать не должно, так как указанный код должен приводить к выходу из цикла

ASG
22.02.2019, 09:59
Подцепитесь отладчиком - где теперь падает?
В том же месте падать не должно, так как указанный код должен приводить к выходу из цикла

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

Спасибо за поддержку.

Bigcrash
22.02.2019, 20:10
MS 4D.
Как можно изменить стандартное форматирование тегов? Вытаскиваю выход на мнемосхему и каждый раз приходится менять кучу свойств в ручную.

VladGC
25.02.2019, 09:36
Добрый день!
Подскажите пожалуйста, как в заголовке окна ( изображение объекта или окно объекта ) выводить только имя объекта? постоянно вводить в настройках "Параметры открытия заголовка" не очень удобно.
И еще момент, как при дублировании сделать так что бы окно объекта подхватывало имя ? Иначе оно копирует имя из шаблона.
Почему при открытии окна объекта из контекстного меню в дереве объекта , имя заголовка берется из "Параметры открытия заголовка" , а если открывать из мнемосхемы, подцепляется заголовок из диалогового окна "Элементы" ?
41407

SCADAMaster
25.02.2019, 10:49
Добрый день!
Подскажите пожалуйста, как в заголовке окна ( изображение объекта или окно объекта ) выводить только имя объекта? постоянно вводить в настройках "Параметры открытия заголовка" не очень удобно.

Штатных механизмов нет. Можно скриптом - пример в приложении (в объекте 1).



Добрый день!
Почему при открытии окна объекта из контекстного меню в дереве объекта , имя заголовка берется из "Параметры открытия заголовка" , а если открывать из мнемосхемы, подцепляется заголовок из диалогового окна "Элементы" ?

Из какого окна Элементы?
Имя берется либо от настроек самого окна (на вкладке Окна), либо из настроек кнопки

VladGC
25.02.2019, 15:40
Штатных механизмов нет. Можно скриптом - пример в приложении (в объекте 1).
В приложении изображение только



Из какого окна Элементы?
Имя берется либо от настроек самого окна (на вкладке Окна), либо из настроек кнопки
Переустановил ms3 , все стало работать как надо

SCADAMaster
25.02.2019, 15:47
Повторно приложение

VladGC
25.02.2019, 16:07
Повторно приложение
Спасибо,
можете посмотреть проект ?
Там непонятно вообще, откуда берется заголовок

SCADAMaster
25.02.2019, 16:24
Судя по всему отсюда

VladGC
25.02.2019, 16:38
Судя по всему отсюда

Тогда не совсем понятно, где приоритет по подписи заголовка
В одном месте написано "Подробно"
В другом "Футировка"
Хотя это свойства открытия одного и тогоже окна объекта
414204142141422

SCADAMaster
25.02.2019, 16:45
Если открываете по кнопке (а вы открываете ей) то настройки берутся от этой кнопки.

VladGC
25.02.2019, 16:50
Если открываете по кнопке (а вы открываете ей) то настройки берутся от этой кнопки.

Правильно ли я понимаю, что для одного окна объекта , при открытии из дерева объектов и при открытии по кнопке идут два разных названия?

SCADAMaster
25.02.2019, 17:05
Если у кнопки переопределены настройки - заданы собственные, то да.
Если все по умолчанию - то будут браться настройки окна.

Panda
27.02.2019, 16:39
Здравствуйте. Как убрать подчеркивание значения - "Признаки качества".
41456

SCADAMaster
27.02.2019, 16:43
В версии 3.10 появилась такая вкладка:

Panda
28.02.2019, 14:38
У меня версия 3.9.0.3129 . Есть ещё способы убрать подчеркивание значения ?

SCADAMaster
28.02.2019, 15:02
Только обновиться до 3.10

env
01.03.2019, 13:40
Добрый день! Я уже спрашивал "Подскажите пожалуйста, как можно реализовать вывод списка существующих, сохраненных отчетов на мнемосхему? Может какой-то изменяющийся список с выборкой по датам?"
и вы давали в ответ "Скрипт возвращения выбранного сообщения"
Не могу разобраться, может есть вариант проще? Нельзя как-то привязать это дело к кнопке или добавить какой-то сторонний компонент?

SCADAMaster
01.03.2019, 14:16
Что вам в конечном счете нужно сделать? Опишите вашу задачу подробнее.

Вариантов вывести список сохраненных отчетов вагон. Можно свой ВФБ написать который будет сканировать определенную папку, можно взять ВФБ "Список строк" и на него выводить список файлов (скриптом писать в файл имена файлов), можно просто папку в Explorer через ФБ "Запуск процесса" открыть, можно скриптом из журнала как описывали.

env
01.03.2019, 15:01
Что вам в конечном счете нужно сделать? Опишите вашу задачу подробнее.

Есть несколько разных отчетов регулярно сохраняющихся в разное время ежедневно. Нужно вывести на мнемосхему список со всеми этими существующими отчетами, с возможностью фильтрации по дате и желательно по объекту. Ну и соответственно чтобы можно было открывать эти отчеты из этого же списка.
В существующем варианте на АРМ RATE визуально выглядит так.
41486

SCADAMaster
01.03.2019, 15:19
Вариант со скриптом и журналом проще всего. Средствами журнала можно и фильтрацию и выборку по дате сделать.
Когда сохраняете отчет, сформируйте также событие, а в текст сообщения добавьте путь к вашему отчету (для этого под полем текста сообщения есть табличка куда можно перетащить переменную).
Сообщение попадает в журнал.
С помощью скрипта, когда оператор выбирает нужно сообщение можно получить его атрибуты. Например текст:
allRecs[0].Message
Вот вам путь к вашему отчету.
Ну а дальше через ФБ "Запуск процесса" можно его открыть через PDF Reader.
Можно не только путь положить в текст сообщение, а вообще что угодно - например начало и конец, в скрипте их извлекаете (парсить на C# достаточно просто), и можете заново отчет построить.

Panda
01.03.2019, 18:07
Добрый день.
Необходимо формировать отчёт с несколькими промежутками времени.
Как это можно реализовать ?

Пример как должен выглядеть отчёт прикладываю.
41501

SCADAMaster
01.03.2019, 18:49
И где тут несколько промежутков времени?
Больше похоже на обычный периодический отчет, только не вертикальный, а горизонтальный.

Panda
04.03.2019, 08:57
И где тут несколько промежутков времени?
Больше похоже на обычный периодический отчет, только не вертикальный, а горизонтальный.

Как сформировать горизонтальный отчёт ?

SCADAMaster
04.03.2019, 09:14
Пример в приложении.

Panda
04.03.2019, 10:03
Пример в приложении.

Мне такая таблица к сожалению не подходит.
Необходимо формировать именно вертикальную таблицу, чтобы было 5 промежутков времени.
Объектов будет более 100 штук, смотреть горизонтальную таблицу будет не удобно.

41527

SCADAMaster
04.03.2019, 12:00
А чем не подходит то?
5 промежутков времени - это определяется настройками источника. Если строите с шагом в сутки, то указываете начало и конец с разницей в 5 суток.
Затем в сам источник данных добавляете переменные которые будете размещать на бэнде, и их добавляете на бэнд как примере.

Panda
04.03.2019, 15:56
А чем не подходит то?
5 промежутков времени - это определяется настройками источника. Если строите с шагом в сутки, то указываете начало и конец с разницей в 5 суток.
Затем в сам источник данных добавляете переменные которые будете размещать на бэнде, и их добавляете на бэнд как примере.

Разобрался с отчётом, спасибо за помощь.

Panda
12.03.2019, 11:43
Добрый день.

Необходимо знать сколько дней в месяца работал объект.
Функция архива ArchMomentValue может работать с функцией времени DateTime () ? У меня они не работают.
41674

SCADAMaster
12.03.2019, 12:30
Нужно использовать функцию AbsArchDiscreteCounterTime( )
Описание функции есть в справке.
Но с такими расчетами нужно быть аккуратнее - нельзя каждый цикл опроса пересчитывать пробег за месяц, вы положите систему.
Положите расчет в отдельный объект, в него на вкладке Опрос есть поле "Условие выполнения" - используйте его. Например выполняйте опрос по импульсу от кнопки - по команде оператора, или по расписанию раз в сутки и т.д.

za9c
13.03.2019, 15:40
Здравствуйте.
Modbus OPC universal modbus key 2500 build - 3.2.16 - в тег(String/ReadOnly) невозможно вписать строку длиной более 37 символов.
server.WriteTag("название_тега","более 37 символов",OPC_QUALITY_GOOD). на 38символе или виснет OPC или просто не прописывает тег!
В более новых OPC (*сравниваю с демо-версиями, с ограничением в 32тега - такого нет*)!
Есть способ лечить, данную проблему?

SCADAMaster
13.03.2019, 16:29
Если в более новых такого нет - то обновиться до более свежей версии.

za9c
13.03.2019, 16:32
Если в более новых такого нет - то обновиться до более свежей версии.

16 года сборка! За деньги?

SCADAMaster
13.03.2019, 16:45
Напишите на support(собка)insat.ru и укажите номер ключа

Panda
14.03.2019, 21:49
Нужно использовать функцию AbsArchDiscreteCounterTime( )
Описание функции есть в справке.
Но с такими расчетами нужно быть аккуратнее - нельзя каждый цикл опроса пересчитывать пробег за месяц, вы положите систему.
Положите расчет в отдельный объект, в него на вкладке Опрос есть поле "Условие выполнения" - используйте его. Например выполняйте опрос по импульсу от кнопки - по команде оператора, или по расписанию раз в сутки и т.д.

Необходимо знать сколько дней в месяце работал объект. Берётся определенный момент времени и проверяется объект - работает он или нет.
К примеру:
01.03.2019 объект работал - значит 1
02.03.2019 объект работал - значит 1
03.03.2019 объект не работал - значит 0
04.03.2019 объект не работал - значит 0
В сумме получается 2 дня объект работал.

Я использую формулу
ЕСЛИ( ArchMomentValue (Состояние_объекта, DateTime( ) -86400 , 2) = ИСТИНА, 1, 0)

Но она не работает должным образом.

za9c
15.03.2019, 06:44
Панда - было похожая задача, решил так!

тег расчёт - AbsArchDiscreteCounterTime( Состояние_объекта,время_начало,время_конец)!
Далее, создавал подпрограмму ST!!! где переводил секунды во время - получал простой_оборудование и время_работы в формате №ГГГГ-ММ-ДД ЧЧ:ММ:СС - эта беда архивировалась и формировалась в отчёт! - и время время выборки пользователь задавал сам!

SCADAMaster
15.03.2019, 09:44
Необходимо знать сколько дней в месяце работал объект. Берётся определенный момент времени и проверяется объект - работает он или нет.
К примеру:
01.03.2019 объект работал - значит 1
02.03.2019 объект работал - значит 1
03.03.2019 объект не работал - значит 0
04.03.2019 объект не работал - значит 0
В сумме получается 2 дня объект работал.

Я использую формулу
ЕСЛИ( ArchMomentValue (Состояние_объекта, DateTime( ) -86400 , 2) = ИСТИНА, 1, 0)

Но она не работает должным образом.
Используйте функцию AbsArchMomentValue

a_gricaj
15.03.2019, 12:33
Подскажите пожалуйста почему на выходе скрипта нет значения переменной

сам скрипт:


using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using FB.FBAttributes;
using System.Linq;


[FBRetain]
public partial class ФБ : ScriptBase
{
float TmpMealLess39;

public override void Execute()
{
var item = (ITreePinHlp)HostFB.TreeItemHlp.Project.Item("Объект.Бункер.4_1л.FB.SetProteinR");

var ItemValue=(double?)(item.GetRTPin().ObjectValue);


MealLess39=ItemValue;

}
}

выход скрипта переменная MealLess39, скрипт компилировался без ошибок
Сделал как тут https://insat.ru/blog/fb-skript-c-i-ego-ispolzovanie-v-masterscada-perebor-peremennykh/

Нужно вставлять переменные из других объектов в скрипт без объявления входов-выходов

SCADAMaster
15.03.2019, 13:19
Например если есть ошибка в коде (путь к переменной не найден). Это можно проверить открыв окно лога скады - правый нижний угол, красная кнопка.
Или значения у данной переменной нет.

a_gricaj
15.03.2019, 13:23
Например если есть ошибка в коде (путь к переменной не найден). Это можно проверить открыв окно лога скады - правый нижний угол, красная кнопка.
Или значения у данной переменной нет.

Точно, пишет - Заданное приведение является недопустимым. Интерфейс не поддерживается.

Как тут быть??

a_gricaj
15.03.2019, 13:27
Может какой-то сборки не хватает?

SCADAMaster
15.03.2019, 13:36
А переменная имеет тип вещественный двойной точности?
Может там целый или простой вещественный?

a_gricaj
15.03.2019, 13:41
А переменная имеет тип вещественный двойной точности?
Может там целый или простой вещественный?

Объект.Бункер.4_1л.FB.SetProteinR - вещественный, и в скрипте выход вещественный
Что-то не правильно? Оба простые

SCADAMaster
15.03.2019, 13:54
Тогда преобразование должно быть float?, а не double

a_gricaj
15.03.2019, 13:58
Вы правы, заработало, очень благодарен

a_gricaj
15.03.2019, 14:21
Тогда преобразование должно быть float?, а не double

В си не силен, если тип данных "перечислимый", во что тогда должно быть преобразование? Строка?

SCADAMaster
15.03.2019, 14:23
Перечислимый - это вообще целый int

a_gricaj
15.03.2019, 14:29
Перечислимый - это вообще целый int

Да, с int получилось

Panda
15.03.2019, 16:46
Используйте функцию AbsArchMomentValue

Всё же функции AbsArchDiscreteCounter, AbsArchMomentValue, AbsArchDiscreteCounterTime( ) не подходят.
Нужна именно функция ArchMomentValue.

Только я одного понять не могу.
Состояние значения = истина
Формула : (ArchMomentValue (Значение, DateTime( ) -10 , 2))
В ответе показывает -1. Это как получается ? Разве не 1 должна быть ?

SCADAMaster
15.03.2019, 18:19
Использовать нужно именно AbsArchMomentValue, так как ArchMomentValue ищет в текущих сутках.
Результат функции будет найденное за указанное время значение в архиве.

ASG
19.03.2019, 17:08
День добрый,
Пытаюсь освоить Скрипты + С#...туговато идет.
Хочу модифицировать-упросить скрипт из примера, задача:
Скрипт на входы получает значения от OPC (строки и их преобразует.) Затем нужно "ниже" скрипта найти нужный Объект (по условию Имя Объекта например или по переменной в этом объекте), в нем ПодОбъекты и в них Переменные (Значения) и им присвоить преобразованные значения.
Как а понял по примерам нужно использовать конструкцию типа:

var elem = (ITreeItemHlp)HostFB.TreeItemHlp.ParentObject;

elem.NavigateChilds(delegate(ITreeObjectHlp item)
{
// тут условяи поиска и действия ;
}, TreeItemMask.Object, (NavigateItemsFlags)0);

Запутался... поможете примером?
Спасибо.

SCADAMaster
19.03.2019, 17:39
Все примеры есть в блоге:
https://insat.ru/blog/?category=9
Задавайте конкретные вопросы - что именно не получается.

Andrei1401
21.03.2019, 14:29
Здравствуйте. Подскажите пожалуйста как можно осуществить регулирование по типу "нагрев-холодильник" чтобы у него на выходе был логический сигнал, с возможностью вода задания и настроек для ПИД регулирования.

SCADAMaster
21.03.2019, 14:36
В MasterSCADA?
У нас регулятор только прямой - нагреватель.

Andrei1401
21.03.2019, 14:47
Прямой в принципе тоже пойдет, а где он находится?

SCADAMaster
21.03.2019, 14:58
В разделе Управление

grey.shape
22.03.2019, 21:21
Доброго времени суток. Подскажите новичку: как в masterscada присвоить переменной фиксированное значение с прибора при нажатии кнопки на мнемосхеме. Необходимо получить не фактические показания (Xт) прибора, а их изменение (X) по сравнению некоторым начальным значением (Xн): X=Xт-Xн.

SCADAMaster
23.03.2019, 10:18
Команда, тип дискретный - тащим на мнемосхему, она станет кнопкой.
У команды, есть вкладка Действие - Присвоить. Приваивайте вашей переменой значение другой переменной.

senat892
25.03.2019, 13:05
Добрый день!
Есть вопрос по свойствам События в MS 3.9 - 3.10.
У меня есть объект и его мнемосхема.
На ней несколько кнопок без фиксации и несколько событий.
При значении времени собственного цикла объекта 500 мс. все работает, но при его уменьшении до 300 мс. и ниже начинают проглатываться импульсы от Событий.
Поведение Кнопок при нажатии отражено в мануале:
41905
А как эта циклограмма выглядит для Событий (в мануале не нашел)?
Есть ли какие-то стандартные методы решения?

SCADAMaster
25.03.2019, 13:21
Где вы уменьшаете период?
Хотим отметить что период опроса в проекте нужно держать единым - в подписке на значения из ОРС и периоде опроса объектов (Система - Опрос).
Если период будет одинаковый и опрос будет по изменению никаких подобных проблем не будет

grey.shape
25.03.2019, 13:32
Доброго времени суток. Спасибо Вам за оперативный ответ, но возникла ещё одна проблема. Для тензометрии использую прибор МВ110-224.4ТД. При работе с конфигуратором и Owen Process Manager показания с прибора получаю. Но в masterscada 3.5 Opc переменные имеют нулевые значения. Использую преобразователь AC4. OPC сервер установлен, устройство с нужным адресом добавлен.

SCADAMaster
25.03.2019, 14:10
ОРС сервер ОВЕН? Тогда нужно начинать с него - нужно убедится что он получает данные от прибора.

env
25.03.2019, 15:22
Добрый день! Не могли бы вы пояснить ошибки по вашему скрипту "возвращения выбранного сообщения" и по возможности как исправить ?41907

SCADAMaster
25.03.2019, 15:35
Какая версия MasterSCADA?
Проверьте на текущей 3.10 Demo

senat892
25.03.2019, 15:45
Где вы уменьшаете период?
Хотим отметить что период опроса в проекте нужно держать единым - в подписке на значения из ОРС и периоде опроса объектов (Система - Опрос).
Если период будет одинаковый и опрос будет по изменению никаких подобных проблем не будет
Уменьшаю собственный цикл объекта с мнемосхемой.
Даже при одинаковых (но малых - 100мс) значениях времени опроса OPC и объектов (Система - Опрос) наблюдается проглатывание импульсов Событий.

SCADAMaster
25.03.2019, 15:54
Как вы обнаруживаете пропуск импульсов?

senat892
25.03.2019, 16:40
Я, наверное, неправильно выразился...
На выходе с объекта импульс есть, это подтверждает триггер.
А вот OPC через раз передает на запись "1" - запись "0", через раз - просто "0"

SCADAMaster
25.03.2019, 16:56
Какой ОРС используется?
В настройках скады период опроса ОРС также же как у объектов? Запись в ОРС по изменению?
Включите архивацию у переменных и посмотрите на вкладке Данные. Если будут видны ваши действия - значит все корректно и тогда нужно выяснять почему ОРС не принимает сигналы

env
26.03.2019, 07:55
Какая версия MasterSCADA?
Проверьте на текущей 3.10 Demo

Спасибо, помогло.
Еще не могли бы вы пояснить в примере скрипта, чем является данная "команда1"? 41914 (Скрипт возвращения выбранного сообщения)
Так понимаю это должен быть клик мыши по объекту в моем журнале, после которого начнет работать скрипт, но к чему я должен ее привязать не совсем понимаю?

senat892
26.03.2019, 08:16
Какой ОРС используется?
В настройках скады период опроса ОРС также же как у объектов? Запись в ОРС по изменению?
Включите архивацию у переменных и посмотрите на вкладке Данные. Если будут видны ваши действия - значит все корректно и тогда нужно выяснять почему ОРС не принимает сигналы
MasterOPC Universal Modbus Server, build 4.2.29, протокол ModbusTCP
Опрос 100мс (для всех объектов и OPC). Запись только по изменению.
Данные в объекте видны: вкл.-выкл. чередуются без сбоев.
Вот поэтому и интересует: справедлива ли циклограмма работы Кнопки для События

SCADAMaster
26.03.2019, 09:18
Спасибо, помогло.
Еще не могли бы вы пояснить в примере скрипта, чем является данная "команда1"? 41914 (Скрипт возвращения выбранного сообщения)
Так понимаю это должен быть клик мыши по объекту в моем журнале, после которого начнет работать скрипт, но к чему я должен ее привязать не совсем понимаю?
Данная команда включает отслеживание действий пользователя в журнале. Команда вытащена на мнемосхему как кнопка.

SCADAMaster
26.03.2019, 09:19
MasterOPC Universal Modbus Server, build 4.2.29, протокол ModbusTCP
Опрос 100мс (для всех объектов и OPC). Запись только по изменению.
Данные в объекте видны: вкл.-выкл. чередуются без сбоев.
Вот поэтому и интересует: справедлива ли циклограмма работы Кнопки для События
А в ОРС сервере у тега на вкладке Сообщения видны поступающие команды?

senat892
26.03.2019, 10:02
А в ОРС сервере у тега на вкладке Сообщения видны поступающие команды?
Да, но не стабильно. То пройдет последовательно запись "1" и запись "0", то просто запишет "0".
Существует ли возможность увеличить время импульса от События, например на 1-2 цикла? Думаю это бы решило проблему...

SCADAMaster
26.03.2019, 10:21
Приложите ваш проект (Проект - Экспортировать), а также конфигурацию ОРС сервера

senat892
26.03.2019, 10:59
Поставил на выход События ФБ "Выдержка времени" с минимальной уставкой в 1 сек - работает стабильно.

env
26.03.2019, 12:31
Данная команда включает отслеживание действий пользователя в журнале. Команда вытащена на мнемосхему как кнопка.

Добавил строку MessageBox.Show(allRecs[0].Message); в примере все работает, сообщение при клике появляется, а в проекте не появляется. в чем может быть причина ?

SCADAMaster
26.03.2019, 13:09
Вывод сообщений в таком окне использовать нельзя.

env
26.03.2019, 13:37
В примере почему тогда появляется?

SCADAMaster
26.03.2019, 13:45
В каком примере?
В примере что мы высылали такой код не используется

env
26.03.2019, 13:57
Прошу прощения, потерял суть вопроса. Добавил этот код по вашему совету:


Вариант со скриптом и журналом проще всего. Средствами журнала можно и фильтрацию и выборку по дате сделать.
Когда сохраняете отчет, сформируйте также событие, а в текст сообщения добавьте путь к вашему отчету (для этого под полем текста сообщения есть табличка куда можно перетащить переменную).
Сообщение попадает в журнал.
С помощью скрипта, когда оператор выбирает нужно сообщение можно получить его атрибуты. Например текст:
allRecs[0].Message
Вот вам путь к вашему отчету.
Ну а дальше через ФБ "Запуск процесса" можно его открыть через PDF Reader.
Можно не только путь положить в текст сообщение, а вообще что угодно - например начало и конец, в скрипте их извлекаете (парсить на C# достаточно просто), и можете заново отчет построить.

Для этого был добавлен вывод сообщения.

SCADAMaster
26.03.2019, 14:21
Для чего "этого"?
Способ вывода сообщений через MessageBox не допускается.
Можете генерировать стандартные сообщения - вкладка Списки сообщений. Примеры их генерации описаны в справке к скрипту.

env
26.03.2019, 14:51
В момент сохранения отчета срабатывает событие, формирующее сообщение, в котором прописывается результат ФБ "формирование строки", которое попадает в журнал. Как далее при клике на строку с отчетом в журнале можно получить какой-то атрибут, чтобы в дальнейшем связать его с ФБ "запуск процесса" и открыть выбранный в журнале отчет?

SCADAMaster
26.03.2019, 15:40
Это атрибут Message - мы вам про это писали.
Он представляет собой строку, дальше вы ее стандартными средствами C# парсите, извлекаете время, подаете на выход скрипта и начинаете формировать отчет.

Panda
27.03.2019, 15:10
Добрый день.
Необходимо в ячейке отчета и считать сколько дней объект работал в течении 30 дней.
Пример:
1.03 работал - 1
2.03 не работал - 0
3.03 не работал - 0
4.03 работал - 1
и т.д.
В итоге при сложении всех значений должно получится значение сколько дней объект работал в течении 30 дней.
Как это рассчитать?

Для примера прикладываю архив с отчетом.

VladGC
27.03.2019, 15:25
Добрый день!
Подскажите пожалуйста, как правильно организовать сохранение информации ?
Есть датчик температуры, который опрашивается раз в секунду. Хранить необходимо среднее за 10 минут. Что бы далее уже в отчетах работать не с 3600 значениями, а с 6.

SCADAMaster
27.03.2019, 15:31
Для этого у дискретных колонок есть обработка Количество включений.
Посмотрите эту докуметацию (https://insat.ru/metodicheskie-materialy/Расширенные%20способы%20обработки%20отчетов.pdf)- там все описано.

SCADAMaster
27.03.2019, 16:28
Добрый день!
Подскажите пожалуйста, как правильно организовать сохранение информации ?
Есть датчик температуры, который опрашивается раз в секунду. Хранить необходимо среднее за 10 минут. Что бы далее уже в отчетах работать не с 3600 значениями, а с 6.
Может просто для начала настроить мертвую зону архивирования? Установить ее 0.5% от шкалы, и тогда значений будет уже кратно меньше

VladGC
27.03.2019, 16:33
Может просто для начала настроить мертвую зону архивирования? Установить ее 0.5% от шкалы, и тогда значений будет уже кратно меньше

По тз надо ежесекундные усреднять и хранить уже средние за интервалы.

SCADAMaster
27.03.2019, 16:49
А зачем? Можно же в отчетах это делать.
В принципе если использовать архивацию в СУБД, то можно у прореженного слоя задать формирование интегральный средний.
Но основной слой все равно будет представлять набор исходных значений - без обработок.

VladGC
27.03.2019, 16:58
А зачем? Можно же в отчетах это делать.
В принципе если использовать архивацию в СУБД, то можно у прореженного слоя задать формирование интегральный средний.
Но основной слой все равно будет представлять набор исходных значений - без обработок.
Хранить информацию необходимо до 10 лет, и забивать архив ненужными значениями нельзя, ну и по ТЗ.
а во встроенной firebird такое можно будет организовать? А есть какие то механизмы, допустим что то вроде d-trigger для аналоговых значений, что бы каждые 10 минут считать среднее выдавать импульс и в архив писать "по изменению" ?

SCADAMaster
27.03.2019, 17:26
Хранить информацию необходимо до 10 лет, и забивать архив ненужными значениями нельзя, ну и по ТЗ.
а во встроенной firebird такое можно будет организовать?
Можно, но лучше для этого все же использовать MS SQL.
И как раз слои такую проблему и будут решать - вы можете сделать прореженные слой с шагом в 10 минут и обработкой "Интегральное среднее".


А есть какие то механизмы, допустим что то вроде d-trigger для аналоговых значений, что бы каждые 10 минут считать среднее выдавать импульс и в архив писать "по изменению" ?
ФБ "Повторитель по условию". На вход подавайте сигналы например от пульсатора, а выход архивируйте. Входной сигнал соответственно можете сформировать как угодно.
Но, повторим - лучше использовать стандартный механизм слоев.

VladGC
28.03.2019, 09:48
Можно, но лучше для этого все же использовать MS SQL.
И как раз слои такую проблему и будут решать - вы можете сделать прореженные слой с шагом в 10 минут и обработкой "Интегральное среднее".


ФБ "Повторитель по условию". На вход подавайте сигналы например от пульсатора, а выход архивируйте. Входной сигнал соответственно можете сформировать как угодно.
Но, повторим - лучше использовать стандартный механизм слоев.
БД вообще не вариант к сожалению
А что на счет такой схемы:
команда 1 - генератор синус (0-100)
далее этот сигнал идёт на "Скользящее среднее"
далее выход этого фб идет на "значение" с именем 20
В настройках значения в вкладке опрос ставится нужный интервал (для примера поставил 60 секунд)
в настройках архивирования "по изменению"
На графике видно что сигнал меняется раз в минуту.
Правильно ли я понимаю, что архив значения 20, который меняется раз в минуту, будет содержать не ежесекундные одинаковые значения, а именно измененные?
419524195341954

SCADAMaster
28.03.2019, 10:10
Если уж на то пошло, то просто оставьте два слоя - основной и минутный.
В настройках шаблона сделайте обработку Интегральное среднее. Основной слой храните 30 дней, минутный - 2 года.

VladGC
28.03.2019, 11:11
Если уж на то пошло, то просто оставьте два слоя - основной и минутный.
В настройках шаблона сделайте обработку Интегральное среднее. Основной слой храните 30 дней, минутный - 2 года.

Для слоев обязательно использовать встроенную firebird, или можно использовать файловый архив?
Единственное непонятно, если я выбираю в шаблоне "интегральное среднее"
То минутный интервал будет считаться из основного слоя, который имеет интервал в 1 такт и интегральное среднее основного слоя = текущему измеренному ?
Получается что срок хранения основного слоя должен быть больше чем минутный ( и остальные) слой ?
4195641957

SCADAMaster
28.03.2019, 11:27
Для слоев обязательно использовать встроенную firebird, или можно использовать файловый архив?

Слои только в базах данных, в файловом архиве слоев нет.


То минутный интервал будет считаться из основного слоя, который имеет интервал в 1 такт и интегральное среднее основного слоя = текущему измеренному ?

Он считается на лету, т.е прошла минута - прошел расчет по значениям из основного слоя, записалось в слой.
Поэтому основной слой можно (и нужно) делать с более коротким сроком хранения.

VladGC
28.03.2019, 13:40
Слои только в базах данных, в файловом архиве слоев нет.


Он считается на лету, т.е прошла минута - прошел расчет по значениям из основного слоя, записалось в слой.
Поэтому основной слой можно (и нужно) делать с более коротким сроком хранения.

Подскажите пожалуйста,
определил для команды 1 сохранение по шаблону.
Но на тренде минутный слой не отображается
41964
419614196241963

SCADAMaster
28.03.2019, 14:28
А что тогда по вашему у вас отображается?

Panda
28.03.2019, 14:56
Добрый день. Столкнулся с такой проблемой:
При долгом простое - данные в отчете пропадают.
Т.е. данные не обновляются (всегда 0), они присутствуют некоторое время, а потом исчезают.

Скриншоты прикладываю.

SCADAMaster
28.03.2019, 15:09
Что значит "исчезают"? Отчет берет данные из архива, если в архиве данные есть, то и в отчете они будут.

Panda
29.03.2019, 09:42
Что значит "исчезают"? Отчет берет данные из архива, если в архиве данные есть, то и в отчете они будут.


Во вкладе "Архив" по данному значению стоит галочка "По изменению". Т.е. запись происходит только тогда, когда значение изменяется.
Данное значение не изменяется в течении долгого периода времени, почти всегда 0. При формировании отчета на первых страницах значение "0" присутствует, но через некоторое время оно пропадает.

SCADAMaster
29.03.2019, 10:12
Ну а архиве оно присутсвует на этот момент?
Приложите ваш проект целиком вместе с данными - заархивируйте папку проекта, укажите путь к отчету, а также укажите время за которое вы формируете отчет при котором значение пропадает, а также сформированный отчет (сохраните его в PDF).

Panda
29.03.2019, 13:49
Ну а архиве оно присутсвует на этот момент?
Приложите ваш проект целиком вместе с данными - заархивируйте папку проекта, укажите путь к отчету, а также укажите время за которое вы формируете отчет при котором значение пропадает, а также сформированный отчет (сохраните его в PDF).

Оригинальный проект весит более 3 Гб. Сделал копию и удалил всё лишнее.
Необходимо запустить проект, перейти на окно управления, выставить дату с 27.03.2019 по 29.03.2019 и нажать на кнопку сформировать.
Сформируется отчёт на котором будет видно, что на 3 странице у устр. 4 данные есть, но на 4 стр. у устр.4 данные будут отсутствовать.

Ссылка на проект (https://send.firefox.com/download/ac34ba01803841e2/#PO5oGVz_zF9yxfwzzekVSg). В архиве так же находится сформированный отчёт в формате PDF.

SCADAMaster
29.03.2019, 14:15
Так получается потому, что у вас в указанное время была выключена скада. В этом случае значения будут равны Null, и выходят пустые ячейки (можно сделать чтобы вместо них были нули, но это не совсем правильно). Другой вопрос почему так вышло.
В приложении скриншоты двух параметров, по проблемному видно, что скада в 8.29 выключилась, а следующее значение пришло только в 5 утра 29.
У другого параметра выключение в тоже время, но следующее значение пришло в 9.41 28 числа.
Возможно по проблемному параметру просто не поступало значение от ОРС сервера (имело признак качества Empty).
Так что все работает корректно.
Почему то не прикрепляются рисунки. Вот ссылки
https://yadi.sk/i/SSgYomIQ7ySOqA
https://yadi.sk/i/DnLGcwzqltv3LQ

Panda
01.04.2019, 11:49
Так получается потому, что у вас в указанное время была выключена скада. В этом случае значения будут равны Null, и выходят пустые ячейки (можно сделать чтобы вместо них были нули, но это не совсем правильно). Другой вопрос почему так вышло.
В приложении скриншоты двух параметров, по проблемному видно, что скада в 8.29 выключилась, а следующее значение пришло только в 5 утра 29.
У другого параметра выключение в тоже время, но следующее значение пришло в 9.41 28 числа.
Возможно по проблемному параметру просто не поступало значение от ОРС сервера (имело признак качества Empty).
Так что все работает корректно.
Почему то не прикрепляются рисунки. Вот ссылки
https://yadi.sk/i/SSgYomIQ7ySOqA
https://yadi.sk/i/DnLGcwzqltv3LQ


Проблема остается.
На выходные был запущен проект и он работал без остановки. Так же в отчете отсутствуют значения.
По поводу значений - оно не может быть Empty. Если пришли значения от других устройств (менеджер, устр. 1, устр. 2, устр. 3), то и для устр. 4 значения тоже пришли (значения 0).
Как тогда сделать, чтобы вместо пустых ячеек были 0 ?

SCADAMaster
01.04.2019, 15:21
Проблема остается.
На выходные был запущен проект и он работал без остановки. Так же в отчете отсутствуют значения.

Проверяйте значение архива в этот момент времени. Мы вам детально описали в чем проблема.
Сделать чтобы выводилось 0 можно включив настройку
https://yadi.sk/i/G4AiuN1z7eY7WA

VladGC
01.04.2019, 16:28
А что тогда по вашему у вас отображается?

Добрый день!
Со слоями разобрался, спасибо за помощь.
Подскажите еще, как правильно рассчитывать размер архива ?
Например для 10 переменных(вещ.дв. точности) которые пишутся ежесекундно( без усреднения) за 10 лет.
Для одной переменной:
8*3600*24*365*10 = 2522880000 байт . ~2.5 ГБ
Итого для 10 переменных 25 ГБ
Плюс метки времени , всякие id и т.п.

SCADAMaster
01.04.2019, 16:36
Это очень трудно сказать - зависит также от типа БД. В Posgre очень большие базы например.
В MS SQL можно ориентироваться на 60 байт в одну запись.

VladGC
01.04.2019, 16:47
Это очень трудно сказать - зависит также от типа БД. В Posgre очень большие базы например.
В MS SQL можно ориентироваться на 60 байт в одну запись.
А в firebird Embedded ?
Я правильно понимаю
PROJECTID INTEGER NOT NULL,
LAYER INTEGER NOT NULL,
ITEMID INTEGER NOT NULL,
"TIME" TIMESTAMP NOT NULL,
"VALUE" DOUBLE PRECISION,
QUALITY INTEGER,
FLAGS INTEGER

5 int (10 байт) + dbl (8 байт) + time (8 байт) итого 26 байт ?

SCADAMaster
01.04.2019, 16:57
Можно смело умножить на 2-3, как именно хранит данные Firebird нам неведомо.

VladGC
02.04.2019, 11:08
Можно смело умножить на 2-3, как именно хранит данные Firebird нам неведомо.

Как считаете, есть ли смысл разделять архивы?
Например :
один и тот же параметр архивировать в две(или более) БД (два или более бд коннектора)
1 БД - для ежесекундной записи и отображении на трендах со сроком хранения допустим месяц.
2 БД - для усредненных часовых интервалов для построения отчетов и т.п.
Вопрос возник от того, что если я правильно понимаю, в одной БД MS3 пишет все в одну таблицу, и старые записи будут удаляться(цикл хранения которых месяц ) и будет происходить перестроение БД( или что там происходит при удалении старых и записи новых данных)
Речь идет о Firebird Embedded

SCADAMaster
02.04.2019, 13:00
Не имеет смысла.

a_gricaj
02.04.2019, 13:52
Здравствуйте, подскажите пожалуйста,
стоит задача построить систему на одном ПЛК (VIPA) и двух ПК c МастерСКАДА (ПК - взаимозаменяемые), опрос ПЛК через ОPC-сервер(VIPA).
Работа подобной системы но с одним ПК уже проверена не раз - все отлично.

Почитал мануал "Разработка сетевых проектов" и есть ряд вопросов:
1. Если количество тегов 2000 то нужно заказать МастерСКАДА - MSRT2,5K-Net-RED сразу на два ПК, или две MSRT2,5K-Net на каждый ПК?
2. Архитектура проекта у меня должна быть сервер-серверная или лучше резервированная система?
3. Выбор места исполнения объекта "На всех компьютерах"?

SCADAMaster
02.04.2019, 15:06
1. Если количество тегов 2000 то нужно заказать МастерСКАДА - MSRT2,5K-Net-RED сразу на два ПК, или две MSRT2,5K-Net на каждый ПК?
2. Архитектура проекта у меня должна быть сервер-серверная или лучше резервированная система?

Так вам нужно резервирование? Или простой сетевой проект.
Обратитесь в отдел продаж - они вам детально опишут что нужно приобрести.



3. Выбор места исполнения объекта "На всех компьютерах"?
Нет. Подробнее тут:
https://insat.ru/blog/naznachenie-ispolneniya-obektov-v-setevykh-proektakh/

a_gricaj
02.04.2019, 15:11
Так вам нужно резервирование? Или простой сетевой проект.
Обратитесь в отдел продаж - они вам детально опишут что нужно приобрести.


Нет. Подробнее тут:
https://insat.ru/blog/naznachenie-ispolneniya-obektov-v-setevykh-proektakh/

Мне нужно одновременное управление тех процессом с двух ПК или одного если второй выключен.
То есть будет два ПК и на каждом свой OPC-сервер которые будут опрашивать один ПЛК. Проекты ОРС-сервера и скады идентичны. Как тут быть?
Я пробовал запускать один и тот же проект на двух ПК - нужна синхронизация

SCADAMaster
02.04.2019, 15:29
Вообще это резервирование.
Каждый оператор будет сидеть за своим компьютером? Или будет один оператор?

a_gricaj
02.04.2019, 15:37
Вообще это резервирование.
Каждый оператор будет сидеть за своим компьютером? Или будет один оператор?

Да, оператор один
Скада большая, планируем ставить два монитора на каждый ПК.
На одном ПК - на двух мониторах выводим мнемосхему тех процесса, на втором ПК - на двух мониторах выводим тренды и дополнительные окна или наоборот

a_gricaj
02.04.2019, 15:43
Да, оператор один
Скада большая, планируем ставить два монитора на каждый ПК.
На одном ПК - на двух мониторах выводим мнемосхему тех процесса, на втором ПК - на двух мониторах выводим тренды и дополнительные окна или наоборот

например есть насос - его нужно иметь возможность включить/выключить с двух ПК - то есть тег управления в ПЛК одновременно пишется/читается с компьютера №1 и компьютера №2 (у каждого компьютера запущен свой ОРС сервер - но набор тегов идентичен)

SCADAMaster
02.04.2019, 15:43
Тогда нужна RED версия.
Вы можете обратится в отдел продаж - они все опишут.