Созданные ответы форума
-
АвторСообщения
-
MikhailМодератор
Идеология Rapid SCADA такова, что чем больше авторов и разнообразных модулей, тем лучше. При этом автор сам поддерживает свои модули в актуальном состоянии и отвечает на вопросы по нему, добровольно конечно ))
MikhailМодераторВыкладывайте на свой аккаунт и присылайте ссылку. Желательно на гитхабе сделать подробное описание, как здесь и также добавить вариант описания на английском. Тогда я смогу опубликовать драйвер в репозитории модулей.
Вы не пробовали тот драйвер, ссылку на который я публиковал?
MikhailМодератормаксимум 65536
Допустимое количество адресов регистров согласно стандарту Модбас. Но вообще-то на него отводится 2 байта, так что больше и не получится.
В Коммуникаторе в шаблоне адреса регистров указываются в 10-чной системе, переведите с помощью калькулятора, если нужно.
MikhailМодераторНа мой взгляд здесь не хватает скриншотов диспетчера задач с именами пользователей, от которых запущены процессы.
MikhailМодераторИстория изменений как обычно здесь http://doc.rapidscada.net/content/ru/version-history/
1. Модуль автоматического управления уже может использовать каналы управления ?
2. Почтовик может отправлять в юникоде ?1. Да.
2. Да.MikhailМодераторМожно проделать такой эксперимент:
1. Остановить службу Коммуникатора
2. Скопировать в C:\SCADA\ScadaComm файл ScadaCommMono.exe из Линуксового дистрибутива
3. Запустить вместо службы Коммуникатора файл ScadaCommMono.exe — это тот же Коммуникатор, но в виде консольного приложения, то есть он запустится от имени вошедшего пользователя WindowsMikhailМодераторДобрый день!
Далее убиваю процесс Инсата и запускаю его в ручную и получаю все наоборот, Rapid молчит (Выдавая ошибку E_NETWORK_ERROR), а вот второй клиент стабильно получает данные.
А если после этого перезапустить Коммуникатор, сможет ли он подключиться к OPC Инсат?
Думаю, нужно смотреть от имени каких пользователей работают процессы как OPC-сервера, так и подключающихся к нему OPC-клиентов. Кроме того, Коммуникатор работает «от имени администратора» — это тоже должно быть одинаково у всех задействованных программ.
MikhailМодераторА где пример лога с ошибкой?
Если нужно расшифровать данные Модбас, используйте http://modbus.rapidscada.net/MikhailМодераторЕсть готовый не опубликованный драйвер, который мы используем для https://smsc.ru/
Думаю, он подойдет. Вот ссылка, но проблема в том, что драйвер собран под новую версию Коммуникатора, может не заработать на текущей. Думаю, что нужно будет включить этот драйвер в дистрибутив для всех.Применительно в выкладыванию модулей, однозначно рекомендую GitHub. Есть хорошие аналоги, но всё же GitHub самый популярный.
MikhailМодераторПо поводу номера порта у меня нет идей. Самое главное, что работает. Что в итоге потребовалось сделать?
В новой версии, которая надеюсь скоро появится, команды передаются в Unicode и проблема с кодировкой исчезнет. Пока отправляйте латинскими буквами.
MikhailМодераторДобрый день!
Самый понятный вариант — использовать плагин Гибкий отчёт. Плагин будет сам считать разницу.Чтобы получить значение за час во входном канале, потребуется сделать дополнительный входной канал (пусть №221) типа Дорасчётный ТИ. Затем нужно для канала 220 задать формулу MyFunc() примерно такую (в сообщениях я формулы не тестирую):
double MyFunc() { double delta = Cnl - Val(); SetVal(221, Val(221) + delta); return Cnl; }
Формула для канала 221: HourBeg()?0:Val()
HourBeg нужен, чтобы сбросить значение в начале часа.MikhailМодераторМне встречалось, когда надо указывать 40001, и также встречалось, когда в документации написано 40001, а надо указывать 1. Для адреса 46144, судя по всему, всё нормально работает.
MikhailМодераторЖелательно приложить лог линии связи, чтобы были видны передаваемые и принимаемые данные для проблемного адреса.
MikhailМодераторOnCurDataProcessed(int[] cnlNums, SrezTableLight.Srez curSrez)
OnCurDataCalculated(int[] cnlNums, SrezTableLight.Srez curSrez)Аргументы curSrez — один и тот же полный срез, а cnlNums каждый раз разные по смыслу
MikhailМодераторOnCurDataCalculated вызывается постоянно, поэтому рекомендую в нём получать нужные данные. В текущей реализации ссылка на текущий срез, который передаётся в этих методах, не меняется, но нет гарантии, что так и будет дальше.
Если не хотите «грязное чтение» из среза, то при его чтении сделайте lock (curSrez)
Однако, при неосторожном обращении с lock Сервер может зависнуть из-за взаимных блокировок. -
АвторСообщения