Методы драйверов v6

Просмотр 15 сообщений - с 1 по 15 (из 35 всего)
  • Автор
    Сообщения
  • #22675
    manjey73
    Участник

    Михаил, требуются пояснения по методам, использующимся в драйверах.\
    Что удалено, что на замену и главное процесс работы.

    Например я передаю Серверу данные с перезагрузкой Сервера и Коммуникатора и у меня начинается опрос, потом идет все с ошибками связи.

    2022-03-28 11:49:27 Сеанс связи с устройством [2] CE301_serv
    Отправка (14): /?163127043!<0D><0A>
    /EKT5CE301v11
    
    OK
    Отправка (6): <06>051<0D><0A>
    P0(163127043)!
    OK
    Отправка (14): <01>P1<02>(777777)<03>!
    
    OK
    Отправка (13): <01>R1<02>VOLTA()<03>_
    VOLTA(230.146)
    (239.414)
    (252.518)
    i
    OK
    2022-03-28 11:49:28 Ошибка при вызове метода Session устройства [2] CE301_serv:
    System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
       at System.Collections.Generic.List

    1.get_Item(Int32 index)
    at Scada.Comm.Devices.DeviceTags.get_Item(Int32 index)
    at Scada.Comm.Devices.DeviceData.SetCnlData(Int32 tagIndex, Int32 offset, CnlData value)
    at Scada.Comm.Devices.DeviceData.set_Item(Int32 tagIndex, CnlData value)
    at Scada.Comm.Devices.DeviceData.Set(Int32 tagIndex, Double val, Int32 stat)
    at Scada.Comm.Drivers.DrvIEC61107.Logic.DevIEC61107Logic.DecodeSeveral(Int32 firstTag, Int32 tagCount, Int32 signalStep, Int32 skipCount)
    at Scada.Comm.Drivers.DrvIEC61107.Logic.DevIEC61107Logic.Session()
    at Scada.Comm.Engine.DeviceWrapper.Session()

    2022-03-28 11:49:28 Отключение от ::ffff:192.168.70.1

    2022-03-28 11:49:30 Соединение с 192.168.70.1:4000

    2022-03-28 11:49:30 Сеанс связи с устройством [2] CE301_serv
    Отправка (14): /?163127043!<0D><0A>

    Ошибка связи
    Отправка (14): /?163127043!<0D><0A>

    `
    Почему при передачи Серверу начинается опрос, а потом при следующей итерации Session отваливается?

    #22676
    manjey73
    Участник

    Блин, какой-то символ разрывает CODE

    #22677
    manjey73
    Участник

    Вопрос в правильности инициализации тегов, похоже что-то в коде надо было добавить, а я пропустил…

    #22678
    manjey73
    Участник
    | 20    | 28  | tg_f L3         |     -0,610 |       |
    +-------+-----+-----------------+------------+-------+
    | 21    | 30  | Time            | 44 648,626 |       |
    +-------+-----+-----------------+------------+-------+
    | 22    | 31  | Date            | 44 648,000 |       |

    Вот как теперь сюда вывести нормальную дату и время в лог? и double в БД при этом

    #22679
    manjey73
    Участник
    2022-03-28 16:50:54 Сеанс связи с устройством [2] CE301_serv
    Отправка (14): /?163127043!<0D><0A>
    Приём (15): /EKT5CE301v11<0D><0A>
    OK
    Отправка (6): <06>051<0D><0A>
    Приём (17): <01>P0<02>(163127043)<03>!
    OK
    Отправка (14): <01>P1<02>(777777)<03>!
    Приём (1): <06>
    OK
    Отправка (13): <01>R1<02>VOLTA()<03>_
    Приём (41): <02>VOLTA(237.242)<0D><0A>(240.262)<0D><0A>(254.229)<0D><0A><03>g
    OK
    Отправка (13): <01>R1<02>CURRE()<03>Z
    Приём (41): <02>CURRE(29.8198)<0D><0A>(24.9082)<0D><0A>(25.0089)<0D><0A><03>|
    OK
    Отправка (13): <01>R1<02>POWPP()<03>o
    Приём (38): <02>POWPP(5.9151)<0D><0A>(5.2012)<0D><0A>(5.0885)<0D><0A><03>d
    OK
    Отправка (13): <01>R1<02>COS_f()<03><03>
    Приём (40): <02>COS_f(0.98)<0D><0A>(0.96)<0D><0A>(0.99)<0D><0A>(0.98)<0D><0A><03><08>
    OK
    Отправка (13): <01>R1<02>FREQU()<03>\
    Приём (17): <02>FREQU(49.99)<0D><0A><03>{
    OK
    Отправка (13): <01>R1<02>ET0PE()<03>7
    Приём (70): <02>ET0PE(27831.3259286)<0D><0A>(27831.3259286)<0D><0A>(0.0)<0D><0A>(0.0)<0D><0A>(0.0)<0D><0A>(0.0)<0D><0A><03>U
    OK
    Отправка (13): <01>R1<02>TAN_f()<03><01>
    Приём (39): <02>TAN_f(0.2)<0D><0A>(0.28)<0D><0A>(0.13)<0D><0A>(0.18)<0D><0A><03>,
    OK
    Отправка (13): <01>R1<02>TIME_()<03>g
    Приём (20): <02>TIME_(16:58:13)<0D><0A><03>%
    OK
    Отправка (13): <01>R1<02>DATE_()<03>V
    Приём (23): <02>DATE_(01.28.03.22)<0D><0A><03><04>
    OK
    Отправка (5): <01>B0<03><01>
    Получено за 7247 мс
    
    2022-03-28 16:51:01 Отключение от ::ffff:192.168.70.1
    
    2022-03-28 16:51:01 Соединение с 192.168.70.1:4000
    
    2022-03-28 16:51:01 Сеанс связи с устройством [2] CE301_serv
    Отправка (14): /?163127043!<0D><0A>
    Приём (1): <15>
    Ошибка связи
    Отправка (14): /?163127043!<0D><0A>
    Приём (1): <15>
    Ошибка связи
    Отправка (5): <01>B0<03><01>
    Получено за 4278 мс
    
    2022-03-28 16:51:06 Отключение от ::ffff:192.168.70.1
    

    Каковы отличия между версией 5 и версией 6, что последняя не может выполнять опрос в цикле ?
    На 5-й версии тот же код работает в цикле и всегда опрашивает счетчик.
    На 6-й версии после остановки первая сессия нормально, потом прилетает всегда код «15» из счетчика.
    «Недопустимое чтение означает, что не введен пароль или нет параметра в списке для чтения при парольном чтении пользователем. Необходимо ввести пароль или, при необходимости, ввести параметр в список пользователя, или отменить парольное чтение»

    При этом период выставить 30 секунд, то подобная ошибка может выскочить, если запуск линии произошел достаточно близко ко времени основного опроса…

    Еще раз, тот же код в 5-й версии читает в цикле без проблем (Период 00:00:00)

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

    Вывод даты и времени:
    DeviceTag deviceTag = tagGroup.AddTag(«код», «имя»);
    deviceTag.Format = TagFormat.DateTime;

    или только дата
    deviceTag.Format = new TagFormat(TagFormatType.Date, «d»);

    Ссылка на форматы даты и времени.

    • Этот ответ был изменен 2 года назад от Mikhail.
    #22684
    Mikhail
    Модератор

    «Ошибка связи» означает, что условия остановки чтения не выполнены.

    #22685
    manjey73
    Участник

    То, что условия не выполнены это понятно, с этим еще надо разобраться будет.
    Как раз на 5-й версии счетчик никогда так себя не вел и я не мог поймать ответ с кодом ошибки в виде одного байта.
    Речь идет о том, что по каким-то причинам счетчик не хочет отдавать данные в цикле.

    Хотя на 5-й версии отдает без проблем.

    #22686
    manjey73
    Участник

    То есть в данном случае интересный эффект, если задать период 30 секунд и опрос будет каждые 30 секунд то все работает корректно.
    Если поставить 20 секунд, то ошибка будет через один запрос.
    Если поставить 10 секунд или в цикле, то будет только первый опрос корректным, если запустить руками с паузой от предыдущего опроса и потом всегда код 15 из счетчика вместо инициализации по адресу и запросу ввода пароля.

    #22687
    manjey73
    Участник

    Да, и опрос общего количество параметров на 6-й версии на пару секунд медленнее… Если сравнивать с 5-й версией.

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

    Речь идет о том, что по каким-то причинам счетчик не хочет отдавать данные в цикле.

    Нужно смотреть в отладчике и, может быть, в Wire Shark. Каких-то специальных изменений, связанных с опросом в цикле, не проводилось.

    #22699
    manjey73
    Участник

    Настроил на Moxa виртуальный COM порт, ситуация та же. Работает где-то от 28 секунд опроса. Такое ощущение, что счетчик не закрывает сессию по команде
    Отправка (5): <01>B0<03><01>

    хотя с чего бы???? при этом в 5-й версии хоть в цикле читай, все команды те же…

    #22700
    manjey73
    Участник

    Очень интересно, запустил монитор, после команды завершения счетчик присылает в ответ байт = 15.

    Проверю на 5-й, есть ли такой приход там…

    • Этот ответ был изменен 2 года назад от manjey73.
    #22706
    manjey73
    Участник

    Нашел причину такого поведения, вопрос выше в самом начале в силе..

    При запуске опроса какие методы и в какой последовательности исполняются в Версии 6

    OnAddedToCommLine() — теперь нет, так понимаю вместо него InitDeviceTags() или с оговорками ?

    В общем требуется точное понимание в какой последовательности вызываются методы при запуске линии…

    #22707
    manjey73
    Участник

    Ну и как раз в свете 5-й версии отличия запуска методов при старте линии связи ?

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