Ответы в темах
-
АвторЗаписи
-
MikhailМодераторПорт 10000 для общения между приложениями SCADA. Для Modbus TCP используется порт 502. Чтобы сказать что-то более определённое, нужны картинки или журнал линии связи. Картинки в Вашем сообщении сейчас не отображаются (в них нет ссылок).
Нужно вставлять ссылку на картинку.
MikhailМодераторНапример, https://github.com/RapidScada/scada/blob/master/ScadaComm/OpenKPs/KpSnmp/KpSnmpLogic.cs со строки 503.
Проверка типа:
if ((cmd.CmdTypeID == BaseValues.CmdTypes.Standard
Получение номера:
cmd.CmdNum
Получение значения:
cmd.CmdVal
MikhailМодераторВ метод SendCmd передаётся номер команды, её тип и значение. Далее Вы их обрабатываете так, как нужно в конкретной ситуации.
MikhailМодераторВариант 1. Указать номер канала управления для входного канала
Вариант 2. В Редакторе схем или таблиц указать канал управления.
Это позволит отправлять команды с помощью специальной формы отправки команд и вводить на ней значения. Значения могут быть как тестовыми, так и из списка.
Для ввода значения текстом не поле значений команды нужно оставить пустым.
MikhailМодераторДля стандартных команд формула должна возвращать double,
для бинарных — byte[]Вы можете использовать if (int.TryParse(…)) {…}
Если Вы вернёте double.NaN или вместо массива null, то команда не будет передана вообще — это ответ на вопрос о защите от неверного значения.
MikhailМодераторИспользуйте метод ConvertTagDataToStr. Например:
protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData) { if (tagData.Stat > 0) { if (signal == 1) return tagData.Val.ToString("N7"); } return base.ConvertTagDataToStr(signal, tagData); }
MikhailМодераторВ драйверах используется терминология тегов и команд вместо каналов.
Индексы тегов начинаются от 0 и далее по порядку. Теги привязываются к каналам базы конфигурации автоматически на основе поля Signal. В большинстве случаев (не всегда) tagIndex = Signal — 1Если Вы отправляете команду КП, то Коммуникатором вызывается метод SendCmd, который Вы должны переопределить.
MikhailМодераторНа мой взгляд, нужно вводить в виде строки, а затем в формуле её преобразовывать.
Чтобы внутри формулы получить введенную оператором строку используйте:string s = Encoding.Default.GetString(CmdData);
MikhailМодераторДа, я понимаю Вашу цель.
Провёл аналогичный эксперимент — одновременно с сервера Matrikon.OPC.Simulation данные считывало приложение Matrikon OPC Explorer и Rapid SCADA. Отработало нормально.Нужно понять, в чём особенность работы в Вашем случае. Под какими пользователями Windows работают у Вас обе скады? По умолчанию Коммуникатор работает от System.
MikhailМодераторДа, нужно использовать более новую версию Visual Studio.
Visual Studio различных версий нормально работают на одной машине, поэтому Вы можете поставить параллельно более новую версию. Рекомендую Visual Studio 2015 Community Edition — бесплатная версия, достаточная для работы с Rapid SCADA.
MikhailМодераторРекомендую статью по Modbus http://rapidscada.ru/modbus/
В ней описана причина расхождения адресов регистров на 1. По официальному стандарту Modbus адресация регистров начинается с 1. В документации на зарубежные приборы чаще всего соблюдаются стандарты и адресацию начинают с 1. Вообще, наверное, нужно переключатель нумерации сделать в редакторе шаблонов.
Официальные спецификации Modbus: http://www.modbus.org/specs.php
In a MODBUS PDU each data is addressed from 0 to 65535. ... In the MODBUS data Model each element within a data block is numbered from 1 to n.
По поводу 3x и 4x — это обозначения адресных пространств.
При этом кодировка функций чтения данных сделана наоборот, что конечно вносит путаницу. Здесь есть табличка: http://www.automation.com/library/articles-white-papers/fieldbus-serial-bus-io-networks/introduction-to-modbusЕсли вещественные значения отображаются некорректно, вероятно, нужно изменить порядок байт.
MikhailМодераторВы могли бы провести такой же эксперимент с использованием Matrikon OPC Server, чтобы собрать больше статистики?
Какие ошибки выдаются при невозможности подключиться?
MikhailМодераторВариант с ИнСат скорее всего хороший, но я не пробовал. Сервер от ИнСат платный?
Простой и быстрый вариант, на мой взгляд, MatrikonOPC Explorer http://www.matrikonopc.com/products/opc-desktop-tools/
Он содержит эмулятор OPC-сервера.
В базе конфигурации по умолчанию уже есть настройки для него.Кроме того, в SCADA-Сервере есть функция генератора — Вы сможете установить любое значение канала.
Для разработки и отладки сложных формул можно создать консольное приложение в Visual Studio.
MikhailМодераторУстановите MSSQL Compact, его дистрибутив содержится в инсталляционном пакете Rapid SCADA в папке пререквизитов.
MikhailМодераторНаиболее вероятно, что помогла переустановка OPC Core Components.
Вообще, OPC достаточно капризная технология и OPC сервера бывают очень разного качества исполнения.Если используется несколько сотен однотипных устройств, то появляется резон разработать драйвер под конкретный контроллер — работает быстрее, стабильнее и потребляет меньше системных ресурсов.
-
АвторЗаписи