Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Чт мар 28, 2024 15:03

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 3 сообщений ] 
Автор Сообщение
 Заголовок сообщения: представление переменной в виде битогвого массива
СообщениеДобавлено: Сб окт 12, 2013 06:22 
Не в сети

Регистрация: Вт июн 18, 2013 23:22
Сообщения: 73
Можно ли в супервизоре распаковать word переменную из орс в виде битового массива?


В начало
 Профиль  
 
 Заголовок сообщения: Re: представление переменной в виде битогвого массива
СообщениеДобавлено: Сб окт 12, 2013 15:41 
Не в сети

Регистрация: Вт окт 03, 2006 02:19
Сообщения: 68
Откуда: Иркутск
можно, скриптом)

{преобразование БАЙТА данных в 8 битов - распаковка}
DIM I AS INTEGER;
DIM I1 AS INTEGER;
IF IntVal == 0 THEN
b0=0;
LL_Act=0;
L_Act=0;
H_Act=0;
HH_Act=0;
b5=0;
b6=0;
b7=0;
ELSE
I=IntVal/2;
IF I<>IntVal/2 THEN b0=1;
ELSE b0=0;
ENDIF;
I1=I;
I=I/2;
IF ((I - I1/2)<>0) THEN LL_Act=1;
ELSE LL_Act=0;
ENDIF;
I1=I;
I=I/2;
IF ((I - I1/2)<>0)THEN L_Act=1;
ELSE L_Act=0;
ENDIF;
I1=I;
I=I/2;
IF ((I - I1/2)<>0) THEN H_Act=1;
ELSE H_Act=0;
ENDIF;
I1=I;
I=I/2;
IF ((I - I1/2)<>0)THEN HH_Act=1;
ELSE HH_Act=0;
ENDIF;
I1=I;
I=I/2;
IF ((I - I1/2)<>0)THEN b5=1;
ELSE b5=0;
ENDIF;
I1=I;
I=I/2;
IF ((I - I1/2)<>0) THEN b6=1;
ELSE b6=0;
ENDIF;
I1=I;
I=I/2;
IF ((I - I1/2)<>0) THEN b7=1;
ELSE b7=0;
ENDIF;
ENDIF;

и в обратную сторону
{преобразование 8 битов данных в БАЙТ}
DIM I AS INTEGER;
I = b7*2**7+b6*2**6+b5*2**5+HH_Act*2**4+H_Act*2**3+L_Act*2**2+LL_Act*2**1+b0*2*0;
IntVar = I;
RETURN IntVar;
Язык не из супервизора но смысл понятен.
в слове 2 байта как разделить должно быть понятно)
если что формулу преобразования можно найти в инете


В начало
 Профиль  
 
 Заголовок сообщения: Re: представление переменной в виде битогвого массива
СообщениеДобавлено: Вс окт 13, 2013 02:10 
Не в сети

Регистрация: Вт июн 18, 2013 23:22
Сообщения: 73
Дюже страшный скрипт, вопрос решился циклическим скриптом вида:

FOR count = 0 TO 15

Memory_var[count] = GetBit(OPC_var, count)

NEXT


В начало
 Профиль  
 
Показать сообщения за:  Сортировка  
Начать новую тему Ответить на тему  [ 3 сообщений ] 

Часовой пояс: UTC + 3 часа (Russia: MSK)


Кто сейчас на конференции

Сейчас этот форум просматривают: в настоящее время на конференции нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Переход:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3