Как читать ПЛК S7-300 с помощью C#
Привет Эксперты,
Я новичок в ПЛК и C#. Можете ли вы направить меня или предоставить образец кода для подключения и считывания данных с ПЛК? (пример-теги PLC db2. real16 или db2.dbd16)
Спасибо
Прямое соединение между ПЛК и клиентским приложением не рекомендуется.
Большинство ПЛК позволяют установить только одно соединение.
Обычно в качестве промежуточного программного обеспечения для обработки нескольких клиентов используется "OPC-сервер".
Google для OPC-сервера, который поддерживает ваш ПЛК.
Если вы используете C#, вы можете найти оболочку Graybox OPCDA, которую вы можете использовать для безопасного и простого подключения к OPC (вам также нужна собственная библиотека OPCDA dll).
Если вы решите подключиться непосредственно к ПЛК,вы должны знать, что communicationsprotocol отличается для каждого ПЛК (Siemens, Mitsubishi и т. д.). ПЛК должен быть настроен либо на текстовый, либо на двоичный формат, и вы должны перевести его вручную.
Иногда в ПЛК есть сетевая карта, которая имеет свой собственный коммуникационный протокол.
В основном то, что я говорю. Используйте OPC-сервер или надрывайте задницу, пытаясь настроить ПЛК с компонентами и взломать коммуникационный буфер, потому что документация почти никогда не бывает правильной.
Как новичку, лучше всего научиться прямо сейчас (прежде всего) пользоваться Google. Например: Гугл[^]
и мой Бог прямо в верхней части результатов находится CP:Связь ПЛК с использованием .NET[^]
Также посмотрите на: Угол C#: Отображение Ошибок[^]
Я проверил то же самое и раньше, но мне нужна еще одна помощь примерно в том же духе.
Где я должен поставить значение типа (db2. real16) или любое требуемое преобразование.
Dim cmd как строка
УМК = ""
cmd = cmd &" 5000 "' sub head (не меняется)
cmd = cmd & " 00 "' номер сети (не изменяется)
cmd = cmd & " FF "' номер ПЛК (не изменяется)
cmd = cmd & "03FF "' номер ввода-вывода (не изменяется)
cmd = cmd & "00" ' (не изменить)
cmd = cmd & "0018 "' длина данных спроса (изменение)
cmd = cmd & "000A "' данные инспектора процессора
cmd = cmd & "0401 "' команда чтения
cmd = cmd & amp; "0000" ' СУБКОМАНДА
cmd = cmd &" D* "' код устройства
cmd = cmd &" 009500 "'" 010000 " 'ADBASE' базовый адрес
cmd = cmd & " 00022"
Потратьте некоторое время и сделайте некоторое фоновое чтение. Вам нужно понять основы. Есть много примеров. Подход с помощью дробовика-это не выход.
Ваша главная проблема заключается в том, что вы используете VB, а не C#.
Разве вы не говорили, что хотите подключиться к ПЛК S7?
Разве вы не строите буфер из примера, который подключается к ПЛК mitsubishi MELSEC?
Это никогда не сработает, потому что у них есть свои собственные протоколы, нет стандарта, который работает для всех.
S7.Net Tutorial with C# https://www.youtube.com/watch?v=nSnGKm3FSbk&list=PLRCEJ0bGSS1ZlU34IXsIKS62IHH5FcgU1
<iframe width="560" height="315" src="https://www.youtube.com/embed/nSnGKm3FSbk" frameborder="0" allowfullscreen></iframe>
Я собираюсь пропустить это, потому что это важно - но ...
1) Старайтесь не размещать ссылки на YouTube - они обычно попадут в детектор спама.
2) пожалуйста, постарайтесь не публиковать решения старых вопросов - а этому уже больше полутора лет, с решениями, - так как маловероятно, что оригинальный плакат все еще работает над проблемой, и вы действительно выглядите как фермер точки репрессии, что считается злоупотреблением.
В этом случае я думаю, что вы искренне пытались быть полезными, поэтому я пропустил ответ и не буду предполагать, что вы занимаетесь фермерством очков репутации! Но есть некоторые триггерные счастливые пользователи, поэтому, пожалуйста, постарайтесь придерживаться более свежих вопросов в будущем, чтобы избежать их предположения, что вы являетесь обидчиком и начинаете процесс "выгнать его с сайта".