При использовании следующей конструкции:
В ячейке *(DWORD*)(PSW+400) постоянно значение "0". Что не так?Код:DWORD tmp_var; *(float*)(PSW+326)=100.0; tmp_var=Float_2_DWord(*(float*)(PSW+326)); *(DWORD*)(PSW+400)=tmp_var;
При использовании следующей конструкции:
В ячейке *(DWORD*)(PSW+400) постоянно значение "0". Что не так?Код:DWORD tmp_var; *(float*)(PSW+326)=100.0; tmp_var=Float_2_DWord(*(float*)(PSW+326)); *(DWORD*)(PSW+400)=tmp_var;
Добрый вечер.
Что именно вы пытаетесь сделать с помощью такой конструкции?
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Здравствуйте!
Это выжимка из кода, там дополнительные преобразования, которые в тестовом примере не указаны. Только тот участок который не работает:
По идее пример должен сохранить значение "100" в ячейке PSW[400-401]. Но почему то в данной ячейке только "0x0000".Код:tmp_var=Float_2_DWord(*(float*)(PSW+326));
Последний раз редактировалось r0mashkin0; 11.06.2018 в 22:55.
Нет, не должен. Данные функции не производят конверсию, поэтому в ячейках PSW[400-401] будет 0x42c80000.По идее пример должен сохранить значение "100" в ячейке PSW[400-401]
Вероятно, вы как раз видите значение младшего из этих регистров (там как раз 0).
https://www.h-schmidt.net/FloatConverter/IEEE754.html
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Добавил элемент "Дисплей", в свойствах указал DWORD, адрес PSW[400] и формат Hex; и меня там почему то "0x00".
Последний раз редактировалось r0mashkin0; 11.06.2018 в 23:09.
А знаков сколько? Должно быть 8, чтобы увидеть все.
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Я выставлял 12 знаков. А что далает функция Float_2_DWord()?
У меня ваш пример работает вот так.
В PSW400-401 именно 0x42c80000 - как и должно быть.
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Загружу Ваш проект попозже, проверю. Повторю вопрос, что делает функция Float_2_DWord(). Если она не производит конвертацию, зачем она вообще нужна?
Чтобы получить последовательность бит, соответствующую float-значению по стандарту IEEE 754.
Я выше кидал ссылку на конвертер. Вот функция делает то же самое.
Если вам надо что-то в стиле 100.0 (FLOAT) ----> 100 (DWORD), то достаточно сделать так:
Код:DWORD tmp_var; *(float*)(PSW+326)=100.0; tmp_var=*(float*)(PSW+326); *(DWORD*)(PSW+400)=tmp_var;
Последний раз редактировалось Евгений Кислов; 12.06.2018 в 11:43.
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk