Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 36

Тема: ПЛК73+чтение данных по modbus rtu.

  1. #11
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    Цитата Сообщение от Ильяс94 Посмотреть сообщение
    .. Увидеть данные хотел на ЖКИ ПЛК73.
    А как, предполагаете, данные с того устройства появятся на ЖКИ здесь, на ПЛК ?


    (что то подсказывает что скоро от ТС будет 2й вопрос, про ЖК, или здесь все норм - разобрались? )
    Последний раз редактировалось Валенок; 24.08.2022 в 08:06.

  2. #12

    По умолчанию

    Цитата Сообщение от Spawn Посмотреть сообщение
    Ильяс94, примеры опроса есть здесь, здесь и здесь.

    Здесь есть пример как "разбирать" Buffer.

    Примеры даю свои.
    Безымянный.png

    Здесь два буфера, потому что опрашивается два регистра?

  3. #13

    По умолчанию

    Буфер один - байтовый. Регистр состоит из двух байт. С помощью указателя (Ptb) "разбираем" буфер, "склеивая" по два байта в один регистр, в приведённом Вами куске кода, в один INT.
    Последний раз редактировалось Spawn; 25.08.2022 в 14:39.

  4. #14

    По умолчанию

    Цитата Сообщение от Spawn Посмотреть сообщение
    Буфер один - байтовый. Регистр состоит из двух байт. С помощью указателя (Ptb) "разбираем" буфер, "склеивая" по два байта в один регистр, в приведённом Вами куске кода, в один INT.
    А как склеить во float например? У меня конечные данные не совпадают с фактическими показаниями устрйоства.

  5. #15

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А как, предполагаете, данные с того устройства появятся на ЖКИ здесь, на ПЛК ?


    (что то подсказывает что скоро от ТС будет 2й вопрос, про ЖК, или здесь все норм - разобрались? )
    ЖКИ вроде разобрался. С помощью библиотеки Showreal или Showdint выводятся данные

  6. #16

    По умолчанию

    Цитата Сообщение от Ильяс94 Посмотреть сообщение
    А как склеить во float например? У меня конечные данные не совпадают с фактическими показаниями устрйоства.
    Здесь выкладывал в последнем сообщении пример чтения МВ110-8А, с Функц. блоком склейки двух WORD в REAL. По аналогии склеиваются и байты https://owen.ru/forum/showthread.php?t=35094#10
    Можно склеить прямо в программе из буфера. Это есть в примерах, ссылки давал в начале. Пример первых двух REAL. 1 Чтение МВА8.jpg
    Пример для МВ110-8А, данные перемешаны, поэтому пропуски.

    Код:
    	d: ARRAY [0..23] OF  REAL;						(*считанное значение*)
    	ptr_D:POINTER TO BYTE;
    END_VAR
    __________________________________________________
    		(*   Вставить, в след. шаге  CASE где склеиваете INT (WORD)  *)
           ptr_D:=ADR(d)+8; ptr_D^:=buffer[11];    ptr_D:=ptr_D+1; ptr_D^:=buffer[10];    ptr_D:=ptr_D+1; ptr_D^:=buffer[9];    ptr_D:=ptr_D+1; ptr_D^:=buffer[8];
           ptr_D:=ptr_D+9;   ptr_D^:=buffer[23];    ptr_D:=ptr_D+1; ptr_D^:=buffer[22];    ptr_D:=ptr_D+1; ptr_D^:=buffer[21];   ptr_D:=ptr_D+1; ptr_D^:=buffer[20];
    Для вашего МВ110-8АС, данные REAL подряд (читать с первого адреса REAL) будет так,
    первые 2 REAL, для правильного отображения данные из буфера присваиваем в обратном порядке:
    Код:
    	d: ARRAY [0..7] OF  REAL;						(*считанное значение*)
    	ptr_D:POINTER TO BYTE;
    END_VAR
    __________________________________________________
    		(*   Вставить, в след. шаге  CASE где склеиваете INT (WORD)  *)   
        ptr_D:=ADR(d); ptr_D^:=buffer[3];       ptr_D:=ptr_D+1; ptr_D^:=buffer[2];      ptr_D:=ptr_D+1; ptr_D^:=buffer[1];       ptr_D:=ptr_D+1; ptr_D^:=buffer[0]; 
        ptr_D:=ptr_D+1; ptr_D^:=buffer[9];       ptr_D:=ptr_D+1; ptr_D^:=buffer[8];      ptr_D:=ptr_D+1; ptr_D^:=buffer[7];       ptr_D:=ptr_D+1; ptr_D^:=buffer[6];
    Последний раз редактировалось kondor3000; 25.08.2022 в 23:01.

  7. #17
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    Цитата Сообщение от Ильяс94 Посмотреть сообщение
    А как склеить во float например?... устрйоства.
    А что за девайс? Из местных?

    //Здесь упоминаются 8А и 8АС
    Из вышесказанного вроде вытекает что вопрос "ху из buffer" - закрыт
    Последний раз редактировалось Валенок; 25.08.2022 в 18:50.

  8. #18

    По умолчанию

    В примере всё есть, и чтение буфера в INT, и (чуть ниже, в этом же коде) в REAL.

  9. #19

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А что за девайс? Из местных?

    //Здесь упоминаются 8А и 8АС
    Из вышесказанного вроде вытекает что вопрос "ху из buffer" - закрыт
    Безымянный.png

    Другого производителя ИМ2300.

  10. #20

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Здесь выкладывал в последнем сообщении пример чтения МВ110-8А, с Функц. блоком склейки двух WORD в REAL. По аналогии склеиваются и байты https://owen.ru/forum/showthread.php?t=35094#10
    Можно склеить прямо в программе из буфера. Это есть в примерах, ссылки давал в начале. Пример первых двух REAL. 1 Чтение МВА8.jpg
    Пример для МВ110-8А, данные перемешаны, поэтому пропуски.

    Код:
    	d: ARRAY [0..23] OF  REAL;						(*считанное значение*)
    	ptr_D:POINTER TO BYTE;
    END_VAR
    __________________________________________________
    		(*   Вставить, в след. шаге  CASE где склеиваете INT (WORD)  *)
           ptr_D:=ADR(d)+8; ptr_D^:=buffer[11];    ptr_D:=ptr_D+1; ptr_D^:=buffer[10];    ptr_D:=ptr_D+1; ptr_D^:=buffer[9];    ptr_D:=ptr_D+1; ptr_D^:=buffer[8];
           ptr_D:=ptr_D+9;   ptr_D^:=buffer[23];    ptr_D:=ptr_D+1; ptr_D^:=buffer[22];    ptr_D:=ptr_D+1; ptr_D^:=buffer[21];   ptr_D:=ptr_D+1; ptr_D^:=buffer[20];
    Для вашего МВ110-8АС, данные REAL подряд (читать с первого адреса REAL) будет так,
    первые 2 REAL, для правильного отображения данные из буфера присваиваем в обратном порядке:
    Код:
    	d: ARRAY [0..7] OF  REAL;						(*считанное значение*)
    	ptr_D:POINTER TO BYTE;
    END_VAR
    __________________________________________________
    		(*   Вставить, в след. шаге  CASE где склеиваете INT (WORD)  *)   
        ptr_D:=ADR(d); ptr_D^:=buffer[3];       ptr_D:=ptr_D+1; ptr_D^:=buffer[2];      ptr_D:=ptr_D+1; ptr_D^:=buffer[1];       ptr_D:=ptr_D+1; ptr_D^:=buffer[0]; 
        ptr_D:=ptr_D+1; ptr_D^:=buffer[9];       ptr_D:=ptr_D+1; ptr_D^:=buffer[8];      ptr_D:=ptr_D+1; ptr_D^:=buffer[7];       ptr_D:=ptr_D+1; ptr_D^:=buffer[6];
    Безымянный.png

    Тяжеловато мне в ST ориентироваться( Пытаюсь Ваш пример соотнести с примером FBD. Не могу правильно склеить два регистра во FLOAT, данные на выходе не правильно отображаются(

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

Похожие темы

  1. Ответов: 6
    Последнее сообщение: 23.05.2022, 12:59
  2. ПЛК73: Чтение и запись переменных из конфигурации ПЛК
    от Солнечный заяц в разделе ПЛК63/73
    Ответов: 0
    Последнее сообщение: 02.03.2021, 16:24
  3. ПЛК73 Чтение МВ110-16Д через Modbus
    от Зинец Олег в разделе ПЛК63/73
    Ответов: 3
    Последнее сообщение: 05.11.2020, 18:13
  4. Чтение/запись данных по Modbus панели СП310
    от _Алексей_ в разделе Панели оператора (HMI)
    Ответов: 7
    Последнее сообщение: 29.08.2018, 07:43
  5. Ответов: 5
    Последнее сообщение: 16.09.2016, 00:56

Ваши права

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