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

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

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

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

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

  2. #2

    По умолчанию

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

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

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

    По умолчанию

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

  4. #4

    По умолчанию

    Цитата Сообщение от 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
    Пользователь
    Регистрация
    01.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    99

    По умолчанию

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

  6. #6

    По умолчанию

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

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

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

    По умолчанию

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

  8. #8

    По умолчанию

    Цитата Сообщение от 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, 18:45
  4. виснет мпр-51
    от qewr в разделе Эксплуатация
    Ответов: 10
    Последнее сообщение: 11.08.2010, 12:47

Ваши права

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