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

Тема: Поменять местами регистры Float без указателей

  1. #1

    По умолчанию Поменять местами регистры Float без указателей

    Добрый день!

    Вопрос такой: нужно считать по модбасу несколько переменных типа float, но устройство отдает их регистры не в том порядке, в каком ждет его ПЛК110, т.е. в считанном значении еще нужно поменять местами два слова. Вопрос в следующем: можно л исделать это без применения указателей? Через библиотеку какую-нибудь?

    Почему возник вопрос: я для этого использовал функцию со следующим кодом:
    Код:
    Код:
    FUNCTION PERENOS :REAL
    VAR_INPUT
    	input_real: REAL;
    END_VAR
    VAR
    	output_real: REAL;
    	input_real_p: POINTER TO ARRAY [0..1] OF WORD;
    	output_real_p: POINTER TO ARRAY [0..1] OF WORD;
    END_VAR
    
    input_real_p:=ADR(input_real);
    output_real_P:=ADR(output_real);
    output_real_p^[0]:=input_real_p^[1];
    output_real_p^[1]:=input_real_p^[0];
    
    PERENOS := OUTPUT_REAL;
    Но сейчас столкнулся с проблемой, ПЛК периодически перезагружается по вотчдогу, есть подозрение, что виной этому использование указателей, хотелось бы от них избавиться.

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,650

    По умолчанию

    а в библиотеке можно пользоваться указателями?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,395

    По умолчанию

    Цитата Сообщение от Карбофос Посмотреть сообщение
    Добрый день!

    Вопрос такой: нужно считать по модбасу несколько переменных типа float, но устройство отдает их регистры не в том порядке, в каком ждет его ПЛК110, т.е. в считанном значении еще нужно поменять местами два слова. Вопрос в следующем: можно л исделать это без применения указателей? Через библиотеку какую-нибудь?

    Почему возник вопрос: я для этого использовал функцию со следующим кодом:
    Код:
    Код:
    FUNCTION PERENOS :REAL
    VAR_INPUT
    	input_real: REAL;
    END_VAR
    VAR
    	output_real: REAL;
    	input_real_p: POINTER TO ARRAY [0..1] OF WORD;
    	output_real_p: POINTER TO ARRAY [0..1] OF WORD;
    END_VAR
    
    input_real_p:=ADR(input_real);
    output_real_P:=ADR(output_real);
    output_real_p^[0]:=input_real_p^[1];
    output_real_p^[1]:=input_real_p^[0];
    
    PERENOS := OUTPUT_REAL;
    Но сейчас столкнулся с проблемой, ПЛК периодически перезагружается по вотчдогу, есть подозрение, что виной этому использование указателей, хотелось бы от них избавиться.
    Просто в конфигурации для UMD поменяй порядок слов
    Trace mode на Native
    Захват-1.png
    и все,
    ни какого кода!
    26 лет деятельности в области промышленной безопасности

  4. #4

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а в библиотеке можно пользоваться указателями?
    Ну дык предполагается, что библиотеку писали люди менее криворукие, чем я

    Цитата Сообщение от petera Посмотреть сообщение
    Просто в конфигурации для UMD поменяй порядок слов
    Trace mode на Native
    Захват-1.png
    и все,
    ни какого кода!
    Вот спасибо!

Похожие темы

  1. применение указателей
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 09.02.2016, 18:07
  2. Проверка на Null указателей
    от Спорягин Кирилл в разделе ПЛК1хх
    Ответов: 34
    Последнее сообщение: 25.08.2015, 13:11
  3. Переход от float (Nullable) к просто float
    от ASo в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 12.11.2014, 14:21
  4. Использование указателей Pointer
    от Андрей Плеханов в разделе ПЛК3хх
    Ответов: 23
    Последнее сообщение: 24.07.2014, 21:58
  5. Получение списка/указателей на ФБ проекта
    от Аркадий в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 05.03.2008, 18:22

Ваши права

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