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

Тема: Обмен информацией. Приём данных формата ASCII.

  1. #1

    Question Обмен информацией. Приём данных формата ASCII.

    Доброго времени суток, коллеги!
    Опыта не так много, как хотелось бы, так что если задача простая - не кидайтесь томатами :)
    Первый раз работаю с ASCII в целом, поэтому никак не могу его настроить под свою задачу.

    Работаю вот с чем:
    1)У меня есть программа Machine Vision Platform для камеры Irayple x86. Общаться с её программой можно по ASCII.
    Реализовать обмен нужно именно по Ethernet-порту (rs232, rs 485 камера не поддерживает). Modbus TCP/IP также нет.
    2)Мой контроллер - СПК107. Его единственный порт Ethernet уже задействован под Modbus TCP/IP Master (связь с роботом и блоками дискретного ввода/вывода)

    Что имею сейчас:
    Успешно открываю сокет внутри программы для камеры (параметры указаны на 3 фото), затем успешно подключаюсь с использованием Hercules (конфигурация клиента и успешный обмен показаны на фото 1,2).

    При попытке сделать тоже самое через CoDeSys получается, что используя формат подключения, показанный на фото (4,5,6,7,8,9), удаётся подключиться к камере (также и к Hercules), но не передать данные. Для попытки передачи данных использую STRING, фото 10 (находил в руководствах, что именно он имеет кодировку ASCII). Результат который выдаёт при обмене на фото 11 (т.е. подключение к порту есть, а результата нет).

    Очень нужна помощь. Возможно делаю не так вообще всё, но без вас не справлюсь :(

    P.S. я пытался найти информацию. Видел, что везде указывается обмен по ASCII через COM порты (подразумевается именно RS485, RS232, да?). Но мне нужно связаться именно как Hercules - камера (либо как-то ещё, но не по RS, а по Ethernet).
    Изображения Изображения

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    снифер на порт и смотреть разницу обмена между геркулесом и между спк. может запрсто посылать завершающие символы или перевода строки...
    наверное это первое, что надо посмотреть.

    а че, камера понимает modbus ?
    Последний раз редактировалось melky; 01.11.2025 в 20:06.

  3. #3

    По умолчанию

    Спасибо за ответ, но я не совсем понял касательно "снифер на порт" - я не подключаюсь через порты (или оно и не надо?). Всё крутится на ноутбуке. CoDeSys тоже на нём запускаю (не через эмуляцию, а именно запуск виртуального контроллера).

    "камера понимает modbus ?" - Камера Modbus не понимает (хоть в документах и заявлено).
    Я просто даже близко не понимаю как настроить СПК под эту задачу - о том и вопрос. (т.е. фактически СПК должен воспринимать и отправлять информацию также, как и hercules)

    P.s. Снифферами не пользовался, но почитаю и попробую проверить.

  4. #4

    По умолчанию

    НЕТ! Ты не так делаешь всё, если я по скринам понял!
    То, что ты добавил порт через конфигурацию и привязал туда STRING - это НЕ ТО!
    Это означает совсем другое: что ПЛК через протокол Modbus TCP будет пытаться передавать байты!
    НЕ строку, а прям протокол!

    Тебе надо смотреть в другую сторону.
    На форуме была тема (ща напишу - и потом поищу ссылку) про НЕСТАНДАРТНЫЕ протоколы для CodeSys
    Вот тебе нужна именно она.

    И там надо будет писать всё самому:
    * Открыть сокет
    * Установить соединение
    * Послать БАЙТЫ
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  5. #5

    По умолчанию

    Вот! Нужно копать в сторону этой темы и библиотеки: https://owen.ru/forum/showthread.php?t=31816
    Вот что тебе надо оттуда:
    функциональные блоки для реализации нестандартных протоколов (UNM_SerialRequest, UNM_TcpRequest, UNM_UdpRequest)
    И вот из документации на неё:
    Функциональный блок UNM_TcpRequest используется для реализации нестандартного протокола поверх протокола TCP. По переднему фронту на входе xExecute происходит отправка содержимого буфера запроса, расположенного по указателю pRequest, размером szRequest байт через соединение, определяемое дескриптором hConnection, полученным от ФБ TCP_Client. Ответ от slave-устройства ожидается в течение времени tTimeout.
    Вот буфер - это будет твоя строка!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  6. #6

    По умолчанию

    Благодарю! Буду пробовать-проверять в понедельник. Если всё получится, то выгружу код сюда для будущих поколений

    *Я так понял, что OwenCommunication упрощённый и облегченный вариант библиотеки CAA Net Base Services?

  7. #7

    По умолчанию

    Да там надо будет с нуля всё писать прям.
    Прочитать документацию, найти пример (если он есть), попробовать его адаптировать под себя.

    Вот про CAA не скажу - не знаю про неё, честно. OCL удобнее, и я другие не использовал.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  8. #8

    По умолчанию

    Спасибо большое ещё раз - пришло и ушло.
    Теперь нужно предстоит разобраться с очисткой буфера и обрабатывать входящие данные, но это уже совсем другое приключение


    *Ссылка на видео, в котором объясняется как построить сеть обмен. Вдруг кого-то спасёт потом:
    https://rutube.ru/video/954e8ad89301...static.net&t=0
    Изображения Изображения

  9. #9

    По умолчанию

    Ура ура!
    1. Про очистку буфера посмотри про функцию MemSet
    И вообще, вот у меня тут пост был про всякое такое: https://cs-cs.net/codesys-kultura-ko...icy-massivov#5
    Тебе нужен заголовок 5.

    2. В будущем будь внимателен в том, что String хорошо работает как буфер, если в данных все знаки читаемые
    А если данные будут двоичные - то его будет глючить

    3. У тебя у блока ставится xDone, когда обмен завершился.
    Вот по нему надо будет:
    * Забрать данные и окучить их
    * Скинуть xExecute (у тебя через Try)

    ...и потом повторяь это снова периодически, когда надо данными обменяться
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  10. #10

    По умолчанию

    1. С буфером удалось все
    2. Учту. А что тогда лучше применять?
    3. В целом, так и сделал. Работает как надо)
    Еще раз спасибо)
    Последний раз редактировалось Всеволод К; 06.11.2025 в 09:37.

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

Похожие темы

  1. Приём данных по нестандартному протоколу
    от Verbi в разделе СПК210, СПК1xx [М01]
    Ответов: 7
    Последнее сообщение: 04.06.2020, 12:51
  2. ПЛК304. ComService. Приём данных по RS232.
    от arsenius в разделе ПЛК3xx (архив)
    Ответов: 3
    Последнее сообщение: 19.03.2020, 11:07
  3. Обмен данных ПР200 и СПК107
    от Kavmis в разделе СПК1xx (архив)
    Ответов: 1
    Последнее сообщение: 22.10.2019, 12:18
  4. Обмен данных ПР200 и СПК107
    от Kavmis в разделе Среда программирования OWEN Logic
    Ответов: 5
    Последнее сообщение: 21.10.2019, 12:11
  5. Обмен информацией по RS-485
    от 42ia в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 28.04.2012, 15:09

Метки этой темы

Ваши права

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