PDA

Просмотр полной версии : ОРС и модем



Safron
07.12.2018, 10:11
Всем доброго дня. Есть проект. Мастер скада опрашивает удалённые GSM модемы посредством универсального модбас ОРС сервера. Всё как бы работает. Но в силу того, что местами плохие условия приёма (слишком удалены объекты от города), временами пропадает связь с этими модемами (интернет). Модем зависает и очухаться ему помогает такая функция как обычный звонок на номер симкарты его. В его памяти записаны несколько номеров звонок с которых инициализирует перезагруз.
Так вот. Хотелось бы автоматизировать этот процесс. Не диспетчеру хвататься за телефон и названивать, а посредством аппаратно-программного комплекса.
Как я вижу( возможно неправильно). Скада диагностирует качество связи орс переменных и в случае плохого качества в течении определённого времени (к примеру 5 мин) инициализируется автодозвон.
Но пока ума не приложу какой для этого модем подобрать и орс сервер (дополнительный) использовать. Пытался лектус приспособить.., но в нём нет такой переменной при подачи сигнала на которую инициализировался бы дозвон. Там только выставляется период дозвона.
В общем ..я завис...

SCADAMaster
07.12.2018, 12:00
Наш Modbus Universal может делать дозвон с помощью скриптов.
Конфигурация в приложении. Документация по ссылке (https://insat.ru/products/Universal_MasterOPC/work_with_modem.pdf).

Safron
07.12.2018, 12:36
Спасибо. У меня сразу вопрос.
Это хорошо, что уже готовый пример со скриптом, но хотелось бы описание скрипта, чтобы было какое то понимание

Safron
07.12.2018, 12:37
Извиняюсь... документация в ссылке...

Safron
07.12.2018, 12:59
Прочитал документацию. К сожалению описание скрипта нет...хотелось бы понимать как и что

SCADAMaster
07.12.2018, 13:13
В настройках устройства указываете номер телефона, указываете время ожидания ответа. В режиме исполнения подаете сигнал на вход "Опросить".

Safron
10.12.2018, 08:40
А не подскажите какой модем можно приспособить? Что то овеновский уже не выпускают

SCADAMaster
10.12.2018, 09:33
Для дозвона можно любой использовать.
Даже USB 3G модемы можно попробовать (когда делалась эта конфигурация именно на таком и проверялось).

Safron
10.12.2018, 12:29
А как программа ведёт себя, если одновременно на несколько номеров надо звонить. Какой то приоритет есть?

SCADAMaster
10.12.2018, 14:37
Одновременно нельзя.
Нужно дождаться ответа от одного и потом переходить к следующему.

Safron
11.12.2018, 08:03
Пробовал три USB модема. Ни один не поддерживает дозвон. Только интернет и смс. Один из модемов вообще не имулировал сом порт, два других по два порта выдают..
В общем, не знаю ...то ли от оператора это зависит, то ли от модификации модема.......может вы что то подскажите?
40316

SCADAMaster
11.12.2018, 09:32
От оператора точно не зависит. Мы проверяли на Huawei E1550
Модемы cinterion можно попробовать

Safron
12.12.2018, 08:35
да...точно не зависит. оказалось, что эти модемы можно разлочить (отвязать от оператора) и другие прошивки с включением голосовой функции...
у меня возникли ещё вопросы.
в самом ПК надо настраивать модемное подключение? указывать номера телефонов? правила набора номеров?
и ещё ..скрипт выдаЕ т сообщение: (12-12-2018 11:19:13.353 Опросить:Модем.Устройство.Опросить >> [string "--[[(R)Модем.Устройство.Опросить]]call=false;..."]:83: invalid escape sequence near '"' )

SCADAMaster
12.12.2018, 09:41
в самом ПК надо настраивать модемное подключение? указывать номера телефонов? правила набора номеров?




и ещё ..скрипт выдаЕ т сообщение: (12-12-2018 11:19:13.353 Опросить:Модем.Устройство.Опросить >> [string "--[[(R)Модем.Устройство.Опросить]]call=false;..."]:83: invalid escape sequence near '"' )
Нужен лог.
Для этого в свойствах сервера включите запись журнала и всех его событий размер лога задайте равным 10000. Начиная с версии 4.2.24 у каждого устройства добавлена настройка "Журнал" - включите запись у проблемного устройства, и также включите запись всех действий. Запустите режим исполнения и воспроизведите ошибку. Лог пишется в папку:
c:\ProgramData\InSAT\MasterOPC Universal Modbus Server\SERVERLOGS\
Лог заархивируйте и вышлите нам, также пришлите вашу конфигурацию ОРС сервера.

Safron
03.02.2019, 10:29
Здравствуйте. Возник вопрос с дозвоном через USB модем. Скрипт в ОРС сервере работает. Напрямую из ОРС отправляешь вызов - он дозванивается.
В скаде возникли проблемы. Там тоже реализован скрипт на ST.
Проблема в том, Что сигнал вызова из скрипта на соответствующую переменную ОРС вроде как проходит, но тут же сбрасывается. Как я понял.
Если сигнал вызова соединить просто с переменной в объекте, то она устанавливается вкл как положено и скрипт работает как надо.
Не понятно, почему: в одном случае с переменной работает, а с такой же переменной в ОРС-отказвается:confused:

Переменная krg_2 соединена с переменной ОРС (не отрабатывает как надо), переменная krg_5 с переменной в дереве объекта (работает как положено).

Спасибо

SCADAMaster
04.02.2019, 09:57
Здравствуйте. Возник вопрос с дозвоном через USB модем. Скрипт в ОРС сервере работает. Напрямую из ОРС отправляешь вызов - он дозванивается.
В скаде возникли проблемы. Там тоже реализован скрипт на ST.
Проблема в том, Что сигнал вызова из скрипта на соответствующую переменную ОРС вроде как проходит, но тут же сбрасывается. Как я понял.
Если сигнал вызова соединить просто с переменной в объекте, то она устанавливается вкл как положено и скрипт работает как надо.
Не понятно, почему: в одном случае с переменной работает, а с такой же переменной в ОРС-отказвается:confused:

Переменная krg_2 соединена с переменной ОРС (не отрабатывает как надо), переменная krg_5 с переменной в дереве объекта (работает как положено).

Спасибо
Не совсем понятно в чем проблема. Запись в тег из скады проходит? Дозвон идет? В GUI ОРС сервера посмотрите в сообщениях у тегах - проходит ли запись.
И да - состояние тега сбрасывается из скрипта в ОРС, например при завершении вызова или ошибке:
function EndCall()
server.WriteCurrentTag(false,OPC_QUALITY_GOOD );
server.Message("кладем трубку");
err,buf,len = server.SendAndReceiveData("AT+CHUP\r",8,4);
return;
end;

if n~=nil and l~=nil then --найден OK
server.Message("Вызов завершен");
call=false;
server.WriteCurrentTag(false,OPC_QUALITY_GOOD );
return;
end;