This is topic Аргумент ST-программы UDINT не принимает значения in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000079.html

Posted by Soyuz (Участник № / Member № 2028) on :
 
В среде разработки TM 6.06.2 создали ST-программу следующего содержания:

code:
 
PROGRAM
VAR_OUTPUT Hex32_W : UDINT; END_VAR
VAR_INPUT Hex16_Hi : UINT; END_VAR
VAR_INPUT Hex16_Lo : UINT; END_VAR
VAR U4_Temp : UDINT; END_VAR

U4_Temp = Hex16_Hi;
U4_Temp = U4_Temp << 16;
U4_Temp = U4_Temp + Hex16_Lo;
Hex32_W = U4_Temp;

END_PROGRAM

Так вот, в чем проблема. В отладчике значение аргумента Hex32_W принимает значение Hex16_Hi + Hex16_Lo. Но, когда запускаешь проект на исполнение, Hex16_Hi и Hex16_Lo принимают не нулевые значения, а Hex32_W по-прежнему равен нулю. Подскажите, в чем может быть проблема? [Недоумение / Confused]
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Вам аргументы Hex16_Hi и Hex16_Lo надо тоже сделать типом UDINT, а то сдвигаете значение в 16-битовой переменной на 16 разрядов влево, вот она у вас и улетает за пределы. [Улыбка / Smile]
 
Posted by Soyuz (Участник № / Member № 2028) on :
 
Romсheg, покажите, в каком месте я сдвигаю 16-битовую переменную на 16 разрядов влево.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Вот здесь:
U4_Temp = U4_Temp << 16;

У вас U4_Temp типа UINT - это 16-разрядное значение без знака.
 
Posted by Soyuz (Участник № / Member № 2028) on :
 
VAR U4_Temp : UDINT; END_VAR
А это что такое?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Прошу прощения, пропустил.
Но все же ваш код будет работать в МРВ, если аргументы Hex16_Hi и Hex16_Lo сделать типами UDINT. Подозреваю это из-за преобразования типов при присваивании U4_Temp аргумента Hex16_Hi он принимает его тип UINT.
 
Posted by Soyuz (Участник № / Member № 2028) on :
 
Вопрос снят.
Проблема была в неправильной привязки каналов Hex16, которые в свою очередь были привязаны к аргументам программы Hex16_Lo и Hex16_Hi.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2