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

Тема: Панель СП307Б + макро функция = виснет.

  1. #1
    Пользователь
    Регистрация
    02.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    99

    По умолчанию Панель СП307Б + макро функция = виснет.

    Здравствуйте!
    При записи макро функции *(float*)(PSW+407)=PSW[413]/255.0; панель виснет.
    Что делать?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,208

    По умолчанию

    Цитата Сообщение от Malyshevsergey Посмотреть сообщение
    Здравствуйте!
    При записи макро функции *(float*)(PSW+407)=PSW[413]/255.0; панель виснет.
    Что делать?
    При обращении через указатели надо выравнивать адреса, чтобы они были кратны 2. Т.е. сделайте так:

    Код:
    *(float*)(PSW+406)=PSW[413]/255.0;
    Внесем это в следующую версию РП.

  3. #3
    Пользователь
    Регистрация
    02.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    99

    По умолчанию

    1 Да.
    2 Замечательно, а мне что делать?
    Как мне получить данные типа float?
    Да и все математические операции в макро функции дают зависание.

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,208

    По умолчанию

    Цитата Сообщение от Malyshevsergey Посмотреть сообщение
    1 Да.
    2 Замечательно, а мне что делать?
    Как мне получить данные типа float?
    Да и все математические операции в макро функции дают зависание.
    Вам необходимо размещать float в памяти панели по кратным двойке начальным адресам. Т.е, например, PSW300-301, PSW302-303 и т.д. Но ни в коем случае не PSW301-302, PSW303-304 и т.д.

    Вот рабочий пример - забираем float из PSW300-301 и кладем в PSW400-401:

    Код:
    *(float*)(PSW+400)=*(float*)(PSW+300);

  5. #5
    Пользователь
    Регистрация
    02.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    99

    По умолчанию

    Вы меня не поняли.
    Мне нужно разделить одно число на другое и результат должен быть float.
    Результат у меня находиться по адресу PSW406-407. Зачем мне его копировать в другой регистр?

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,208

    По умолчанию

    Цитата Сообщение от Malyshevsergey Посмотреть сообщение
    Вы меня не поняли.
    Мне нужно разделить одно число на другое и результат должен быть float.
    Результат у меня находиться по адресу PSW406-407. Зачем мне его копировать в другой регистр?
    Т.е. при исполнении кода

    Код:
    *(float*)(PSW+406)=PSW[413]/255.0;
    панель зависает?

  7. #7
    Пользователь
    Регистрация
    02.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    99

    По умолчанию

    Сори ошибся в было 407
    Исправил на 422 пока все работает

  8. #8
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,208

    По умолчанию

    Цитата Сообщение от Malyshevsergey Посмотреть сообщение
    Сори ошибся в было 407
    Исправил на 422 пока все работает
    Необходимо следовать рекомендации из поста #4, тогда все будет нормально. Постараемся решить эту проблему в будущих версиях.

Похожие темы

  1. ПЛК-73 виснет.
    от Vladimir33 в разделе ПЛК63/73
    Ответов: 30
    Последнее сообщение: 17.10.2021, 23:20
  2. Виснет ПЛК 110 60 К М
    от Mikalay83 в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 03.02.2016, 16:31
  3. Лектус виснет
    от Safron в разделе Сервисное ПО
    Ответов: 1
    Последнее сообщение: 14.05.2014, 19:45
  4. виснет мпр-51
    от qewr в разделе Эксплуатация
    Ответов: 10
    Последнее сообщение: 11.08.2010, 13:47

Ваши права

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