Показано с 1 по 3 из 3

Тема: MB110+OwenIONet

  1. #1

    По умолчанию MB110+OwenIONet

    пробую создать приложение для MB110 по сбору данных.
    По протоколу modbus, пробовал на питоне, но к сожалению без результата.
    Скачал библиотеку для C# и пользуясь инструкцией написал небольшой код.
    Код:
    owenProtocol.OwenRead(<Адрес>, AddressLengthType.Bits11, "rEAd");
    получаю ошибку
    {"Выдано исключение типа "OwenioNet.Exceptions.SlaveNetworkException".\r\nН еизвестный код сетевой ошибки"} OwenioNet.Exceptions.SlaveNetworkException

    Код:
    SerialPort masterPort = new SerialPort("COM3");
                masterPort.BaudRate = 9600;
                masterPort.DataBits = 8;
                masterPort.Parity =  Parity.None;
                masterPort.StopBits = StopBits.One; masterPort.Open();
                using (IOwenProtocolMaster owenProtocol = OwenProtocolMaster.Create(masterPort))
                {
                    byte[] dataFromDevice = owenProtocol.OwenRead(<Адрес>, AddressLengthType.Bits11, "rEAd");
                    var converterFloat = new ConverterFloat();
                    var valueFromDevice = converterFloat.ConvertBack(dataFromDevice);
                }
    Последний раз редактировалось AndreyMal; 20.08.2019 в 18:06.

  2. #2

    По умолчанию

    Цитата Сообщение от AndreyMal Посмотреть сообщение
    пробую создать приложение для MB110 по сбору данных.
    По протоколу modbus, пробовал на питоне, но к сожалению без результата.
    Скачал библиотеку для C# и пользуясь инструкцией написал небольшой код.
    Код:
    owenProtocol.OwenRead(<Адрес>, AddressLengthType.Bits11, "rEAd");
    получаю ошибку
    {"Выдано исключение типа "OwenioNet.Exceptions.SlaveNetworkException".\r\nН еизвестный код сетевой ошибки"} OwenioNet.Exceptions.SlaveNetworkException

    Код:
    SerialPort masterPort = new SerialPort("COM3");
                masterPort.BaudRate = 9600;
                masterPort.DataBits = 8;
                masterPort.Parity =  Parity.None;
                masterPort.StopBits = StopBits.One; masterPort.Open();
                using (IOwenProtocolMaster owenProtocol = OwenProtocolMaster.Create(masterPort))
                {
                    byte[] dataFromDevice = owenProtocol.OwenRead(<Адрес>, AddressLengthType.Bits11, "rEAd");
                    var converterFloat = new ConverterFloat();
                    var valueFromDevice = converterFloat.ConvertBack(dataFromDevice);
                }

    Добрый день!
    У Вас действительно в настройках модуля параметр A.Len равен 11? По умолчанию этот параметр равен 8. Проверьте сетевые настройки модуля в конфигураторе.
    У модулей аналогового ввода измеренное значение "rEAd" передается в формате float с меткой времени. В качестве конвертера нужно использовать ConverterFloatTimestamp.
    С уважением,

    Новикова Маргарита Валериевна
    Инженер по тестированию
    Бюро серверного программного обеспечения

  3. #3

    По умолчанию

    Вопрос решился. Все сделал.
    Спасибо.
    Пример выкладываю, может кому пригодиться:
    Код:
    SerialPort masterPort = new SerialPort("COM3");
                masterPort.BaudRate = 9600;
                masterPort.DataBits = 8;
                masterPort.Parity =  Parity.None;
     IOwenProtocolMaster owenProtocol = OwenProtocolMaster.Create(masterPort);
     float value= GetFromDevice(owenProtocol, 0x11); // получаем значение с первого входа, все остальные +1 
            static float GetFromDevice(IOwenProtocolMaster owenProtocol, Int32 Address)
            {
                try
                {
                    var converterFloat = new ConverterFloat();
                    byte[] dataFromDevice = owenProtocol.OwenRead(Address, AddressLengthType.Bits8, "Read");
                    return converterFloat.ConvertBack(GetFloatFromData(dataFromDevice));
                } catch
                {
                    return -1;
                }
            }
     static byte[] GetFloatFromData(byte[] dataFromDevice)
    {
        byte[] shortdata = new byte[4];
        shortdata.SetValue(dataFromDevice[0], 0);
        shortdata.SetValue(dataFromDevice[1], 1);
        shortdata.SetValue(dataFromDevice[2], 2);
        shortdata.SetValue(dataFromDevice[3], 3);
        return shortdata;
    }
    Последний раз редактировалось AndreyMal; 30.08.2019 в 09:29.

Похожие темы

  1. PLC 73 + MB110.220.8AC
    от Grampus в разделе Мх110
    Ответов: 6
    Последнее сообщение: 18.01.2023, 12:28
  2. OWENIONET и параметр U.Apl
    от 2sandro в разделе Помощь Разработчикам
    Ответов: 2
    Последнее сообщение: 17.02.2019, 18:07
  3. Портирование кода и библиотек с Windows (С#+dotnet core+OwenioNet) на Linux
    от nayaganov в разделе Помощь Разработчикам
    Ответов: 7
    Последнее сообщение: 17.08.2018, 10:54
  4. Библиотека OwenioNet для .NET
    от petja в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 10.05.2018, 06:38
  5. MB110-224.1ТД
    от DKFLBVBH в разделе Мх110
    Ответов: 1
    Последнее сообщение: 21.09.2016, 09:57

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •