Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 22

Тема: СЧИТЫВАНИЕ ДАННЫХ ПО MODBUS RTU В МНОГОМЕРНЫЙ МАССИВ ДАННЫХ

  1. #11

  2. #12

    По умолчанию

    Цитата Сообщение от Maria Посмотреть сообщение
    Проверил проект - обмен идет. Не обращайте внимания на надпись NoBP в компоненте Modbus - смотрите на значения переменных в программе.

    На скриншоте - считал из слэйва число 10 в один из элементов массива.

    112233.png

  3. #13

    По умолчанию

    Спасибо за ответ!

  4. #14

    По умолчанию

    Здравствуйте, не хочу новую тему открывать.
    По нестандартному протоколу приходит(буфер) массив байт, его хочу преобразовать в массив типа INT.

    решил через цикл FOR записывать из буфера в двумерный массив
    Как присвоить значения из одномерного массива в двумерный?

    -------------------
    a_a_byte: ARRAY [1..10] OF ARRAY [1..2] OF byte;
    a_byte: OF ARRAY [1..20] OF byte;
    i, w :int;// i - номер массива байт; w- номер байта массива
    -------------
    a_a_byte[i,w]:=a_byte[i+5],a_byte[i+4] --компилятор ругается,а я не знаю как правильно..

  5. #15

    По умолчанию

    Цитата Сообщение от Zerling Посмотреть сообщение
    Здравствуйте, не хочу новую тему открывать.
    По нестандартному протоколу приходит(буфер) массив байт, его хочу преобразовать в массив типа INT.

    решил через цикл FOR записывать из буфера в двумерный массив
    Как присвоить значения из одномерного массива в двумерный?


    -------------------
    a_a_byte: ARRAY [1..10] OF ARRAY [1..2] OF byte;
    a_byte: OF ARRAY [1..20] OF byte;
    i, w :int;// i - номер массива байт; w- номер байта массива
    -------------
    a_a_byte[i,w]:=a_byte[i+5],a_byte[i+4] --компилятор ругается,а я не знаю как правильно..
    Добрый день.

    Отвечая на конкретный вопрос - проще всего добавить в проект библиотеку CAA Memory и сделать так:

    Код:
    MEM.MemMove(ADR(a_byte), ADR(a_a_byte), SIZEOF(a_a_byte) );
    Но если "по нестандартному протоколу приходит(буфер) массив байт", то можно сразу разместить эти байты в "массиве типа INT" без использования каких-то промежуточных двумерных и одномерных байтовых массивов.

  6. #16

    По умолчанию

    не понимаю, как собрать из байт int без промежуточных вариантов. Я сделал объединение, чтоб указывать объединение.массивбайт[3]:=байт_буфера[4]; объединение.массивбайт[4]:=байт_буфера[3];

  7. #17

    По умолчанию

    Цитата Сообщение от Zerling Посмотреть сообщение
    не понимаю, как собрать из байт int без промежуточных вариантов. Я сделал объединение, чтоб указывать объединение.массивбайт[3]:=байт_буфера[4]; объединение.массивбайт[4]:=байт_буфера[3];
    Покажите скриншотом фрагмент кода, в котором у вас "по нестандартному протоколу приходит(буфер) массив байт".
    А лучше - вырежите этот фрагмент и выложите в виде небольшого демонстрационного проекта.

  8. #18
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,510

    По умолчанию

    Zerling
    BitConverter.ToInt(массив байт, позиция). более правильнее посмотрите в справке. возможно предварительно надо будет переставлять байты. в зависимости в куда, функция возьмет требуемое количество байт с указанной позиции.

    ой, тут по ПЛК, извиняюсь

  9. #19

    По умолчанию

    Код пока не написан, только разбираюсь, что к чему.
    Принимаю посылку через CAA COM.Read / OCL.UNM_SerialRequest, дальше - фб в котором отделяю и собираю адрес и значение переменной(сейчас использую одну, а потом нужно будет с десяток). Собственно, поэтому и использовал юнион - не знаю других способов собрать из двух байт тип инт.
    Изображения Изображения
    • Тип файла: png 222.png (17.1 Кб, Просмотров: 7)

  10. #20

    По умолчанию

    CAA COM.Read / OCL.UNM_SerialRequest возращают считанные данные по указателю - то есть можно передать на входы pBuffer / pResponse адрес чего угодно - например, сразу массива INT'ов.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 19.09.2015, 18:36
  2. Как сохранить массив данных в ST
    от Malyshevsergey в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 08.10.2014, 14:14
  3. МСД100 самостоятельное считывание данных
    от Machter в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 03.05.2012, 10:42
  4. МВ110-8АС. Считывание из ячеек данных Float_32
    от Солнечный заяц в разделе Мх110
    Ответов: 4
    Последнее сообщение: 11.05.2011, 19:52
  5. считывание данных с плк
    от Mikewolf в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 04.12.2008, 11:07

Ваши права

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