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

Тема: ТРМ 202 и OwenRead

  1. #1

    По умолчанию ТРМ 202 и OwenRead

    Доброго дня!
    Подскажите решение.
    Проблема с чтением двух значений входов. Теоретически должно работать, но OwenRead вылетает с ошибкой

    "Выдано исключение типа "OwenioNet.Exceptions.SlaveNetworkException".\r\nР азмер поля данных не соответствует ожидаемому"} System.Exception {OwenioNet.Exceptions.SlaveNetworkException}
    Count = 2;

    private Mutex OwenMut = new Mutex();
    ----------------------------------------------------------------
    private double[] ReadAI(int Adr, int Count)
    {
    double[] result = null;
    byte[] InData = null;
    try
    {
    result = new double[Count];
    for (ushort i = 0; i < Count; i++)
    {
    OwenMut.WaitOne();
    InData = owenProtocol.OwenRead(Adr, OwenioNet.Types.AddressLengthType.Bits8, "PV ", i);
    OwenMut.ReleaseMutex();
    var converter = new OwenioNet.DataConverter.Converter.ConverterFloat(3 );
    var value = converter.ConvertBack(InData);

    result[i] = (double)value;
    }
    }
    catch (Exception ex) { Console.WriteLine("ReadAI: " + ex.Message); }
    return result;
    }
    При этом так
    owenProtocol.OwenRead(Adr, OwenioNet.Types.AddressLengthType.Bits8, "PV ");
    и так
    owenProtocol.OwenRead(Adr, OwenioNet.Types.AddressLengthType.Bits8, "PV ", null);
    работает корректно и выдает значение первого входа

    А так
    owenProtocol.OwenRead(Adr, OwenioNet.Types.AddressLengthType.Bits8, "PV ", 0);
    owenProtocol.OwenRead(Adr, OwenioNet.Types.AddressLengthType.Bits8, "PV ", 1);
    и даже так
    owenProtocol.OwenRead(Adr, OwenioNet.Types.AddressLengthType.Bits8, "PV ", (ushort)0);
    owenProtocol.OwenRead(Adr, OwenioNet.Types.AddressLengthType.Bits8, "PV ", (ushort)1);
    уже нет
    Последний раз редактировалось settom; 27.11.2019 в 14:25.

  2. #2

    По умолчанию

    Не понимаю, почему ответ на такой вопрос и то косвенно удалось найти совсем в другом мануале
    https://docplayer.ru/90189577-Spk-na...-1-2-data.html
    стр. 23-24.
    Оказывается для второго и последующего значения нужно обращаться к другому последующему адресу. Почему про это не написано в мануале к самому ТРМ, мне не понятно.
    В общем вот так правильно.
    InData = owenProtocol.OwenRead(Adr + i, OwenioNet.Types.AddressLengthType.Bits8, "PV ");

  3. #3

    По умолчанию

    Странно. В коробке с приборами, кроме ИЭ, есть ещё лист.
    Вложения Вложения

  4. #4

    По умолчанию

    Можно отправить в личку рабочий проект, для понимания? Спасибо

Ваши права

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