Созданные ответы форума
-
АвторСообщения
-
MikhailМодератор
Может быть на ТРМ есть настройки, какое значение выдавать, в случае обрыва датчика?
MikhailМодераторТам вместо скриншотов были сайты каких-то магазинов.
Нужно посмотреть, что показывает Коммуникатор в тегах при обрыве датчика. Если при этом связь по Modbus с контроллером установлена, то обычно отображается явно некорректное значение, например, большое отрицательное для целых чисел или NaN для вещественных.MikhailМодераторТакже члены класса становятся доступны при наследовании. Но насколько я понимаю, здесь наследование не требуется.
MikhailМодераторбыл способ в KpXXLogic объявить переменную так, чтобы она была не static но доступна в KpXXLogic, XXLogic1, XXLogic2
Переменная, объявленная в классе KpXXLogic доступна внутри KpXXLogic.
Чтобы она была доступна в других классах, её нужно туда передать при создании или после создания объекта другого класса.MikhailМодераторНа скриншоте все ответы ОК — обрывов связи не наблюдается.
MikhailМодераторВ следующий раз за ссылки на сторонние ресурсы не по теме будет бан.
MikhailМодераторЗдесь нужно мыслить в парадигме объектно-ориентированного программирования и всё встанет на свои места ))
чтобы Коммуникатор ограничивал блоки данных каждого вызова dll, особенно учитывая, что он может вызывать библиотеки несколько раз и в несколько потоков
Верно, Коммуникатор для каждого КП создаёт отдельный объект типа KpXXLogic, который Вы описываете в драйвере.
MikhailМодераторТо есть в классах-обработчиках используются только локальные переменные в их методах и не используются поля и свойства класса.
MikhailМодераторЧтобы не запутаться, можно использовать такой подход: все основные классы и объекты, кроме KpXXLogic не должны хранить в себе данные, а должны только обрабатывать данные, которые им передаются при вызове методов. Объекты, хранящие данные должны быть объявлены внутри KpXXLogic. Но при этом понадобятся отдельные объекты, которые группируют и хранят данные для передачи в методы для обработки. То есть разделить хранение данных и обработку.
MikhailМодераторdll вся целиком разве не одна сборка ?
Да, одна сборка. Переменная static будет общей для службы Коммуникатора.
MikhailМодераторСейчас ни с того ни с сего прибор начинает слать больше байт чем должен, вааще в афиге….
Это уже сам прибор неадекватно себя ведет, вероятно?
MikhailМодераторЯ имел ввиду следующее:
MyClass1 myObj1 = new MyClass1(); MyClass2 myObj2 = new MyClass2(); myObj1.ObrabotkaObjektaTipa2(myObj2);
При вызове метода ObrabotkaObjektaTipa2 не происходит копирования объекта myObj2, а только передаётся ссылка на него.
MikhailМодераторЧтобы светодиод реагировал на недостоверный статус, нужно для входного канала задать такую формулу:
Cnl; Stat == 5 ? 0 : StatФормула заменяет недостоверный статус на неопределенный. Это нужно только для реакции на отключение Коммуникатора.
MikhailМодераторДобрый день!
Если данные не будут поступать от Коммуникатора, то через заданное в настройках SCADA-Сервера время (5 минут по умолчанию) статус значений изменится на недостоверный. На схеме это будет видно, если использовать компонент Светодиод, а не Динамический рисунок.
Но остановка Коммуникатора — это не нормальная ситуация пропадания связи. Пропала связь, когда Коммуникатор опрашивает устройство, а оно не отвечает.
MikhailМодераторНадо проверить, что при обрыве связи в журнале линии связи и на странице Данные КП.
-
АвторСообщения