А если вручную подать запрос? Как правильно написать. Потому что, что я написал у меня err255 в блоке чтения 02 функцией.
Вид для печати
Сниффером просмотрел что отправляет сервер мастер скады и ПЛК
Мастер скада
01 02 00 1d 00 01 29 cc
ПЛК
01 02 00 1d 00 08 e9 ca
в принципе понятно там 1 бит, а тут 8 бит.
Но Плк в конфигураторе не может конкретно с одного бита считать.
Сдвиньте в ПЛК запрос по адресу раньше, чтобы до конца таблицы было 8 бит, ошибка уйдет ?
например с адреса 0x18
Я так делал. 24 адрес у восьми битного запроса.
Делал с 0адр 8бит 8 адр 8бит 16 адр 8бит 24 адр. То есть запрос на 4 байта. Так тоже не работает.
Делал с 8бит State, с запросами вручную, тоже не считывает.
Делал 32 битный input с нулевого адреса, тоже не считывает.
Может во временных запросах проблема.
Может устройство не отдает группой. Если в MS есть вариант настроить Discret Input скажем те же 8 бит, чтобы повторить запрос как с ПЛК то попробуйте настроить. Если получите ошибку, ну значит отключайте Конфигурацию и пробуйте библиотеки.
Отправка работает. Ставлю в конфигураторе 1 Registr output c адресом 0 и при этом уже ошибка связи 81. Хотя отправка работает. Странно. Это при настройках 9600/NoP/8/2 и 9600/NoP/8/1 - ошибка 81, но отпрвка работает. Проверял подключать к плк модуль ОВЕН , ошибки 81 нет (может аппаратная ошибка думал)
Лучший способ выяснить правду, как и что надо считывать, программа Owen OPC Server, ставиться за 2 мин. на комп. Любой бит и регистр можно настроить и проверить. Чтение и запись, любая функция, RS485 через переходник типа АС-4, есть и TCP https://owen.ru/product/new_opc_server Вложение 63063
Можете проверить программу? Копирую сразу как есть.
Переменные:Скрытый текст:
Программа:
Скрытый текст:
В программе работает только блок RiR со строки 87
Начальный адрес задаю 29, количество 1.
Тайм аут менял с 5мс до 2000 мс. Но выдает ошибку тайм аута RiR.Exception= 255
Под словом проект подразумевают проект а не выжимки.
Для битов ставьте стартовый адрес кратный 8-ми. Спасибо - овену. Но всегда есть syslibcom
Но это у Овена работает.
Вложение 63065
Работает ли у того девайса ?
Пьер, неужели трудно запомнить, выкладывайте проект, а не куски.
Блок есть только у вас и разбираться вам надо, мы только подсказывать можем. Программой Owen OPC Server подключитесь к блоку и проверьте как считываются биты.
Когда вы точно узнаете как правильно читать (записывать), по одному биту или байтом по 8 бит или регистром по 16 бит, выкладывайте сюда и только после этого можно программу писать. Частота опроса и тайм аут должны быть 500 ms.
Добавляйте по одному параметру (тегу), сначала бит чтение, потом бит запись и т.д., если GOOD, значит читаете правильно.
Вот пример опроса ПЛК по ТСР Вложение 63072
Пьер - вам уже сказали, проверьте другой программой опрос группой нескольких битов, если в Мастер Скада нет такой возможности. Вплоть до ручной посылки при помощи Com port ToolKit например. Как выглядит посылка группой прекрасно вам показал снифер при отправке со стороны ПЛК. Посчитать CRC онлайн калькулятор с Modbus поможет.
Что вы ходите вокруг да около вместо банальной проверки. Может ваше устройство не умеет отдавать данные группой и только зря мучаете Конфигурацию ПЛК
Вам все и не нужны, вам нужны из 32 бит только 12 шт. (0,1,9,14,16,17 и т.д.) Потом дадите им имена и работать будете только с ними.
Но сначала надо точно выяснить как писать читать биты.
Провёл эксперимент с 0 битом, отдельно чтение, отдельно запись, отдельно чтение и запись. При запуске сервера отдельная запись выдаёт ошибку, пока не запишешь любое состояние. Вложение 63073
После записи любого состояния отдельная запись показывает GOOD Вложение 63074
Выявил то, что из списка с 0 по 31 бит. Первые 2 байта с 0 по 15 работают только по функции 01 coil и чтение 05, их можно выставлять все вместе теги (это биты 00 01 09 ). Они НЕ работают по функции 02.
А остальные 2 байта с 24 по 31 байта работают только по фунции 02 (это биты по адресам 0x19 0x1a 0x1d). Если их настроить на 01 coil, тогда ошибка. Регистры с 0 по 03 работают на чтение/запись 03/06.
При чем включение устройсва регистрами с 0 по 01 соответствует битам с 00 по 01.
Это всё хорошо, а где проверка в программе через конфигурацию, со всеми полученными данными?
Опять лишние телодвижения, стоп бит у вас 2, не надо их менять.
А вот в сервере, есть возможность читать биты и регистры по одному или группой.
Вот это вы и не проверили.
Не надо выкладывать не работающие скрины, только где Good.
Не надо добавлять много бит, проверяйте нужные 0,1,9 ....29,30,31
Сколько раз еще надо повторить, чтобы вы проверили ДРУГИМИ средствами чтение ?
запись происходит единичного бита, чтение у вас всегда группы битов. Сделайте выводы...
Где проект? Где исследования по серверу? вы по 5 кругу уже пошли.
Настройки группового опроса, читать каждый тег отдельно и использовать команду запись единичного регистра, ставите Да.
Вложение 63105
Тоже удивляет такое упрямство, продолжать долбить ПЛК в попытках достучаться до устройства, которое возможно на данную команду никогда не ответит группой.
А теперь поставьте Нет, Нет, и проверьте ещё раз. Это и будет групповой опрос.
Вам же все написали, только без подсказки вы сами думать не хотите. Функцию записи попробуйте 0х0f, это запись битов группой.
Когда все проверите, составьте таблицу, какой бит читаете, пишете и какой с функцией работает, опрос единичный или групповой.
По Owen OPC
Биты с 0 по 15 coil 01\05 да да и нет нет все работает
Биты с 16 по 31 ф-я 02 да да и нет нет все работает
Биты с 0 по 15 coil 01\0F да да и нет нет (Не работает 0F)
Holding Registr (с 00 по 03) 03\06 да да нет нет (работает)
Holding Registr (с 00 по 03) 03\0F да да нет нет (НЕ работает)
Holding Registr (с 00 по 03) 03\10 да да нет нет (НЕ работает)
----------------------------------------------------------------
Короче, вот так.
В cds все перепробовал, все функции. Биты и регистры. Всегда ошибка 81 , ничего не считывает. Спасибо.
А если так сделать, если Holding Registr (с 00 по 03) 03\06 да да нет нет (работает)
Создайте новый проект. Добавьте 4 на чтение Register Input и 4 на запись Register Output в проект ( с 0 по 3 адреса), проверьте будет ли ошибка и скрин выложите. Проверьте запись и чтение, меняя числа.
И ещё, у Register Input есть возможность вместо чтения ф-ей 03, читать ф-ями 01 и 02. Попробуйте читать этими функциями адреса 0 и 1.Вложение 63160Проверьте запись и чтение, меняя числа. И на ошибку.
И не забывайте выкладывать проект. Может вы ошибки делаете, а мы тут голову ломаем. Проект выкладывать в расширенном режиме.