PDA

Просмотр полной версии : Помогите разобраться с битами.



Сергей Фенев
28.05.2025, 20:26
Товарищи , вообще не получается вникнуть как слово раскладывать на биты . Вот пример : имеется частотный преобразователь Delta VFD -E необходимо получать по rs485 состояния частототного преобразователя (включен/выключен, прямое/обратное вращение ). Почему в одном случае 0 , в другом случае 1 , каким образом происходит всё это преобразование. Подскажите литературу , сайты в которых можно черпнуть этой информации .

kondor3000
29.05.2025, 10:07
Товарищи , вообще не получается вникнуть как слово раскладывать на биты . Вот пример : имеется частотный преобразователь Delta VFD -E необходимо получать по rs485 состояния частототного преобразователя (включен/выключен, прямое/обратное вращение ). Почему в одном случае 0 , в другом случае 1 , каким образом происходит всё это преобразование. Подскажите литературу , сайты в которых можно черпнуть этой информации .

Вы бы хоть написали чем вы распаковывать биты будете.
На ST биты из Маски распаковываются через точку b0:= Mask.0; b1:= Mask.1; b2:= Mask.2;......... b15:= Mask.15;
Упаковка в обратном порядке.
На 2 скрине, биты справа налево, внизу номер бита, вверху состояние бита в двоичной системе, 0 выключен, 1 включен.
В десятичной системе у каждого бита своё число, 0 бит включен -1, 1 бит вкл -2, 2 бит вкл -4, 3 бит вкл -8 и т. д.

EFrol
29.05.2025, 10:18
bit 1,0 = 11 - привод работает
bit8 = 1 - управление ведущей частотой по RS-485
bit10 = 1 - управление приводом по RS-485

Sulfur
29.05.2025, 13:17
Сергей Фенев
Пример на ST
Читаем из VFD регистр 2101H в переменную например VFD_Status.
Далее:
IF VFD_Status.0 AND VFD_Status.1 THEN состояние:=работает; END_IF;
IF NOT VFD_Status.0 AND NOT VFD_Status.1 THEN состояние:=остановлен; END_IF;
IF VFD_Status.3 AND VFD_Status.4 THEN направление:=обратное; END_IF;
IF NOT VFD_Status.3 AND NOT VFD_Status.4 THEN направление:=прямое; END_IF;