Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Языки программирования в TRACE MODE 6 / Algorithm Programming Languages » Аргумент ST-программы UDINT не принимает значения

   
Автор / Author Тема / Topic: Аргумент ST-программы UDINT не принимает значения
Soyuz
Forum Member / Участник форума
Участник № / Member № 2028


Icon 1 отправлено / posted      Профиль для / Profile for Soyuz           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В среде разработки 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]
Сообщения / Posts 52 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вам аргументы Hex16_Hi и Hex16_Lo надо тоже сделать типом UDINT, а то сдвигаете значение в 16-битовой переменной на 16 разрядов влево, вот она у вас и улетает за пределы. [Улыбка / Smile]
IP / IP: IP адрес / IP address | Report this post to a Moderator
Soyuz
Forum Member / Участник форума
Участник № / Member № 2028


Icon 1 отправлено / posted      Профиль для / Profile for Soyuz           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Romсheg, покажите, в каком месте я сдвигаю 16-битовую переменную на 16 разрядов влево.
Сообщения / Posts 52 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вот здесь:
U4_Temp = U4_Temp << 16;

У вас U4_Temp типа UINT - это 16-разрядное значение без знака.

IP / IP: IP адрес / IP address | Report this post to a Moderator
Soyuz
Forum Member / Участник форума
Участник № / Member № 2028


Icon 1 отправлено / posted      Профиль для / Profile for Soyuz           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
VAR U4_Temp : UDINT; END_VAR
А это что такое?

Сообщения / Posts 52 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Прошу прощения, пропустил.
Но все же ваш код будет работать в МРВ, если аргументы Hex16_Hi и Hex16_Lo сделать типами UDINT. Подозреваю это из-за преобразования типов при присваивании U4_Temp аргумента Hex16_Hi он принимает его тип UINT.

IP / IP: IP адрес / IP address | Report this post to a Moderator
Soyuz
Forum Member / Участник форума
Участник № / Member № 2028


Icon 1 отправлено / posted      Профиль для / Profile for Soyuz           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вопрос снят.
Проблема была в неправильной привязки каналов Hex16, которые в свою очередь были привязаны к аргументам программы Hex16_Lo и Hex16_Hi.

Сообщения / Posts 52 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2