JurasskPark

Ответы в темах

Просмотр 15 сообщений - с 1 по 15 (из 1,122 всего)
  • Автор
    Сообщения
  • в ответ на: Подробный журнал. Slave режим. #42318
    JurasskPark
    Участник

    В итоге, получаю имя линии, путь до логов, получаю адрес файла для логов.
    Отключаю детальное легирования и тоже получаю из свойств линии признак, что линия отключена.

    И уже в свойстве логирования проверяю, что если детальное логирование отключено, но у нас стоит в драйвера признак, что логировать надо, сам пишу в лог.

    в ответ на: Подробный журнал. Slave режим. #42315
    JurasskPark
    Участник

    Сегодня добил вопрос с детальным логом.
    Если детальное логирование отключено, но
    Запись была через Connection.Write(buffer, offset, count), то лог всë равно писался.
    А вот если запись была через Connection.Write(buffer, offset, count, format, out log), то запись не производится.

    А у меня в Slave было именно простой первый Write.

    в ответ на: Драйвер в режиме TcpServer #42205
    JurasskPark
    Участник

    Михаил, для закрепления темы и повторения.

    1. Приходит команда, по которой мы определяем адрес устройства.
    Библиотека понимает, что адрес устройства в полученной команде и адрес в конфигурации проекта совпадают, то мы всё равно делаем поиск через
    LineContext.GetDeviceByAddress(address, out deviceLogic)?

    if(deviceLogic.NumAddress == address)
    {
       LineContext.GetDeviceByAddress(address, out deviceLogic);
    }

    2. Приходит команда, по которой мы определяем адрес устройства.
    Библиотека понимает, что адрес устройства в полученной команде и адрес в конфигурации проекта НЕ совпадают, то мы делаем поиск через
    LineContext.GetDeviceByAddress(address, out deviceLogic)?

    if(deviceLogic.NumAddress != address)
    {
       LineContext.GetDeviceByAddress(address, out deviceLogic);
    }

    3. Приходит команда, по которой мы НЕ можем определить адрес устройства, т.к. это команда установки связи.
    Библиотека понимает, что адрес устройства в полученной команде и адрес в конфигурации проекта НЕ совпадают, но для установления связи нужно всё равно ответить.
    LineContext.GetDeviceByAddress(address, out deviceLogic) — вызывать бессмылено, устройство мы не найдем.
    Значит не вызываем?

    4. В каких случаях нужно вызывать requestArgs.TargetDevices.Add(deviceLogic)?
    Каждый раз про получении данных от устройства?
    Объясню сложность вопроса для себя.
    Если пришли данные от устройства и мы не вызвали requestArgs.TargetDevices.Add(deviceLogic), то мы не узнали, что устройство подключилось новое.
    Если мы каждый раз при получении команды, будет вызывать, то не будет ли количество TargetDevices стремится к бесконечности? Или они очищаются после каждого опроса через период времени?

    5. Нужно ли ReceiveIncomingRequest(Connection connection, IncomingRequestArgs requestArgs) завершать командами, при удачном выполнении
    LastRequestOK = true;
    FinishRequest();
    SleepPollingDelay();
    FinishSession();

    или ничего не должно быть?

    в ответ на: Попытка подружить. #42185
    JurasskPark
    Участник

    Format.
    Там должно написано не float, а System.Float, не boolen, а System.Boolean итд.
    Плюс как я помню, тип code и path были одни и теже.
    Сначала один тег протестируйте.
    1. Формат.
    2. Потом после исправления формата, смотрите code и пропишите как адрес.

    в ответ на: Подробный журнал. Slave режим. #42152
    JurasskPark
    Участник

    Самое интересное, что скрин забыл в начале темы прикрепить, как это выглядело 🙂
    http://jurasskpark.ru/pubimg/up/17721692980db5c36.png

    в ответ на: Драйвер в режиме TcpServer #42150
    JurasskPark
    Участник
    
    if (deviceLogic.NumAddress != request.UnitID)
        LineContext.GetDeviceByAddress(request.UnitID, out deviceLogic)
    

    Для информации.
    Я попался на LineContext.GetDeviceByAddress.

    LineContext.GetDeviceByAddress — если int передать, то это поиск по адресу устройства.
    LineContext.GetDeviceByAddress — если передать string, то это поиск по ip.

    А у меня стояло — LineContext.GetDevice — это поиск по номеру устройства.

    P.S. Нашёл, когда отлаживал DrvDebug…
    Точнее везде в начале темы я пишу LineContext.GetDeviceByAddress, но потом была вспышка на солнце и в коде уже было LineContext.GetDevice. 😀

    в ответ на: Подробный журнал. Slave режим. #42149
    JurasskPark
    Участник
    
            /// <summary>
            /// Performs a communication session.
            /// </summary>
            public virtual void Session()
            {
                LastSessionTime = DateTime.UtcNow;
                LastRequestOK = true;
    
                Log.WriteLine();
                Log.WriteAction(Locale.IsRussian ?
                    "Сеанс связи с устройством {0}" :
                    "Session with the device {0}", Title);
            }
    

    Получается, что в режиме Slave это идёт от Session.

    в ответ на: Подробный журнал. Slave режим. #42147
    JurasskPark
    Участник

    Кто-то мешает делать вывод в лог через таймер?
    Или по условиям?

    Не понял про что речь.
    Коммуникатор спамит 10 сообщений в секунду, что происходит сеанс связи. Я эти сообщения по умолчанию отключить не могу.
    Могу только полностью отключить логирование и сам писать в файл, чтобы видеть только те сообщения, которые мне нужны.

    в ответ на: Подробный журнал. Slave режим. #42144
    JurasskPark
    Участник

    Но моя идея, что Сеанс связи можно писать только, когда в буфере есть данные или произошло подключение. А каждую секунду по 10 раз писать о том, что Сеанс связи происходит — это растет лог и усложняет его анализ.

    в ответ на: Попытка подружить. #42143
    JurasskPark
    Участник

    Через проект открываете папку Конфигурационные файлы (Config), нвходите так проект своего устройства DrvOpcClassic_#.xml и добавляете теги через блокнот.

    <Item active=»true» path=»Путь до тега» name=»Название тега» tagCode=»Путь до тега» dataType=»Тип тега» isArray=»false» />

    в ответ на: Подробный журнал. Slave режим. #42136
    JurasskPark
    Участник

    Провëл я эксперименты.

    Итог:
    1. Если Детальный лог отключен, то он не пишется в режиме сообщений Info, Action, Warning, Error не пишутся.
    2. Если в файл line#.log записываю данные без Log.Write, то они тоже отображаются.
    3. Количество Сеанс связи с устройством будет проходить если включен Детальное логирование. И получается, что я должен писать файл в line#.log самостоятельно, и выключив Детальное логирование, чтобы не видит Сеанс связи.

    в ответ на: Подробный журнал. Slave режим. #42131
    JurasskPark
    Участник

    Я решил написать драйвер DrvDebug.
    Потому что у мне также интересно стало режим Mixer.)

    в ответ на: Диспетчер IIS в Win11Pro #42130
    JurasskPark
    Участник

    IIS появиться, если вы через компоненты поставите Manager IIS.

    в ответ на: Попытка подружить. #42081
    JurasskPark
    Участник

    Так и не разобрался как добавить свой тег.

    Вспомните с чего всë началось?
    Вы не знали как добавить тег в OPCClassic и какие его создать.
    Вы через драйвер смогли подключиться к OWEN и посмотреть как теги после импорта сохраняются и как их можно создать?
    Я, надеюсь, вы в моих словах не прочитали «вот есть Owen OPC и он вам прибор Матикон прочитает»?
    Вы должны научиться создавать теги для драйвера руками, если приложение не может их создать.

    в ответ на: Попытка подружить. #42072
    JurasskPark
    Участник

    1. Для скриншотов лучше использовать https://imgbb.com/, а то на данном хостинге слишком много 18+.
    2. Установите любой бесплатный OPC-сервер, из адекватных OWEN OPC.
    3. Добавьте в клиент пару тегов и посмотртие структуру.
    4. На основе видимой структуры создайте один тег МЕТАКОНа и посмотрите будут ли идти по нему данные.

    http://jurasskpark.ru/pubimg/up/17716832770136ad8.png
    http://jurasskpark.ru/pubimg/up/1771683333e60aca6.png
    http://jurasskpark.ru/pubimg/up/1771683357330533d.png

Просмотр 15 сообщений - с 1 по 15 (из 1,122 всего)