Форум 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 бесплатная Базовая версия / TRACE MODE 6 free Base version » Биты в слове.

   
Автор / Author Тема / Topic: Биты в слове.
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261


Icon 1 отправлено / posted      Профиль для / Profile for Vjam           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Добрый день!

Поставило в тупик элементарное действие. Есть OUT аргумент типа UINT. К как в этом аргументе установить определенный бит? Конструкции вроде этой не подходят:

arg = 0;
arg = arg + 1: // нулевой бит
arg = arg + 64; // шестой бит

Спасибо )

Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Почему не подходит?
arg = 0;
arg = arg + 1; // нулевой бит
arg = arg + 64; // шестой бит

Такая программа задаст OUT-аргументу значение 65.

Сообщения / Posts 17117 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261


Icon 1 отправлено / posted      Профиль для / Profile for Vjam           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Потому что нужно с начала обнулять аргумент. он должен "помнить" прежние состояния. например в прошлом цикле установили первый бит. а в текущем шестой. работает. ну а если в прошлом цикле установили первый а в текущем он все еще нужен. вновь прибавлять единичку нельзя )
Просто по некоторому событию бит в аргументе IN равен единице нужно вызвать функцию ровно один раз. Этот бит может висеть несколько циклов. Пишу что то вроде этого:

if i_ARG_000 & ( 1 shl 0 )
and not o_ARG_000 & ( 1 shl 0 ) then
; //здесь нужно установить нулевой бит в аргументе o_ARG_000 по валидному завершению вызываемой функции. запись в базу, например.
end_if;

Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Vjam
Forum Haunter / Завсегдатай форума
Участник № / Member № 2261


Icon 1 отправлено / posted      Профиль для / Profile for Vjam           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо разобрался.
Мож понадобится кому. nOk - то что функция возвращает. не ноль - выполнилась успешно.

o_ARG_000 = o_ARG_000 or ( nOk <> 0 ); // нулевой бит/
o_ARG_000 = o_ARG_000 or ( ( nOk <> 0 ) * 64 ) // шестой бит

Сообщения / Posts 136 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. Аргумент должен быть IN/OUT.
2. Надо использовать не арифметические, а побитовые и/или логические операторы языка ST.
3. Возможно, здесь будут более уместны соответствующие функциональные блоки языка FBD.

Сообщения / Posts 17117 | Из / 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