Так вот, в чем проблема. В отладчике значение аргумента Hex32_W принимает значение Hex16_Hi + Hex16_Lo. Но, когда запускаешь проект на исполнение, Hex16_Hi и Hex16_Lo принимают не нулевые значения, а Hex32_W по-прежнему равен нулю. Подскажите, в чем может быть проблема?
Сообщения / Posts 52 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Romсheg
unregistered
отправлено / posted
Вам аргументы Hex16_Hi и Hex16_Lo надо тоже сделать типом UDINT, а то сдвигаете значение в 16-битовой переменной на 16 разрядов влево, вот она у вас и улетает за пределы.
IP / IP: IP адрес / IP address |
Soyuz
Forum Member / Участник форума
Участник № / Member № 2028
отправлено / posted
Romсheg, покажите, в каком месте я сдвигаю 16-битовую переменную на 16 разрядов влево.
Сообщения / Posts 52 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Romсheg
unregistered
отправлено / posted
Вот здесь: U4_Temp = U4_Temp << 16;
У вас U4_Temp типа UINT - это 16-разрядное значение без знака.
IP / IP: IP адрес / IP address |
Soyuz
Forum Member / Участник форума
Участник № / Member № 2028
отправлено / posted
Прошу прощения, пропустил. Но все же ваш код будет работать в МРВ, если аргументы Hex16_Hi и Hex16_Lo сделать типами UDINT. Подозреваю это из-за преобразования типов при присваивании U4_Temp аргумента Hex16_Hi он принимает его тип UINT.
IP / IP: IP адрес / IP address |
Soyuz
Forum Member / Участник форума
Участник № / Member № 2028
отправлено / posted
Вопрос снят. Проблема была в неправильной привязки каналов Hex16, которые в свою очередь были привязаны к аргументам программы Hex16_Lo и Hex16_Hi.
Сообщения / Posts 52 | Из / From: Украина
| IP / IP: IP адрес / IP address |