Стартовая страница › Форумы › Понять, как работает ПО › Один сигнал — много каналов
- В этой теме 13 ответов, 5 участников, последнее обновление 8 месяцев, 1 неделя назад сделано
Mikhail.
-
АвторСообщения
-
06.10.2017 в 11:36 #7489
OldManSpbУчастникПриветствую!
Можно ли брать в несколько каналов один и тот же сигнал одного КП? Необходимо разобрать данные сигнала по битам, и каждый бит вывести в отдельный канал.06.10.2017 в 11:42 #7490
manjey73УчастникМожно конечно, вы можете потом обращаться к каналу через Val(N)
Например так GetBit(Val(140),2) — взять второй бит значения 140-го канала
Или так Rtrig(GetBit(Val(140),2)) отловить фронт импульса по 2-му биту 140-го каналаОбе формулы будут каждый в своем дорасчетном канале…
А можно и разделить (иногда требуется разделять..)
Первоначальная формула GetBit записана например в 142-м канале
Rtrig(Val(142)) тогда будет.06.10.2017 в 12:16 #7493
OldManSpbУчастникА так можно? GetBit((int)Cnl,5)
06.10.2017 в 13:12 #7494
OldManSpbУчастникТочнее так
Канал КП Сигнал Формула
100 Abc 2 GetBit((int)Cnl,0);Stat(CnlNum)
101 Abc 2 GetBit((int)Cnl,1);Stat(CnlNum)
102 Abc 2 GetBit((int)Cnl,2);Stat(CnlNum)06.10.2017 в 13:23 #7495
manjey73УчастникНет, так не получится, потому что привязка между базой и Коммуникатором как будет происходить ? Cnl работает только на каналах Телеуправления же.
06.10.2017 в 15:06 #7502
MikhailМодераторДобрый день!
Один входной канал для первичных данных и множество дорасчётных каналов для выделения битов.06.10.2017 в 15:38 #7504
OldManSpbУчастникПонятно. То есть несколько каналов не могут использовать один сигнал?
06.10.2017 в 15:56 #7505
manjey73УчастникДорасчетные каналы могут использовать данные одного входного канала.
Входной канал это взаимосвязь между Сервером и Коммуникатором, дорасчетных можно налепить сколько угодно и брать значение из входного канала.
Например разные формулы расчета для того или иного отображения.-
Ответ изменён 8 лет, 8 месяцев назад пользователем
manjey73.
07.10.2017 в 18:35 #7511
MikhailМодераторТо есть несколько каналов не могут использовать один сигнал?
Даже если укажете один КП и сигнал для нескольких каналов, данные из Коммуникатора поступят только на один из каналов.
08.10.2025 в 12:27 #40576dikh
УчастникДопустим у меня по каналу № 1234 происходит считываение регистра, из которого мне нужно вычесть биты, значит я создаю 3 канала и формулы быдут выглядеть так:
Канал №1235 — GetBit(Val(1234),0) — считать 0ой бит из канала 1234
Канал №1236 — GetBit(Val(1234),5) — считать 5ый бит из канала 1234
Канал №1237 — GetBit(Val(1234),10) — считать 10ый бит из канала 1234
Я прав?-
Ответ изменён 8 месяцев, 1 неделя назад пользователем
dikh.
08.10.2025 в 13:49 #40578
manjey73Участник09.10.2025 в 06:54 #40581dikh
Участник@manjey73, спасибо.
А если мне в зависимости от нескольких условий нужно менять статус канала? Т.е. использовать if?
Т.е. допустим:
если канал 2 = 0 тогда канал 1 = 0
если канал 2 <> 0, а канал 3 от 1 до 5 тогда канал 1 = 1
если канал 2 <> 0, а канал 3 от 4 до 5 и канал 4 = 10 тогда канал 1 = 3
?
Нашел, нужно делать функции.09.10.2025 в 09:53 #40582
a80808Участникcase можно
09.10.2025 в 12:00 #40585
MikhailМодераторДобрый день!
В 6-й версии предпочтительноGetBit(Data(1234), 0), чтобы формула учитывала статус исходного канала. -
Ответ изменён 8 лет, 8 месяцев назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.