Драйвер ODBC

Просмотр 10 сообщений - с 16 по 25 (из 25 всего)
  • Автор
    Сообщения
  • #24026
    Romiros
    Участник

    Библиотеки идут в составе RapidScada, поэтому не надо их таскать. А так, Вам виднее по Ваши задачи.

    #24029
    JurasskPark
    Участник

    Глупый вопрос.
    В пустой библиотеке, сделал стандартные void, чтобы проверить, как оно работает.
    /// <summary>
    /// Выполнить действия после добавления КП на линию связи
    /// </summary>
    public override void OnAddedToCommLine()
    {
    WriteToLog(«OnAddedToCommLine»);
    }

    /// <summary>
    /// Выполнить действия при запуске линии связи
    /// </summary>
    public override void OnCommLineStart()
    {
    WriteToLog(«OnCommLineStart»);
    }

    /// <summary>
    /// Выполнить действия при завершении работы линии связи
    /// </summary>
    public override void OnCommLineTerminate()
    {
    WriteToLog(«OnCommLineTerminate»);
    }

    /// <summary>
    /// Выполнить действия при прерывании работы линии связи
    /// </summary>
    public override void OnCommLineAbort()
    {
    WriteToLog(«OnCommLineAbort»);
    }

    /// <summary>
    /// Выполнить сеанс опроса КП
    /// </summary>
    public override void Session()
    {
    WriteToLog(«Session»);
    }

    /// <summary>
    /// Выполнить действия после установки соединения
    /// </summary>
    public override void OnConnectionSet()
    {
    WriteToLog(«OnConnectionSet»);
    }

    Логи:

    2022-06-17 01:57:23 Инициализация линии связи 6 «ODBC»
    OnAddedToCommLine
    2022-06-17 01:57:23 Запуск линии связи 6 «ODBC»
    OnCommLineStart

    2022-06-17 01:57:23 Невозможно выполнить сеанс связи с КП 6 «ODBC», т.к. соединение не установлено


    Повторение сообщения о невозможности выполнить сеанс связи.

    2022-06-17 01:57:27 Невозможно выполнить сеанс связи с КП 6 «ODBC», т.к. соединение не установлено

    2022-06-17 01:57:27 Невозможно выполнить сеанс связи с КП 6 «ODBC», т.к. соединение не установлено
    OnCommLineTerminate

    2022-06-17 01:57:27 Завершение работы линии связи 6 «ODBC»
    ———————————————————————————

    Вопрос, что делает void Session() и какой признак успешности соединения OnConnectionSet()?
    И что нужно, чтобы не было сообщения «Невозможно выполнить сеанс связи с КП»? 🙂
    P.S. Сильно бить ногами нельзя! 🙂

    #24032
    Romiros
    Участник

    Что-то типа того.
    public override void OnAddedToCommLine()
    {
    ConnRequired = false;
    }

    Можно в конструкторе логики драйвера выставить. Вообще смотрите KpDbImport. У Вас по сути частичное повторение этого драйвера будет.

    #24033
    JurasskPark
    Участник

    Большое спасибо! Я об этом даже как-то забыл! 😅

    #24034
    JurasskPark
    Участник

    Еще один нюанс, прочитал форум, получается, что в запросе берется первая строка из таблицы. Название столбца — это название тега, значение в нем — значение тега.
    И количество столбцов — это количество тегов, что в жизни очень редко бывает.
    Поэтому в отличие от KpDBImport, у меня строка — это отдельный тег 🙂

    #24039
    manjey73
    Участник

    В драйвере Тег это и есть данные сигнала. Если вам часть некоторых не нужна, вы просто не связываете ее с БД системы.

    Ну примерно как в групповом запросе Modbus, вам нужны переменные с 0, 3, 7 и 10 тегом но выполнить групповой запрос гораздо быстрее с 0 по 10 чем опрашивать их в отдельности. Просто не связываете с базой те, которые вам не нужны.

    Почему у вас в жизни это очень редко бывает? если это лишняя информация, но она вынужденная, так просто не связывайте ее с данными сервера и все.

    #24057
    JurasskPark
    Участник

    Написание драйвера в стадии: 75%
    Начал проверять логику.
    Error executing actions of Device 6 «ODBC» on adding device to communication line: String is not hexadecimal.
    На что нужно обратить внимание? Я так понимаю, что я передаю номер устройства, но нигде его не обработал?

            public KpODBCLogic(int number)
                : base(number)
            {
                //Отключаем проверку сеанса связи 
                ConnRequired = false;
                ConfigLoad();
            }
    
     /// <summary>
            /// Выполнить действия после добавления КП на линию связи
            /// </summary>
            public override void OnAddedToCommLine()
            {
                WriteToLog("OnAddedToCommLine");
    
                strConfigDir = AppDirs.ConfigDir;
                intNumber = Number;
                strFileNamePath = KpConfig.GetFileName(AppDirs.ConfigDir, Number);
    
                ConfigLoad();
            }
            /// <summary>
            /// Выполнить сеанс опроса КП
            /// </summary>
            public override void Session()
            {
                WriteToLog("Session");
                base.Session();
                ImportExportData();
            }
    

    https://jurasskpark.magicteam.net/tmp/01.png
    https://jurasskpark.magicteam.net/tmp/02.png

    #24058
    JurasskPark
    Участник

    Вопрос закрыт. 😀

    2022-06-22 10:40:38 Сеанс связи с КП 6 «ODBC», тип: KpODBC
    Загружаем конфигC:\SCADA\ScadaComm\Config\KpODBC_006.xml
    Ошибка при отправке команды БД: System.FormatException: Строка не является 16-ричной записью.
    в Scada.ScadaUtils.HexToBytes(String s, Boolean skipWhiteSpace)
    в Scada.ScadaUtils.Decrypt(String s, Byte[] secretKey, Byte[] iv)
    в Scada.Comm.Devices.KpODBCLogic.InitDataSource(KpConfig config)
    в Scada.Comm.Devices.KpODBCLogic.ConfigLoad()
    в Scada.Comm.Devices.KpODBCLogic.ImportExportData()

    Я же забыл, что шифрую через Scada.ScadaUtils и получая строки, через загрузку проекта не расшифровываю сразу как у себя в приложении. 🙂

    #24064
    JurasskPark
    Участник

    Помогите, пожалуйста!
    Я же правильно понимаю, что пока мы не ициницилизировали список тегов, то добавить срез данных нельзя?
    Т.е. сначала InitKPTags(tagGroups) , а только потом AddArcSrez(srez)?
    Я думал, что можно в SetCurData() указывать время тега… )

    Можно всё же когда добавляешь в тег в свой список, сразу ему отдавать время?)

    #24066
    Mikhail
    Модератор

    Теги инициализируются при добавлении КП на линию связи.
    Архивный срез добавляется в сеансе опроса.

Просмотр 10 сообщений - с 16 по 25 (из 25 всего)
  • Вы должны авторизироваться для ответа в этой теме.