Сообщение от
paul-th
Ошибки исправлю. Спасибо.
И в принципе макрос работоспособен?
Ящик на объекте стоит в другом городе и управление пока в ручном режиме даже без контроля текущей температуры.
Датчики не знают как к ТРМу подключить.
Исправленный проект.
Сомневаюсь, я
Много путаницы.
Вот зачем это?
Захват-1.png
Убрать категорически!!!
Кроме того, значение температуры из ТРМ в регистре 3х0003 будет получено в виде числа с плавающей точкой(Float)
Захват-2.png
А у дисплея формат - целое без знаковое число(Unsigned)
Захват-3.png
Вопрос о том как текущая температура из ТРМ попадет в регистр PSW256 и соответственно в макрос остается не раскрытым
Захват-4.png
Да и формат не тот. Не может CurTemp,если ее читать из регистра 0х0003, быть DWORD, только float
Кроме того Вы читаете из ТРМ значение температуры в формате Float, а максимальную температуру задаете в регистре PSW260 в формате UINT и соответственно в макросе сравниваете между собой не сравниваемые величины.
Либо читайте другой регистр - 0х0001 значение в формате INT.
Такая запись при объявлении переменных
Код:
DWORD CurTemp=PSW[256];
WORD MaxTemp=PSW[260];
WORD SleepSec=PSW[258];
WORD StartTemp=PSW[256];
По моему не прокатит. Боюсь, что компилятор при загрузке проекта в панель будет ругаться.
Уж лучше использовать директивы #define
например
Код:
#define SleepSec PSW[258]
#define MaxTemp *(float*)(PSW + 260) // При условии, что Вы все таки исправите на экране цифровой ввод для MaxTemp (тип данных DWord, формат Float)
Захват-5.png Захват-6.png