Member 12109707 Ответов: 3

Как читать ПЛК S7-300 с помощью C#


Привет Эксперты,

Я новичок в ПЛК и C#. Можете ли вы направить меня или предоставить образец кода для подключения и считывания данных с ПЛК? (пример-теги PLC db2. real16 или db2.dbd16)

Спасибо

3 Ответов

Рейтинг:
2

Per Söderlund

Прямое соединение между ПЛК и клиентским приложением не рекомендуется.
Большинство ПЛК позволяют установить только одно соединение.

Обычно в качестве промежуточного программного обеспечения для обработки нескольких клиентов используется "OPC-сервер".
Google для OPC-сервера, который поддерживает ваш ПЛК.
Если вы используете C#, вы можете найти оболочку Graybox OPCDA, которую вы можете использовать для безопасного и простого подключения к OPC (вам также нужна собственная библиотека OPCDA dll).

Если вы решите подключиться непосредственно к ПЛК,вы должны знать, что communicationsprotocol отличается для каждого ПЛК (Siemens, Mitsubishi и т. д.). ПЛК должен быть настроен либо на текстовый, либо на двоичный формат, и вы должны перевести его вручную.
Иногда в ПЛК есть сетевая карта, которая имеет свой собственный коммуникационный протокол.

В основном то, что я говорю. Используйте OPC-сервер или надрывайте задницу, пытаясь настроить ПЛК с компонентами и взломать коммуникационный буфер, потому что документация почти никогда не бывает правильной.


Рейтинг:
1

User 59241

Как новичку, лучше всего научиться прямо сейчас (прежде всего) пользоваться Google. Например: Гугл[^]

и мой Бог прямо в верхней части результатов находится CP:Связь ПЛК с использованием .NET[^]

Также посмотрите на: Угол C#: Отображение Ошибок[^]


Member 12109707

Я проверил то же самое и раньше, но мне нужна еще одна помощь примерно в том же духе.

Где я должен поставить значение типа (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"

[no name]

Потратьте некоторое время и сделайте некоторое фоновое чтение. Вам нужно понять основы. Есть много примеров. Подход с помощью дробовика-это не выход.

Richard MacCutchan

Ваша главная проблема заключается в том, что вы используете VB, а не C#.

Per Söderlund

Разве вы не говорили, что хотите подключиться к ПЛК S7?
Разве вы не строите буфер из примера, который подключается к ПЛК mitsubishi MELSEC?
Это никогда не сработает, потому что у них есть свои собственные протоколы, нет стандарта, который работает для всех.

Рейтинг:
1

hovnlu

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>


OriginalGriff

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

В этом случае я думаю, что вы искренне пытались быть полезными, поэтому я пропустил ответ и не буду предполагать, что вы занимаетесь фермерством очков репутации! Но есть некоторые триггерные счастливые пользователи, поэтому, пожалуйста, постарайтесь придерживаться более свежих вопросов в будущем, чтобы избежать их предположения, что вы являетесь обидчиком и начинаете процесс "выгнать его с сайта".