|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
Подключение и чтение данных с ПЛК MELSEC-Q Series (Q03UDECPU) при помощи C#08.11.2024, 15:42. Показов 2743. Ответов 18
Метки нет (Все метки)
Приветствую коллеги! Ранее уже обращался с подобным вопросом, но с другим ПЛК (Siemens), с этим разобрался... Но пришел черед Mitsubishi...
В чем суть данной темы, мне нужно подключиться к контроллеру и считать его данные, сам контроллер "MELSEC-Q Series (его цпу - Q03UDECPU)". Я уже приличное количество библиотек перепробовал, и единственно что получилось: получить ответ True, но данные не читаются... Подскажите какую библиотеку или какими средствами можно реализовать Подключение и чтение данных? Я знаю IP контроллера и адреса нужных тэгов. Пожалуйста!
0
|
|
| 08.11.2024, 15:42 | |
|
Ответы с готовыми решениями:
18
PLC (ПЛК) Mitsubishi MELSEC FX1S-14MR-DS [GX Works3] Управление ПЧВ A800 при помощи ПЛК FX5U Управление скоростью вращения двигателя при помощи плавного торможение через ПЛК |
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
| 11.11.2024, 08:42 [ТС] | |
|
Я вот и понял, что с этими контроллерами все намного веселее... И про OPC сервер знаю, он в целом щас и используется, но задача и заключается в том, чтобы ути от OPC, а может в последствии свой написать OPC-сервер... но это пока только мечтания))
Разобраться бы сперва как общаться с митсубиши через C#, а там уже видно будет. Если у вас будут какие-нибудь идеи, или есть некий опыт в работе с подобной задачей, я буду очень рад если вы поделитесь им! Я новенький в этой сфере, можно сказать только изучаю и познаю глубины, но безумный интерес испытываю к этому делу. Добавлено через 8 минут kaii-h, спасибо большое за наводку, я изучу материал! Библиотеку бегло просмотрел, наверное немного не то, что нужно, но все равно попробую! Спасибо! Вот есть загвоздка с библиотеками, которые я пробовал, подключение во всех этих библиотеках "TRUE", а вот когда данные запрашиваю по адресам (типа "D2203" и тд), то в ответ пустота или ноль... Сверяюсь с данными через "MX OPC Configurator", ну и смотрю всю область памяти в "GX Works2"
0
|
|
|
|
|
| 11.11.2024, 14:40 | |
|
rshepet, в этом деле есть две существенные проблемы, которые трудно решить "своими руками":
1. заставить "поверить" CPU ПЛК в то, что с ним "общается" легитимное устройство; 2. постоянная конвертация числовых значений. Со второй проблемой если более-менее понятно, то первая задаст жару. Дело в том, что нужно очень точно выдерживать тайминги передачи команд и приема сообщений. Это означает, что один не влезший бит в заголовок за отведенное время или наоборот, лишний бит там оказавшийся - сразу приводят к отбрасыванию этого сообщения ПЛК: устройство не валидно. Все эти времена рассчитываются исходя из скорости передачи и длине сообщений в пакетном режиме. Причем бывало так, что на одной линейке моделей это работало, а на другой уже нет. Если все же работать с этим на шарпах, то сразу исключается обмен с ПЛК из потока UI (окон) - это будет очень нестабильное соединение. Обмен должен быть только в своих собственных потоках, отличных от других. А это влечет за собой более-менее уверенные знания о многопоточной работе в C#.
0
|
|
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
| 20.01.2025, 13:50 [ТС] | |
|
Приветствую коллеги! Я тут пытаюсь реализовать проток MC (MC Protocol), но у меня все больше вопросов чем ответов...
В чем суть данной, мне нужно подключиться к контроллеру и считать его данные, сам контроллер "MELSEC-Q Series (его цпу - Q03UDECPU)". В целом написал небольшой код, который в свою очередь подключается и отправляет команду, даже ответ приходит. Трафик мониторю через Wireshark. Но я не понимаю как команды формируются, пытаюсь опереться на документацию, но тяжело идет... еще все на английском ![]() В чем вопрос то, помогите пожалуйста разобраться с этими командами и их расшифровками, недели три воюю с этим, а толку ноль. примеры команд, что отправляются с моего ПК на ПЛК: 1. 57000900001111070000FFFF030000FE0300001A 001C080A0800000000000000040B052800000005 01000006000000 2. 5a0000ff 3. 5700fd00001111070000ffff030000fe03000012 001c080a080000000000000004080231000000 4. 57000200001111070000ffff030000fe03000032 001c080a08000000000000000401140300000088 8f5b8bd7fa30fd251ead837ef8af442430807868 d7fca9812de86688855974 5. 57000000001111070000ffff030000fe03000014 001c080a08000000000000000401010100000000 01 Заметил лишь закономерность некую в этих запросах, всегда встречаются: "5700", "1111070000ffff030000fe030000", "001c080a0800000000000000040".
0
|
|
|
120 / 112 / 16
Регистрация: 30.10.2014
Сообщений: 324
|
|
| 20.01.2025, 16:18 | |
|
на гитхабе есть готовые библиотеки.
В поиске наберите MELSEC language:C#
0
|
|
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
| 20.01.2025, 16:37 [ТС] | |
|
я уже весь гитхаб облазил, многое пробовал
большая часть на китайском или японском, но это затрудняет в анализе кода, который они предоставляют да и не работают они с моим плк,, почему тоже понять не могу.
0
|
|
|
120 / 112 / 16
Регистрация: 30.10.2014
Сообщений: 324
|
|
| 20.01.2025, 16:44 | |
|
Тогда скачайте EasyBuilder Pro https://www.weintek.com/global... erPro.aspx
Создайте проект со своим контроллером и одним числовым индикатором и запустите симулятор панели с подключением к вашему контроллеру. в Wireshark увидите правильные запросы и будете точно знать что в ответе от контроллера.
0
|
|
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
| 21.01.2025, 11:28 [ТС] | |
|
Олег, я попробовал ваш совет, но он не принес результатов.
Делал все по руководству, но ответа от плк никакого, да и сам запрос сформирован как я понял не правильно. Вот запрос "Data: 3530303030303030303346463030303031383030 31303034303130303030442a3030323234373030 303130303038" Запросы что описывал ранее, они взяты из Wireshark при включенном MX OPC Configurator, так же пробовал и через GX Work2, когда выгружал программу из ПЛК. И при это во всех запросах присутствуют вот эти значения: "5700", "1111070000ffff030000fe030000", "001c080a0800000000000000040".
0
|
|
|
120 / 112 / 16
Регистрация: 30.10.2014
Сообщений: 324
|
|||
| 21.01.2025, 12:02 | |||
---------------------- Т.е. вы через MX OPC сервер успешно читаете с контроллера значение с одного адреса памяти, в Wireshark видите байты запроса и ответа и зная что MX OPC отображает значение из контроллера "1234", не можете его найти в байтах ответа? Первые запросы от MX OPC не отслеживайте, там может быть что то служебное.
0
|
|||
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|||||||||||
| 21.01.2025, 12:24 [ТС] | |||||||||||
|
Я видимо уже совсем запутался...
При рабочем MX OPC данные отправляются в виде HEX (Data: 57003000001111070000ffff030000fe03000012 001c080a08000000000000000408026b000000- это же hex?), и ответ от ПЛК есть в виде (Data: d700ac0000111107000000e40300ffff0300002a 009c000c080000000004040000000008026b0000 00000000006400010080020000e80f01406e3b00 00f7f9) Но когда отправляются ASCII (353030303030303030334646303030303138303 031303034303130303030442a303032323437303 0 303130303038 - запрос отправленный выше) ответа никакого нет. Но вы прислали расшифровку - 5000000003FF000018001004010000D*00224700 010008, пока я искал и изучал всю инфу, и лишь понимаю, что в этом запросе есть адрес D2247, его то я и пытаюсь вытащить в качестве примера. Сама программа в ПЛК не маленькая, на ней заводы асфальтосмесительные работают, и написана китайцами... Могу прислать код, который я написал на C#, где я отправляю запрос и есть ответ. (Код будет в следующем сообщении) Добавлено через 1 минуту
Строка Read Value не верная 100%, ибо по сути я даже не знаю что запрашиваю тут... просто скопировал один запрос отправленный для проверки и что-то сдвинулось с мест, но после этого конкретно топчусь на одном месте... Еще, меняя dataStartInde, то Read Value совершенно по разному себя ведет, то какой-то перебор идет, то какое-то статичное значение (например: 996, при dataStartInde = 11)
0
|
|||||||||||
|
120 / 112 / 16
Регистрация: 30.10.2014
Сообщений: 324
|
|
| 21.01.2025, 16:01 | |
|
Тут есть тема
OPC клиент (OPC_DA v2.05) для платформы NET и если у вас есть MX OPC и вы его настроили на обмен и всё работает, попробуйте с него данные забрать. В инетах тоже есть простые примеры для подключения к OPC серверу.
1
|
|
|
|
|
| 21.01.2025, 16:37 | |
|
Ломали мы как-то с ребятами этот протокол... на примере FX3U. Ну как ломали: сниферили обмен по COMу, пытались вычленить коды команд/данных. Кое что у нас получилось - собрали схемку на STM32 (она в FX'ах применяется), накидал я небольшой интерпретатор, который переворачивает LADDER в IL и отправляет в наш самодельный "CPU FX".
Так, несколько инструкций удалось повторить, а так же обмен туда-сюда. Даже где-то выкладывали результаты своей работы, не то на Казусе, не то еще где-то, типа такого же профильного форума. Давно было, не вспомню. Точно могу сказать одно - кардинальных отличий в протоколе между линейкой FX и Q как-бы нет, однако там точно есть некая идентификация конкретного типа устройства, которая содержится в потоке передачи. Т.е. команда для FX серии точно не подойдет для Q. Где именно этот идентификатор находится в блоке данных и как его изъять - я не на тот момент не нашел. Короче, интерес к этому пропал, дальше ковырять это дело я не стал. При необходимости общения с ПЛК юзал нативные OPC-сервера. По идее, при желании, можно и его обмен "ломануть" и посмотреть как он общается с тем или иным устройством. Но это надо прям сильно хотеть. По моему мнению, работа по "взлому" протокола ME намного дороже, чем любой условно-бесплатный OPC. Особенно, если передаваемых тегов не много.
1
|
|
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
| 22.01.2025, 08:45 [ТС] | |
|
Олег, спасибо! Попробую этот способ.
Вообще я весь разговор начал потому, что прилетела задача "написать свой OPC сервер", но когда начал этим заниматься понял что трэш полный... Теперь я называю его "Псевдо OPC" Програмку для Siemens S7-200 SMART я написал и очень успешно (спасибо библиотекам)! Но вот для Mitsubishi Q ничего не получается... Добавлено через 3 минуты Очень занятно Если я сейчас начну заниматься подобным, то это путь в бесконечность X-D... Даже если работать исключительно с протоколом MC, то все формы запросов и типы кадров (frame) будто бы не сходятся с моими запросами, на которые наткнулся при анализе трафика.
0
|
|
|
|
||
| 22.01.2025, 08:47 | ||
|
Митсубиси реже, поэтому для них вразумительного ничего нет. Не удивительно, почему все материалы по ним преимущественно на японо-китайских языках...
0
|
||
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
| 22.01.2025, 08:49 [ТС] | |
|
Это я заметил...
Даже библиотеки, что нашел на гите, все на японо-китайском...
0
|
|
|
0 / 0 / 0
Регистрация: 31.10.2023
Сообщений: 12
|
|
| 22.01.2025, 08:53 [ТС] | |
|
Ну я нашел ломаный MX OPC и работает вообще прекрасно, но для SCADA нужен прям сервер, а вот за ключ для него... ценники бешенные.
0
|
|
| 22.01.2025, 08:53 | |
|
Помогаю со студенческими работами здесь
19
Чтение HTML при помощи ASP Чтение сектора HDD при помощи asm Подключение к mysql из delphi при помощи anydac
Чтение REAL из PLC Siemens S300 при помощи библиотеки Snap7 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|