Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Бит окончания передачи по Modbus RTU

  1. #1
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    Question Бит окончания передачи по Modbus RTU

    Хотелось бы реализовать следующую функцию:
    Текущие значения (например температуры) записываются в файл на ПЛК каждые 10 секунд. Каждые 24 часа начинается новый архив, а старый передается по Modbus и удаляется.

    Вопрос в следующем:

    1. Можно ли как нибудь определить момент, окончания отправки, чтобы сформировать следующую посылку? Кроме как по времени...

    2. Где-то на форуме читал что ограничение по количеству полезной информации в одной посылке 128 байт, так ли это?

    3. Может быть лучше формировать не файл, а массив, с чем удобней будет работать?

    Заранее благодарен.

  2. #2
    Ельцов Андрей
    Гость

    По умолчанию

    Цитата Сообщение от Солнечный заяц Посмотреть сообщение
    Хотелось бы реализовать следующую функцию:
    Текущие значения (например температуры) записываются в файл на ПЛК каждые 10 секунд. Каждые 24 часа начинается новый архив, а старый передается по Modbus и удаляется.

    Вопрос в следующем:

    1. Можно ли как нибудь определить момент, окончания отправки, чтобы сформировать следующую посылку? Кроме как по времени...

    2. Где-то на форуме читал что ограничение по количеству полезной информации в одной посылке 128 байт, так ли это?

    3. Может быть лучше формировать не файл, а массив, с чем удобней будет работать?

    Заранее благодарен.
    Здравствуйте.
    Как Вы собираетесь передавать архив по modbus?
    Если Вы планируете использовать встроенную в ПЛК функцию, то тогда файл автоматически удаляется если произошел запрос последней записи ffff.
    Не понятно зачем Вам определять конец посылки...
    Полезной информации больше чем 128. максимальный размер пакета данных 255 байт. Из них 5 +/- сервисных.
    С массивом такое количество данных передавать не корректно. Лучше файл.

  3. #3
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Цитата Сообщение от Ельцов Андрей Посмотреть сообщение
    Как Вы собираетесь передавать архив по modbus?
    Если Вы планируете использовать встроенную в ПЛК функцию, то тогда файл автоматически удаляется если произошел запрос последней записи ffff.
    Не понятно зачем Вам определять конец посылки...
    Планировалось использовать модуль "Архиватор" для получения архива, и библиотеку SysLibFile для чтения архива.

    Русскоязычного описания для SysLibFile найти не удалось, поэтому пользовался английской версией, там ничего про удаление файла после чтения последнего байта не увидел... Или у Архиватора есть функция передачи файла?

    Передачи планировал производить например по 248 байт (62 float переменые) за одну посылку. Например на GSM/GPRS модем. Но отправка займет какое то время. (И время может быть разным, в случае ошибки в Modbus канале).

    Вопрос в том как определить, когда формировать и записывать в регистр вывода следующий кадр с данными.
    Что будет если в регистр вывода записать новый массив с данными до окончания отправки предыдущего?

  4. #4

    По умолчанию

    По-моему вы занимаетесь дублированием стандартной функции чтения архивов по Modbus используя функцию 20 протокола. Единственный плюс - экономия трафика.

  5. #5
    Ельцов Андрей
    Гость

    По умолчанию

    Немного теории.
    У нас в ПЛК поддержана функция чтения архивов по 20-й функции modbus.
    Причем есть даже программа, которая умеет читать эти архивы и преобразовывать в приемлемый вид (Lectus OPC).
    Вытащить из программы архивы можно с помощью ОРС HDA клиента или из внутренней базы данных SQL-запросом.

  6. #6

    По умолчанию

    программа для чтения файлов из плк через 20-ю функцию. если кому нужны исходники - могу выслать.
    файл сохраняется на диске.
    Вложения Вложения
    • Тип файла: zip exe.zip (29.5 Кб, Просмотров: 50)

  7. #7
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Значит получается ограничение файла для передачи 10 000 регистров = 20 000 байт, верно?
    Возможно ли реализовать запрос по 20-ой функции через Конфигуратор ПЛК или только через библиотеку SysLibCom?
    Возможно ли совместное использование SysLibCom и Конфигуратор ПЛК по одному порту? Не будет конфликтов?
    Последний раз редактировалось Солнечный заяц; 01.06.2010 в 15:05.

  8. #8
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Точнее не 20-ю функцию а 21-ю (Write File Record)! Т.к. хотелось бы чтобы инициатором связи был именно ПЛК. 21-я функция поддерживается? Если да, то как ее реализовать?

  9. #9
    Ельцов Андрей
    Гость

    По умолчанию

    21-я функция не поддерживается.
    Что касается количества записей 10000, то в настройках модуля file (modbus slave) есть параметр отвечающий за количество байт в одной записи.

  10. #10
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Цитата Сообщение от Ельцов Андрей Посмотреть сообщение
    Что касается количества записей 10000, то в настройках модуля file (modbus slave) есть параметр отвечающий за количество байт в одной записи.
    Параметр "Amount byte"? Но там максимум 16 байт Не понятно зачем нужен такой файл... Или я что-то не так понимаю...
    Ведь модуль Архиватотр позволяет делать намного большие файлы.
    Цитата Сообщение от Ельцов Андрей Посмотреть сообщение
    21-я функция не поддерживается.
    Как тогда мне лучше передавать файл, при условии что ПЛК Мастер? Делать безопасные промежутки времени между посылками?

    Цитата Сообщение от Из документации к SysLibCom
    Функция SysComWrite (тип DWORD) передает блок байтов, указанной длины в циклический буфер передатчика требуемого порта, требуемый порт в случае успеха возвращает кол-во байтов, помещенных в циклический буфер передатчика.
    Какого размера циклический буфер передатчика? Есть ли опасность его переполнения?

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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