Стартовая страница › Форумы › Взаимодействие с устройствами › OPC › пустое значение в коммуникаторе
- В этой теме 15 ответов, 3 участника, последнее обновление 8 лет, 3 месяца назад сделано
malec.
-
АвторСообщения
-
07.03.2018 в 13:52 #8642
malec
УчастникДобрый день!
В коммуникаторе поле прописывается как system.byte[]. Качество: good
т.е. на входе никаких значений не было, а вот в табличке Текущие данные КП это поле уже имеет вид : название канала[0] значение 0,000 номер канала.
И в БД уже прописывается со значение 0
Вот тут и проблема что когда приходит 0 то начинается путаница.
Можно как то сменить не 0 а к примеру 99 или в идеале чтоб в настройках КП появилось поле куда можно было бы ввести дефолтное число которое не будет пересекаться с рабочими.07.03.2018 в 18:21 #8643
MikhailМодераторДобрый день!
Можете добавить ссылки на скриншоты и журнал линии связи, в котором видно, что приходит от OPC-сервера?07.03.2018 в 20:37 #8646malec
Участник
08.03.2018 в 18:56 #8649
MikhailМодераторВ случае массива получаемое значение не пишется. Скорее всего, приходит 0.
С помощью формулы для входного канала №2088 Вы можете в случае 0 установить любое значение или, например, неопределённый статус.
Пример формулы канала:
Cnl; Cnl > 0 ? CnlStat : 008.03.2018 в 20:23 #8651malec
Участникгде нужно вводить формулу?
09.03.2018 в 10:24 #8652malec
Участниккогда на входе будет 0 чтобы заменить на 9 нужно сделать так?
Cnl; Cnl > 0 ? CnlStat : 909.03.2018 в 12:13 #8653malec
Участник

На скринах видно в первом случае значение в орс есть и оно передается. Во втором нету, но в канале все равно прописывается 0. Такая формула(Cnl > 0 ? CnlVal : 7) в обоих случаях дает val=7 Видимо нужна формула по сложнее.09.03.2018 в 17:28 #8655
MikhailМодераторВо втором случае, когда значения нет, в Коммуникатор всё равно приходят данные по теги НС? Если да, то судя по всему, они равны 0, т.к. если статус GOOD, то должно же быть какое-то значение.
когда на входе будет 0 чтобы заменить на 9 нужно сделать так?
Cnl > 0 ? Cnl : 9
10.03.2018 в 09:16 #8657malec
УчастникМожет и приходит что то но я вижу только то что показал на скринах во втором сообщении. Как в формуле написать проверку типа: if(empty($a)) или if(!$a)
10.03.2018 в 15:40 #8659
MikhailМодераторНадо посмотреть в отладчике, что именно содержится в получаемом массиве. То есть как воспринимает драйвер Rapid SCADA «пустые» данные. Исходя из этого решать, как обрабатывать.
Я могу это сделать на коммерческой основе.10.03.2018 в 20:22 #8661malec
УчастникУвы но нет возможности. Сам я это сделать не смогу?
12.03.2018 в 17:19 #8663
MikhailМодераторЕсли Вы знакомы с C#, то сможете, я помогу советами через форум.
13.03.2018 в 07:01 #8664Kazam
УчастникДобрый день! OPC сервер от логики, скажем так не очень надежный.
Попробуйте наш драйвер, ссылка: Драйвер СПТ941Он еще и архивы умеет читать и писать их в базу данных PostgresSQL =)
13.03.2018 в 11:56 #8666malec
УчастникДобрый день!
У меня gsm модемы и опрос по csd так что выбирать не приходится. Думаю Ваш драйвер не умеет это делать…13.03.2018 в 17:11 #8668
MikhailМодераторCSD ещё жив 🙂
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.