Показано с 1 по 10 из 20

Тема: ТРМ-201 + Siemens HMI MP377. Modbus RTU

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    У меня дельфи нет, я прогал раньше.
    Я просто так открыл блокнотом код и стал смотреть ради интереса, поэтому могу дать ложную надежду.
    К чему хочу придраться:
    1. Все вот эти вот "Memo1.Lines.Add" указывают на то, что проект делался быстро-быстро и криво.
    Лучше бы ты сделал процедуру типа AddToLog, и красиво её вызывал. Потому что если ты когда-нибудь захочешь поименовать Memo1 во что-то понятное типа txtLog, то замучаешься везде исправлять.
    2. Не понял, зачем там разные расчёты CRC. Ты же делаешь опрос по Modbus RTU! А там CRC имеет ОДИН единственный алгоритм.
    Вообще даже Modbus - медленный протокол. CRC явно считается быстрее, чем передача данных по протоколу.
    3. Я не увидел составления посылок для протокола Modbus в принципе. Ты там тестируешь CRC, выводишь всякую инфу о возможностях портов... а где посылки данных-то?

    Мои мысли о том, что тебе надо сделать:
    0. Видимо, почитать про протокол Modbus. Он же работает как Запрос-Ответ. То есть, чтобы получить данные - надо что-то ПОСЛАТЬ. А у тебя в коде на "btnWritePortClick" написано "Пока Не использую".
    1. Потренироваться опрашивать настоящие устройства через другие программы так, чтобы ты видел там реальные байты, какие идут между ними. Эти самые Запросы-Ответы. Такие программы могут быть OPC-серверами, Modbus Poll и прочими.
    2. Разобраться с тем, как посылать и принимать байты в порт.
    Составляешь массив байтов и потправляешь его в порт.
    И получаешь данные из порта и склеиваешь их в массив байтов. НЕ в строку, так как строка с байтами работать не будет.
    3. Потом из документации по Modbus понять, как составлять запрос (Адрес, Команда, Данные, CRC).
    И уже его отсылать и смотреть, что тебе ответят.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  2. #2
    Пользователь
    Регистрация
    08.12.2014
    Адрес
    г.Тейково Ивановской обл.
    Сообщений
    280

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    У меня дельфи нет, я прогал раньше.
    Я просто так открыл блокнотом код и стал смотреть ради интереса, поэтому могу дать ложную надежду.
    К чему хочу придраться:
    1. Все вот эти вот "Memo1.Lines.Add" указывают на то, что проект делался быстро-быстро и криво.
    Лучше бы ты сделал процедуру типа AddToLog, и красиво её вызывал. Потому что если ты когда-нибудь захочешь поименовать Memo1 во что-то понятное типа txtLog, то замучаешься везде исправлять.
    2. Не понял, зачем там разные расчёты CRC. Ты же делаешь опрос по Modbus RTU! А там CRC имеет ОДИН единственный алгоритм.
    Вообще даже Modbus - медленный протокол. CRC явно считается быстрее, чем передача данных по протоколу.
    3. Я не увидел составления посылок для протокола Modbus в принципе. Ты там тестируешь CRC, выводишь всякую инфу о возможностях портов... а где посылки данных-то?

    Мои мысли о том, что тебе надо сделать:
    0. Видимо, почитать про протокол Modbus. Он же работает как Запрос-Ответ. То есть, чтобы получить данные - надо что-то ПОСЛАТЬ. А у тебя в коде на "btnWritePortClick" написано "Пока Не использую".
    1. Потренироваться опрашивать настоящие устройства через другие программы так, чтобы ты видел там реальные байты, какие идут между ними. Эти самые Запросы-Ответы. Такие программы могут быть OPC-серверами, Modbus Poll и прочими.
    2. Разобраться с тем, как посылать и принимать байты в порт.
    Составляешь массив байтов и потправляешь его в порт.
    И получаешь данные из порта и склеиваешь их в массив байтов. НЕ в строку, так как строка с байтами работать не будет.
    3. Потом из документации по Modbus понять, как составлять запрос (Адрес, Команда, Данные, CRC).
    И уже его отсылать и смотреть, что тебе ответят.
    Спасибо за советы. С чем то соглашусь. Почему в Delphi? Она мне ближе.
    Проект делал долго. Криво? Соглашусь спора нет.
    Документацию читал, изучал, вопросов по протоколу нет.
    Расчет CRC разными алгоритмами провел для их сравнения по быстродействию. Для себя определил наимолее быстпый и им пользуюсь.
    3. Потом из документации по Modbus понять, как составлять запрос (Адрес, Команда, Данные, CRC).
    И уже его отсылать и смотреть, что тебе ответят
    Формирование команды запроса реализовано. Как внутри запроса на Чтение, так и отдельной командой. Но вот здесь и кроются проблемы.
    В *zip файле есть исплняемая программа. Там можно посмотреть на формирование команды.
    С уважением
    Последний раз редактировалось kon48; 19.04.2025 в 13:34.

Похожие темы

  1. ОВЕН ПЛК210 -> SIEMENS CPU 317-2 pn/dp ОБМЕН ПО MODBUS TCP/IP
    от monsterrnd в разделе Разработки
    Ответов: 25
    Последнее сообщение: 20.06.2024, 10:53
  2. Siemens S71200 подключить к kepware opc по modbus TCP
    от AlexanderUshakov в разделе Сервисное ПО
    Ответов: 1
    Последнее сообщение: 31.08.2020, 13:35
  3. СПК107 + Siemens S7-200 MODBUS
    от vavan_bonus в разделе СПК1xx (архив)
    Ответов: 2
    Последнее сообщение: 13.06.2019, 02:22
  4. SCADA WINCC от SIEMENS и Modbus Universal OPC
    от super100 в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 19.06.2016, 13:56
  5. ПЛК63 и Siemens по ModBus RTU
    от Viktor_13 в разделе ПЛК63/73
    Ответов: 9
    Последнее сообщение: 10.10.2015, 12:05

Ваши права

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