среди добавляемых приборов не увидел ТРМ-132м
среди добавляемых приборов не увидел ТРМ-132м
А когда появится конфигурации для ПР110 с ПР-МИ485
Для ПР сделать универсальную конфигурацию нельзя - у него конфигурируемые адреса.
Вы можете сделать конфигурацию самостоятельно - просто добавив необходимые теги.
Посмотрите видео на странице загрузки, и все станет понятно:
http://www.masteropc.ru/prices/info.php?pid=6944
А как можно задать IP-адрес для ModbusTCP, если он в виде символьного имени?
У меня контроллер имеет динамический IP, и подключаюсь к нему с помощью DynDNS - т.е. обратиться надо к устройству по адресу вида myhost.dyndns.org порт 502.
Пробовал вбить символьное имя вместо цифр IP в настройках узла - не работает..
Такой режим в MasterOPC пока что не поддержан.
Очень жаль.. Не всегда хочется у оператора GSM заключать контракт на статический IP, а динамический на любом тарифе поднимается - удобно, если надо по-быстрому подключиться.
честно говоря, никогда с прокси дела не имел. если не сложно - можете подсказать что-то из бесплатных?
если рассматривать платный вариант, то все проще - Lectus OPC прекрасно с символьными адресами работает, но платить 4500 за то, чтоб передать десяток регистров - это как-то перебор.. Да и очень понравились возможности MasterOPC в плане скриптов.
понятно.. попытался тоже пока почитать - сходу технологию прокси не понял, буду пытаться изучать дальше. под винду вроде рекомендуют 3proxy..
а может все-таки дождусь поддержки символьных адресов от MasterOPC, т.к. очень бы не хотелось на клиентском компе в чужой сети огород городить, а потом ездить за тридевять земель поднимать это, если вдруг чего рухнет..
Да еще и для всех остальных прог этого компа доступ в интернет должен остаться как был, через прокси только OPC-сервер посадить надо.
а MasterOPC умеет работать через прокси? Насколько я понимаю, где-то в его настройках надо указать, что работать через прокси ну и там тип прокси и т.п. Вроде такого не нашел..
Пока нет.
Мы обсудим с программистом возможность реализации такой задачи.
Однако нам она не видится очень актуальной - правильнее и безопаснее создавать VPN соединение.
VPN на контроллере ПЛК100 и модеме ПМ01? А это вообще реально?
А тогда вдогонку - а средствами скриптов нельзя получить IP адрес из символьного адреса? Или, например, я легко могу получить IP адрес от DynDNS и положить его, например, в текстовый файл на компе. А нельзя ли его потом скриптом считать и использовать?
Подскажите как в скрипте обработать ситуацию потери связи (физический обрыв линии)? В такой ситуации значения тегов замораживаются с признаком качества "Ок" (пробовал на эмуляторе com0com), что неприемлимо. Последняя выполняемая функция в скриптах function OnBeforeReading(), дальше тишина...Напрашивается обработчик ошибки сервера?
А как именно вы имитируете разрыв связи?
Если вы используете ModRSSim, то там может проявляться такая проблема. На реальных устройствах такой проблемы нет - при разрыве связи, ОРС переменные получают признак качества BAD.
Да, пробовал именно в связке с ModRSSIM просто его закрывая...Но обработчик ошибки сервера всё равно хочу :) Это возможно?
Ну мы вам написали, что при закрытии ModRSSim происходит подвисание виртуальных портов, и ОРС это никак обработать не может.
С реальными портами такого происходить не будет.
Какой обработчик ошибок вам нужен? Изменение признака качества вас не устраивает?
Скажу сразу, что пытаюсь использовать ОРС сервер извращённым способом:) В скрипте Устройства читаю регистры Modbus
function OnAfterReading()
local w={}
local err
err,w = modbus.ReadInputRegistersAsInt16(0,12,true,"103254 76" );
local Address = server.GetCurrentDeviceAddress( );
server.RunFunctionFromNode("SetData",0,w[1],w[2],w[3],w[4],w[5],w[6],w[7],w[8],w[9],w[10],w[11],w[12],Address,err);
end
и затем переписываю эти значения в теги Сервера.
В Устройствах никаких тегов нет. Получается этакий мультиплексор. Используя 13 тегов (12 значений и номер устройства), я опрашиваю 12 устройств по 12 каналов в каждом. При таком способе признак качества я должен формировать сам, а отследить потерю связи невозможно. Функция OnAfterReading() при обрыве связи вызываться перестаёт.
Для контроля такой ситуации подошло бы что-то типа OnServerError(), тем более, что продукт позиционируется как платформа для разработки сервера с поддержкой разработки протоколов связи с разными устройствами. При таком подходе значения ОРС тегов придётся формировать программно, включая признак качества. Или я не прав?
p.s. Надеюсь, попытка использовать 144 канала, вместо максимальных 32 бесплатных, в данном случае не криминал :)
При работе с реальным COM портом такая ситуация возникнуть не должна.
Мы планируем добавить такую функцию в третью версию ОРС сервера.
Но эта функция нужна в первую очередь при работе по Ethernet - там при обрыве связи функции скрипта действительно перестают вызываться
Да, нужно устанавливать признак качества при записи значений в тег.
Потерял полдня:( , пытаясь запустить OPC-сервер на другой (не своей) машине. Получаю "Access violation at address 004ABD2B in module 'modbusopcserver.exe'. Read of address F4F7FFF4". Много чего перекопал, много кого вспомнил...:) Оказалось, виной тому - отключенная в биосе сетевая карта! При включении всё заработало. Отключение сетевухи в Диспетчере устройств приводит к аналогичному результату-Access violation...Уважаемые разработчики, обработайте ошибку!Спасибо.
Эту ошибку мы уже исправили.
Доброе утро!
Вопрос начинающего:
Через dcon от счётчика импульсов поступают значения в 16тиричном виде.
Пример: 000002FE = 766.
Перевожу функцией string.format ("%08d", 2FE) -- например.
получаю 441.
Как правильно перевести из hex в dec?
Воспользуйтесь функцией tonumber. Такой код преобразует 16-ричное число в 10-чное:
val = tonumber(100, 16)
Подробное описание этой функции вы можете прочитать в справке (воспользуйтесь поиском).
Если вы занимаетесь поддержкой протокола, то мы можем дать специальную документацию по разработке протоколов (официально пока не опубликована) - обратитесь в техническую поддержку.
Спасибо, за подсказку.
Пробую в ближайшее время. За основу взял реализованный для I-7017.
Функция работает как нужно. Документацию по разработке скачивал.
Добрый день.
При установке и запуске OPC сервера появляется ошибка (см. вложение). ОС - Windows 2000. Kernel32.dll в системе присутствует.
Понимаю, что стоит переходить на более свежую систему. Но в данный момент нужно добить тему с 2000. Если проблемы решатся установкой обновлений и пр., то останется как есть.
Будут проблемы во время работы OPC, или только при установке?
Проблемы во время работы. Данная ОС полноценно не поддерживается. Рекомендуем использовать Windows XP SP3 или Windows 7
Если брать Windows 7 - то что нужно прописать?
Matricon видит OPC сервер, но не соединяется.
А сам сервер запущен? Или находится в режиме редактирования?
При запущенном сервере - не подключается.
Если закрыть сервер - то автоматически запускается в режиме работы.
Не критично, но всеже :(
Сейчас, если сервер находится в режиме разработки, то в режим исполнения при подключении клиента он не запускается.
Можно ли использовать одновременно 2 орс? То есть есть 2 орс на 2500 тегов с юсб ключами. Устанавливаются оба, но при добавлении в проект мастерскады виден только один и у того содержимого как будто нет. Можно ли использовать 2 орс на одной машине?
На одной машине нельзя.
А зачем вам нужно два ОРС на одной машине?
Так не получится. Приобретайте Unl версию - у них не настолько большая по цене разница.
орс не считывает передаваемые с плк данные в виде бульевского и uint значения наоборот с мастерскадой через орс можно передать любые значения в плк у меня демо версия на 32 точек
Не совсем понятно что именно у вас не считывается. Посмотрите вот эту тему:
http://www.owen.ru/forum/showthread....bus%28Slave%29
Здравствуйте Скадамастер. Есть вопрос. Используем на работе Universal MasterOPC Server 32 тега. Читаем им данные из ТРМ202, и далее передаем в Мастерскаду. Проблема заключается в том, что сервер не видит запятой в данных. ТРМ показывает значение 4,5 , а сервере 45. Если сделать пересчет, например на 0,1, то сервер обрезает цифру после запятой и показывает 4. Помогите, пожалуйста, где искать причину.
Сервер работает как с целочисленными переменными (int, uint), так и с переменными с плавающей точкой (float, double). Вы используете правильный тип переменной ?
Так же у нас уже добавлено устройство ТРМ202 в список импортируемых устройств (у узла через контекстное меню выбрать "Импортировать устройств"). Почему не использовать его?
Скадамастер, большое спасибо. Разобрались, появилась запитая.