При использовании следующей конструкции:
В ячейке *(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;
Добрый вечер.
Что именно вы пытаетесь сделать с помощью такой конструкции?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | 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
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Добавил элемент "Дисплей", в свойствах указал DWORD, адрес PSW[400] и формат Hex; и меня там почему то "0x00".
Последний раз редактировалось r0mashkin0; 11.06.2018 в 23:09.
А знаков сколько? Должно быть 8, чтобы увидеть все.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Я выставлял 12 знаков. А что далает функция Float_2_DWord()?
У меня ваш пример работает вот так.
В PSW400-401 именно 0x42c80000 - как и должно быть.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | 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.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk