Стартовая страница › Форумы › Разработка и интеграция › Методы драйверов v6
- В этой теме 34 ответа, 4 участника, последнее обновление 1 год, 11 месяцев назад сделано Mikhail.
-
АвторСообщения
-
28.03.2022 в 12:03 #22675manjey73Участник
Михаил, требуются пояснения по методам, использующимся в драйверах.\
Что удалено, что на замену и главное процесс работы.Например я передаю Серверу данные с перезагрузкой Сервера и Коммуникатора и у меня начинается опрос, потом идет все с ошибками связи.
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 отваливается?28.03.2022 в 12:04 #22676manjey73УчастникБлин, какой-то символ разрывает CODE
28.03.2022 в 13:41 #22677manjey73УчастникВопрос в правильности инициализации тегов, похоже что-то в коде надо было добавить, а я пропустил…
28.03.2022 в 14:57 #22678manjey73Участник| 20 | 28 | tg_f L3 | -0,610 | | +-------+-----+-----------------+------------+-------+ | 21 | 30 | Time | 44 648,626 | | +-------+-----+-----------------+------------+-------+ | 22 | 31 | Date | 44 648,000 | |
Вот как теперь сюда вывести нормальную дату и время в лог? и double в БД при этом
28.03.2022 в 16:56 #22679manjey73Участник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)
28.03.2022 в 17:09 #22682MikhailМодератор28.03.2022 в 17:11 #22684MikhailМодератор«Ошибка связи» означает, что условия остановки чтения не выполнены.
28.03.2022 в 17:14 #22685manjey73УчастникТо, что условия не выполнены это понятно, с этим еще надо разобраться будет.
Как раз на 5-й версии счетчик никогда так себя не вел и я не мог поймать ответ с кодом ошибки в виде одного байта.
Речь идет о том, что по каким-то причинам счетчик не хочет отдавать данные в цикле.Хотя на 5-й версии отдает без проблем.
28.03.2022 в 17:17 #22686manjey73УчастникТо есть в данном случае интересный эффект, если задать период 30 секунд и опрос будет каждые 30 секунд то все работает корректно.
Если поставить 20 секунд, то ошибка будет через один запрос.
Если поставить 10 секунд или в цикле, то будет только первый опрос корректным, если запустить руками с паузой от предыдущего опроса и потом всегда код 15 из счетчика вместо инициализации по адресу и запросу ввода пароля.28.03.2022 в 17:21 #22687manjey73УчастникДа, и опрос общего количество параметров на 6-й версии на пару секунд медленнее… Если сравнивать с 5-й версией.
29.03.2022 в 12:26 #22697MikhailМодераторРечь идет о том, что по каким-то причинам счетчик не хочет отдавать данные в цикле.
Нужно смотреть в отладчике и, может быть, в Wire Shark. Каких-то специальных изменений, связанных с опросом в цикле, не проводилось.
29.03.2022 в 12:30 #22699manjey73УчастникНастроил на Moxa виртуальный COM порт, ситуация та же. Работает где-то от 28 секунд опроса. Такое ощущение, что счетчик не закрывает сессию по команде
Отправка (5): <01>B0<03><01>хотя с чего бы???? при этом в 5-й версии хоть в цикле читай, все команды те же…
29.03.2022 в 12:32 #22700manjey73УчастникОчень интересно, запустил монитор, после команды завершения счетчик присылает в ответ байт = 15.
Проверю на 5-й, есть ли такой приход там…
- Этот ответ был изменен 2 года назад от manjey73.
29.03.2022 в 14:07 #22706manjey73УчастникНашел причину такого поведения, вопрос выше в самом начале в силе..
При запуске опроса какие методы и в какой последовательности исполняются в Версии 6
OnAddedToCommLine() — теперь нет, так понимаю вместо него InitDeviceTags() или с оговорками ?
В общем требуется точное понимание в какой последовательности вызываются методы при запуске линии…
29.03.2022 в 14:15 #22707manjey73УчастникНу и как раз в свете 5-й версии отличия запуска методов при старте линии связи ?
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.