Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 30 из 30

Тема: Owen(master)+Write Comm

  1. #21

    По умолчанию

    Цитата Сообщение от !nferno Посмотреть сообщение
    А нет ли такой же прекрасной библиотеки для МОДБАС? А то в этой же сети висит ОВЕН СП270.
    есть.

    ModBus.zip

  2. #22

    По умолчанию

    Данные библиотеки сейчас тестируются, и нам крайне важно Ваше мнение.

  3. #23

    По умолчанию

    А много ль корова дает молока?
    Почему бы Вам не выкладывать библиотеки на видном месте? Угадайте, сколько людей сейчас кропают собственные библиотеки для modBus, и скольким из них придет в голову поискать фирменную бету в ветке под заголовком "Owen(master)+Write Comm"? Почему бы и другие будящие фантазию инструкции по рукоблудству - типа веб-сервера и обнаженки ПЛК с неприличным резистором не начать выкладывать на виду на сервере, а не в дебрях форума?
    ФТП у вас позабыт-позаброшен... Лежат прошивка и таргет 2.03, Кодесис 2.3.8.1.

    ФБ библиотеки ModBus.lib считают CRC пакетов? Если да, - опубликуйте алгоритм. Используется CRC-16-IBM с числом 0xA001? Какие проверки корректности принятой квитанции используются?
    Если нет - то как прикрутить CRC к посылке и как проверить сумму при приеме?
    Что означает значение выходной переменной Exception == 0xFE - "аппаратная ошибка ПЛК"?
    Что возвращается в буфере после вызова функций записи? Объедки отправленного пакета или уже принятая квитанция? Что вообще содержит буфер после вызова ФБ - принятую квитанцию или отправленный пакет?
    Последний раз редактировалось superMAX; 20.04.2009 в 18:02.

  4. #24

    По умолчанию

    Цитата Сообщение от superMAX Посмотреть сообщение
    А много ль корова дает молока?
    Почему бы Вам не выкладывать библиотеки на видном месте? Угадайте, сколько людей сейчас кропают собственные библиотеки для modBus, и скольким из них придет в голову поискать фирменную бету в ветке под заголовком "Owen(master)+Write Comm"? Почему бы и другие будящие фантазию инструкции по рукоблудству - типа веб-сервера и обнаженки ПЛК с неприличным резистором не начать выкладывать на виду на сервере, а не в дебрях форума?
    ФТП у вас позабыт-позаброшен... Лежат прошивка и таргет 2.03, Кодесис 2.3.8.1.

    ФБ библиотеки ModBus.lib считают CRC пакетов? Если да, - опубликуйте алгоритм. Используется CRC-16-IBM с числом 0xA001? Какие проверки корректности принятой квитанции используются?
    Если нет - то как прикрутить CRC к посылке и как проверить сумму при приеме?
    Что означает значение выходной переменной Exception == 0xFE - "аппаратная ошибка ПЛК"?
    Что возвращается в буфере после вызова функций записи? Объедки отправленного пакета или уже принятая квитанция? Что вообще содержит буфер после вызова ФБ - принятую квитанцию или отправленный пакет?
    Идею более активного освещение новинок и проблем целиком поддерживаю.

    CRC - стандартным для ModBus методами (для ASCII и RTU). Полином не помню, но все приборы общаются...
    Проверки - как в стандарте описано.
    Про exсeption подробнее - когда возникает.
    Функция записи возвращает код завершения, а в буфер ничего интересного не лежит.

    P.S. Библиотеки в процессе тестирования, поэтому, естественно, нужна Ваша помощь и содействие в их отладке.

  5. #25

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Полином не помню, но все приборы общаются...
    Проверки - как в стандарте описано.
    Про exсeption подробнее - когда возникает.
    Функция записи возвращает код завершения, а в буфер ничего интересного не лежит.
    Exception пока не возникает, вопрос скорее к вам - в каких случаях возвращается этот флаг? Оборудование находится в соседнем городе, и нет никакого желания программировать в цехе... Посему и спрашиваю, собсно.
    Все приборы - имеются в виду приборы Овен? Сети, в которых возникает необходимость использования таких библиотек, скорее всего гетерогенные...

    Описание стандарта, как ни парадоксально, вещь растяжимая. Удалось нарыть некий http://www.idom.ru/files/Schneider/I...Modbus_Rus.Doc (да простят меня за ссылку на оффтопичную фирму, но в сети упоминают именно этот файл как описание стандарта), гласящий:
    "Если подчиненный принял запрос без коммуникационной ошибки, но не может выполнить затребованную функцию(например, чтение несуществующих выходов или регистров), подчиненный возвращает сообщение об ошибке и ее причинах.
    Сообщение об ошибке имеет два поля, которые отличаются от полей нормального ответа:
    ПОЛЕ КОДА ФУНКЦИИ: В нормальном ответе, подчиненный повторяет код функции содержащийся в поле кода функции запроса. Во всех кодах функций старший значащий бит установлен в 0. При возврате сообщения об ошибке подчиненный устанавливает этот бит в 1.
    При установленному старшему биту в коде функции главный распознает сообщение об ошибке, и может проанализировать поле данных сообщения.
    ПОЛЕ ДАННЫХ: В нормальном ответе, подчиненный может может возвращать данные или статистику в поле данных(любую информацию которая затребована в запросе). В сообщении об ошибке, подчиненный возвращает код ошибки в поле данных"...
    "01 ILLEGAL FUNCTION Принятый код функции не может быть обработан на подчиненном.
    02 ILLEGAL DATA ADDRESS Адрес данных указанный в запросе не доступен данному подчиненному.
    03 ILLEGAL DATA VALUE Величина содержащаяся в поле данных запроса является не допустимой величиной для подчиненного.
    04 SLAVE DEVICE FAILURE Невосстанавливаемая ошибка имела место пока подчиненный пытался выполнить затребованное действие.
    05 ACKNOWLEDGE Подчиненный принял запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет главного от генерации ошибки таймаута. Главный может выдать команду Poll Program Complete для обнаружения завершения обработки команды.
    06 SLAVE DEVICE BUSY Подчиненный занят обработкой команды. Главный должен повторить сообщение позже, когда подчиненный освободится.
    07 NEGATIVE ACKNOWLEDGE Подчиненный не может выполнить программную функцию, принятую в запросе. Этот код возвращается для неудачного программного запроса, использующего функции с номерами 13 или 14. Главный должен запросить диагностическую информацию или информацию обошибках с подчиненного.
    08 MEMORY PARITY ERROR Подчиненный пытается читать расширенную память, но обнаружил ошибку паритета. Главный может повторить запрос, но обычно в таких случаях требуется ремонт".

    Delta поддерживает коды исключений 01...04 и вводит собственный, № 10 (тактично не указав систему счисления). Как мне получить этот ответ от подчиненного, собственно?
    Delta прямо регламентирует полином A001h. Schneider в своем фундаментальном описании демонстрирует ловкость завзятых карманников, дважды говоря "Если младший бит равен 1, то производится исключающее ИЛИ содержимого регистра контрольной суммы и определенного числа", и только на третий раз выдает страшную тайну этого числа = A001h. Какое именно число в библиотеке? Может, лучше на всякий случай сделать его параметром ФБ или глобальной переменной?
    И я так и не понял насчет "всех проверок" - ФБ modbus.lib после отправки пакета читает и анализирует ответ ведомого, или нет?

    P. S. А вот тут http://www.radiokot.ru/forum/viewtop...45b3da5338923e один гражданин мяукнул про быстрый алгоритм с раскрученным циклом: http://www.radiokot.ru/forum/download.php?id=7019 Для ПЛК выглядит вельми привлекательно... Если, конечно, там зашита именно константа A001h.
    Последний раз редактировалось superMAX; 23.04.2009 в 10:08.

  6. #26

    По умолчанию

    http://modbus.org/ - наше всё.
    Насчёт кода ошибки - выясним у программиста, писавшего библиотеку.
    Тестировали на разных приборах. Что Вы так боитесь полинома? Были прецеденты? Плк наш с разными приборами работает? И с библиотекой аналогично работает. Так что.
    Да и коды в библиотеке открытые - так что можете изучить от и до.

  7. #27

    По умолчанию

    Хих... Опередили...
    P. S. А вот тут http://www.radiokot.ru/forum/viewtop...45b3da5338923e один гражданин мяукнул про быстрый алгоритм с раскрученным циклом: http://www.radiokot.ru/forum/download.php?id=7019 Для ПЛК выглядит вельми привлекательно... Если, конечно, там зашита именно константа A001h.
    Сейчас посмотрел внимательней, действительно, судя по строке "Exception: BYTE; (*исключения протокола MODBUS или 0хFF - таймаут*)" бибка слушает квитанцию. В не очень внятном виде это упомянуто и в доке: "Exception: BYTE – исключение протокола MODBUS или ошибка"... Так что этот момент ясен.
    А у меня почему-то буковки (X) после POU библиотеки показывает... Открыл по ^O, - фигушки: "Данный объект не может быть открыт, поскольку у вас нет доступа к нему"... Как коды глянуть?
    Последний раз редактировалось superMAX; 23.04.2009 в 10:45.

  8. #28

    По умолчанию

    О, запаролили. Sorry

  9. #29

    По умолчанию

    Да... Ниче... Это я сорри... F3 разъясняет все, оказывается. Просто невероятно, но постоянно с такой наивностью разработчиков самого разного ПО сталкиваюсь. Все - и исходники, и злополучная константа хранятся в .lib в текстовом виде... И пароль, судя по всему, просто поксорен.
    Константа A001h, алгоритм классический. Хотя я бы предпочел с раскрученным циклом - памяти в ПЛК много, а время цикла - величина критическая.
    Но документацию, все же, надо более внятную. И - мечта - не описательную, не в чукотском стиле... Зачем вот описание одинаковых переменных каждого ФБ повторять? И зачем начинать с рассказа о том, как добавить библиотеку в проект? Это есть в доках CoDeSys.

    В общем, 0xFE возвращается в следующей ситуации (нюансы опущены):
    var EXC_HW: BYTE := 16#FE; (* HARDWARE ERROR *)
    Read := SysComWrite(ComHandle, ADR(DataBuf), DataSize, 0) = DataSize;
    IF Read = FALSE THEN (* передача кадра не состоялась*)
    Exception := EXC_HW; (* аппаратная ошибка *)
    Что, судя по описанию SysComWrite, возможно только в случае, если порт был неожиданно закрыт. Такая вот "аппаратная ошибка ПЛК".
    Последний раз редактировалось superMAX; 24.04.2009 в 05:37.

  10. #30

    По умолчанию

    Вы опытный человек, а есть новички, купил ПЛК и сразу Буран автоматизировать. Вот для них и пишется инструкция.

    0xFE - не обязательно, например переполнился буфер из-за того, что слишком много записали.

Страница 3 из 3 ПерваяПервая 123

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •