Созданные ответы форума
-
АвторСообщения
-
MikhailМодератор
Добрый день!
Если данные не будут поступать от Коммуникатора, то через заданное в настройках SCADA-Сервера время (5 минут по умолчанию) статус значений изменится на недостоверный. На схеме это будет видно, если использовать компонент Светодиод, а не Динамический рисунок.
Но остановка Коммуникатора — это не нормальная ситуация пропадания связи. Пропала связь, когда Коммуникатор опрашивает устройство, а оно не отвечает.
MikhailМодераторНадо проверить, что при обрыве связи в журнале линии связи и на странице Данные КП.
MikhailМодераторВсе объекты, которые Вы создадите из экземпляра KpXXLogic, будут Вам доступны именно из этого объекта КП.
Если понадобится обмениваться данными с другими КП этого же типа (например, между КП 101 и КП 102), то для этого в драйвере предусмотрены специальные общие переменные. Ну или просто static использовать, только аккуратнее, т.к. при многопоточности могут быть чудеса.
MikhailМодераторА не заниматься его копированием, передачей при каждом вызове.
При передаче объекта в метод передаётся ссылка на объект, данные не копируются.
MikhailМодераторДобрый день!
Параметр недостоверен — если от устройства нет новых данных более заданного времени. Это время можно установить в настройках SCADA-Сервера.По какому протоколу идёт общение? Модем является TCP-сервером или TCP-клиентом?
MikhailМодераторМожно, если поднять свой OPC
Работать будет, но так много прослоек получится…
MikhailМодераторПолучается что весь код необходимо писать в KpMbusLogic.cs и по другому никак ?
Безусловно лучше разбить на классы.
Либо я не понимаю как это реализовать ?
Нужно создавать экземпляры классов с помощью new MyClass()
Делать static классы для вспомогательных вычислений можно, но при этом нежелательно в них хранить данные, то есть в них делать только методы и константы, по аналогии с ScadaUtils
MikhailМодераторДа нет, мне наоборот необходимо импортировать данные из SQLite, то есть что бы данные из SQLite попали в «Скаду».
В этом году планируется разработка драйвера, который будет затягивать данные из баз данных. Подключение к SQLite будет, скорее всего через OleDB. На данный момент драйвер, к сожалению, не существует. Если Вы программист, то можете сами разработать. Если не делать универсальный драйвер, то будет несложно.
MikhailМодераторНапример, ссылки на объекты КП хранятся в объекте линии связи, который является частью Коммуникатора.
Если Вы создадите новый класс из своего объекта КП, то именно этот объект будет видеть новый класс, а другие КП не будут его видеть (за исключением static).
MikhailМодераторкак передать private bool в другой cs
Передача происходит не в cs, а между объектами. Одному классу описанному в cs могут соответствовать как один так и множество созданных объектов. Ссылка на эти объекты есть у того объекта, который их создал. Чтобы разобраться, можно почитать по ссылке.
MikhailМодераторНужно уточнить, какие классы драйвера должны видеть Ваш объект, о котором идет речь? Он должен быть виден из нескольких КП на линии связи или как-то ещё?
MikhailМодераторЗаведите, например, тип
public class TagDescriptor
{
…
}и создайте словарь Dictionary<int, TagDescriptor> myTags;
Где ключ — номер сигнала.Внутри ConvertTagDataToStr обращайтесь к информации о тегах — переменной myTags
MikhailМодераторНужно в KpXXLogic объявить копию глобального класса так, чтобы все остальные cs имели доступ к этим переменным только в пределах одного вызова dll и не влияли на другой, третий и так далее.
Нужен
public class A {…}
И создание экземпляра класса A внутри Вашего КП:
private A a = new A();MikhailМодераторpublic — возможность использовать класс, метод или свойство из других классов и библиотек. Имеет значение экземпляр класса (ещё называется объект). Если создать 2 разных экземпляра одного класса, то каждый экземпляр будет независимым.
public static — глобальная переменная для всех библиотек.
MikhailМодераторПопробуйте существующий компонент Ссылка.
-
АвторСообщения