S7 200/300

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Аватара пользователя
Aleksey Feoktistov

Activity Gold Silver Black
leader
leader
Сообщения: 898
Зарегистрирован: 20 янв 2009, 00:15
Награды: 6
Версия LabVIEW: 2015
Откуда: Tyumen
Поблагодарили: 2 раза
Контактная информация:

Re: S7 200/300

Сообщение Aleksey Feoktistov »

Я так понимаю, OPC Server от Сименса Вы уже поставили?
теперь ставьте Мастер СКАДА
только, для начала, необходимо все делать на одной машине (так легче)!!!
К Мастер СКАДе намного проще OPC сервера привязать, там все заточено под работу с ними.
напоминаю, это очень дружелюбная СКАДА и видео уроки есть.
Потом на :labview: перейдете, когда у Вас будут данные с OPC сервера нормально читаться будут
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: S7 200/300

Сообщение AndreyDmitriev »

Aleksey Feoktistov писал(а):Я так понимаю, OPC Server от Сименса Вы уже поставили?
теперь ставьте Мастер СКАДА
Я так понимаю всё чуть сложнее. У Катерины судя по всему есть Siemens S7 200 или 300 и к нему подключён Embedded PC - что-нибудь типа Simatic Microbox - скажем SIMATIC IPC4xx какой-нибудь и на нём крутится OPC сервер, и всё такое. Соответственно автор прекрасно общается с S7 с этого устройства и теперь хочет воткнуть в сеть ноутбук, на котором LabVIEW и читать значения тэгов из ПЛК напрямую. Ясное дело, что так не получится, поскольку общаться мы можем только с OPC сервером Embedded PC, но не с ПЛК напрямую. Вообще пока автор топика детально не распишет архитектуру системы - тут можно только гадать, почему оно не взлетает.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: S7 200/300

Сообщение Borjomy_1 »

То решение, которое я предложил в начале темы, опробовано на S7-300 и S7-400 и не требует установки SCAD, OPC и прочих тяжелых приблуд. Опять-же проблема именно в том, что контроллер S7-200. И странное дело, что не все данные в датаблоках можно записать. Видать, есть какие-то проблемы по совместимости протоколов, либо какие-то программные ошибки топикстартера.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: S7 200/300

Сообщение AndreyDmitriev »

Borjomy_1 писал(а):То решение, которое я предложил в начале темы, опробовано на S7-300 и S7-400 и не требует установки SCAD, OPC и прочих тяжелых приблуд. Опять-же проблема именно в том, что контроллер S7-200. И странное дело, что не все данные в датаблоках можно записать. Видать, есть какие-то проблемы по совместимости протоколов, либо какие-то программные ошибки топикстартера.
То решение, которое вы предложили - оно отнюдь не для новичков. Там суть в том, что используется фактически внутренний протокол Сименса, который ни разу не документирован (точнее, не находится в открытом доступе). Умельцы просто взяли контроллер, запустили на компьютере клиент да сдёрнули весь протокол при помощи Wireshark (в то время ещё Ethereal), после чего сделали реверс-инжиниринг - так родилась библиотека libnodave. Сделали это отчасти из спортивного интереса, а отчасти от желания сэкономить на OPC сервере (который у Сименса в общем случае платный и требует лицензии, а тот, что бесплатный - дюже неудобный). Ну а уже эту библиотеку частично перенесли на LabVIEW. С S7-200 она тоже, кстати, работает после небольшой доработки напильником. В общем случае это решение работает из коробки, но если там что-то пойдёт не так, то разобраться почему - будет ох как непросто (это я как практик говорю).

Для новичков же я бы всё-таки именно OPC сервер порекомендовал. Причём сначала соединение проверяется через OPC Scout, и лишь затем соединение устанавливается через DataSocket, причём один-в-один так, как оно тестировалось в OPC Scout. Это самый простой и безболезненный путь. Лишь затем можно выполнить второе упражение - сделать тоже самое через DSC. Третье - воспользоваться NI OPC сервером, сконфигурировав прямое подключение к S7. И вот лишь освоившись с документированными инструментами, воспользоваться тем решением, которое вы предлагаете.

При работе с DataSocket опять же порекомендую обойтись без всяких Browser, задавая строку напрямую в виде opc:\\computer\OPCServer\Item. Ну и по возможности упражняться надо на том же компьютере, на котором крутится сервер, чтобы не возиться с настройками DCOM.

Автору ещё раз - если через OPC Scout всё работает, то в LabVIEW строку подключения надо сформировать именно так, как она формируется в OPC Scout, а адрес в строке указать именно тот, на котором крутится сервер, (мне кажется, вы адрес ПЛК пытаетесь указвать). Либо можно поставить второй OPC Server на локальный компьютер, правильно сконфигурировать проект S7, тогда будете общаться с OPC через localhost.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: S7 200/300

Сообщение Borjomy_1 »

Тема несколько месяцев жила, и вот на тебе, мэтры подключились. )))
Эта библиотека хороша потому, что на производстве ставить OPC сервер - нехорошая идея, очень нехорошая. Он годится исключительно для второго уровня АСУТП и выше. Если надо работать на первом уровне, то никто вам этого сделать не даст. И времена не являются реальными. А библиотека позволяет работать на :labview: RT.
С S7-200 она тоже, кстати, работает после небольшой доработки напильником.
Вот это интересный момент. Вы знаете, что надо допиливать? Тогда можно библиотечку подправить.
В общем случае это решение работает из коробки, но если там что-то пойдёт не так, то разобраться почему - будет ох как непросто (это я как практик говорю).
Где может пойти не так? У нас было только две проблемы - в исходной библиотеке номер слота загнан в константу, поэтому с 300-м она не работала. Я это поправил. И второе - если при выполнении запроса данные "уходят" за границу DB, то ничего не выдается. Но это уже вопрос к аккуратности программирования.

Кстати, что OPC Scout, что NI OPC - это перелицованный KEP OPC. Как ни смешно, с одними и теми-же багами.
Если из Scout видно, а из DataSocket - нет, то вполне может быть как раз случай с ненастроенным DCOM
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: S7 200/300

Сообщение AndreyDmitriev »

Использовать OPC или нет - это в какой-то мере зависит от сложившихся предпочтений отдела автоматизации и общей архитектуры системы. В наших системах как правило если используется сименсовский ПЛК, то используется и OPC сервер, а если GE Fanuc - то обходимся Modbus через TCP без OPC. Ситуаций, чтобы "не давали" установить OPC я не встречал. Вообще у нас LabVIEW как правило "на втором уровне" и используется.
У меня всё руки не доходят покрутить OPC UA - там нет этих заморочек с DCOM.

Что касается библиотеки, то я помню, как несколько лет назад ко мне прибежал программист из цеха со словами - я нашёл крутую штуку, которая позволяет обойтись без OPC, но на двух практически идентичных системах на одной работает, а на второй - нет. Он попросил меня помочь, и я полдня убил на то, чтобы разобраться в мешанине байтов, которые отправляются в контроллер, и в конечном итоге нашёл таки в чём там дело (я там буквально один байт поменял, возможно сделал тоже изменение, что и вы). Сейчас у меня нет под рекой двухсотого, чтобы проверить. Да, мы тоже используем это решение, но, правда не чистый LabVIEW код, а слегда модифицированный libnodave, который к LabVIEW как динамическая библиотека подключен.

OPC также удобен для новичка тем, что точки соединения с ПЛК задаются удобными "высокоуровневыми" URL (можно ведь ещё aliasы прописать и станет вообще красиво), в случае использования DSC появляются дополнительные "плюшки", а для использования данной библиотеки нужно сделать небольшую "обвязку", так она предоставляет низкоуровневый интерфейс. И грамотно её использовать новичок не сможет, как мне кажется.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: S7 200/300

Сообщение Borjomy_1 »

AndreyDmitriev, У нас системы в основном - первый уровень, на LVRT, второй уровень уже вспомогательный. Для нас на первом уровне OPC - это зло. Во первых это дополнительная прокладка между устройствами, от работоспособности которой зависит технологический процесс. Это не вспомогательные системы визуализации, а система управления. Во вторых это внедрение в сеть предприятия со всеми вопросами безопасности и пр. Не дают в контроллерную сетку Windows-машину включать, в принципе. Ну и от OPC миллисекундные интервалы сложновато получить.
katerina
beginner
beginner
Сообщения: 18
Зарегистрирован: 03 мар 2014, 10:39
Версия LabVIEW: 2012
Контактная информация:

Re: S7 200/300

Сообщение katerina »

Спасибо большое за помощь!

Да, вы правы.. у меня SIMATIC IPC 227D (NanoBox). Постараюсь подключиться через OPC Scout со своего ноутбука.

Что касается переменных, которые я не могу менять с помощью библиотек. Они все лекго меняются через OPC Scout. Но вчера я обратила внимание, что все они имею большие значения (2000-8000). Может быть в этом проблема?
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1337
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 42 раза
Контактная информация:

Re: S7 200/300

Сообщение AndreyDmitriev »

Да я не спорю вовсе - аргументация не использовать OPC вполне понятна.
Но опыт использования LabVIEW на "первом уровне" у меня тоже есть, причём специфический. Лет десять назад я программировал несколько систем, в которых функции ПЛК были перенесены на LabVIEW (на самом деле решили просто сэкономить). Суть в том, что ставились несколько Siemens ET200 для ввода/вывода, они шиной Profibus соединялись с компьютером, в который была вставлена карта CP5613, там крутился OPC сервер, и программа LabVIEW через Datasocket управляла вообще всей установкой безо всякого ПЛК. (я мог бы обойтись и без OPC, читая и записывая непосредственно в Dual-Port-RAM, но, к счастью, ограниченное время на разработку остановило полёт моей инженерной мысли и до этого не дошло). Никогда не забуду выражение лица одного из инженеров на заводе, который открыл шкаф, посмотрел на ряд ET200 и спросил "а CPU-то где?!, у вас Soft PLC что ли?". Когда я ему сказал, что и программного ПЛК тоже нет, он недоумённо посмотрел на бодро щёлкающие механизмы и спросил "а как этот конвейер вообще двигается"?. Надо было видеть выражение его лица.
Сейчас мы так больше не делаем, ибо для сервиса такое решение - ад кромешный.
Ещё я обычно стараюсь планировать архитектуру так, чтобы всё, что касается реального времени, находилось в ПЛК и только в нём и наружу не торчало. Соответственно от LabVIEW гарантированные миллисекундные интервалы как бы и не требуются.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: S7 200/300

Сообщение Borjomy_1 »

katerina, Адрес большой или значение?
Если адрес, то какое начальное значение вы задаете? Возможно адрес неправильно преобразуется.
Если значение, то это могут быть проблемы преобразования типа данных. входная строка-то в байтах. Если число 250 записывается, а 260 - нет, то надо шерстить сборку в массив перед выдачей.
katerina
beginner
beginner
Сообщения: 18
Зарегистрирован: 03 мар 2014, 10:39
Версия LabVIEW: 2012
Контактная информация:

Re: S7 200/300

Сообщение katerina »

Неправильно преобразуется значение. Записывает какие то странные числа. Я преобразовала чтение, теперь читает все отлично. Но вот с записью до сих пор проблемы.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: S7 200/300

Сообщение Borjomy_1 »

Странные числа могут возникать при:
- ошибке в начальном адресе
- нарушении порядка следования байт в исходном числе.
- несоответствие типа данных размеру
- неявное выравнивание при преобразовании в массив и в DB
Я преобразовала чтение, теперь читает все отлично.
Вам надо также преобразовывать данные на запись.

Попробуйте "покрутить" результат записи в калькуляторе (ну или в Labview). Ваша задача разбить полученное число на байтовое представление. Тогда вам будет проще найти источник неприятности. А то, например, записываем число 3250, а получаем 45580. Если разбить число на байты, то получится, что байты просто поменяны местами. было 0x0C 0xB2, а младший байт был отправлен первым - 0xB2 0x0C. Тоже самое с передачей типа single (он соответствует типу real в симатике). Хотя, по умолчанию, и I16 и single передаются впрямую, без разворотов. Вот, при работе с Visual Basic длинные типы надо переворачивать.
И обратите внимание на выравнивание, особенно если у вас данные разных типов следуют друг за другом. В DB они выравниваются по 2байта, но два подряд байта не выравниваются . А при компоновке в массив в Labview данные могут выравниваться по-другому.
katerina
beginner
beginner
Сообщения: 18
Зарегистрирован: 03 мар 2014, 10:39
Версия LabVIEW: 2012
Контактная информация:

Re: S7 200/300

Сообщение katerina »

Да, спасибо за помощь! проблемы была в байтах. Сейчас все отлично работает.

Но осталась проблема с подключением через OPC сервер. Я подключила OPC Scout V 10. Labview видит появившиеся при этом локальные серверы. Но дело в том, что я не создаю на компъютере локальную станцию, а подключаюсь к OPC сервера контроллера через UA server. Я пыталась задать Labview такой же точно адрес, который используется в Scout, но все равно соединиться не получается. В чем может быть проблема?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: S7 200/300

Сообщение Borjomy_1 »

Для подключения через OPC UA понадобится пресловутый DSC модуль. Там есть функции для работы с таким интерфейсом
katerina
beginner
beginner
Сообщения: 18
Зарегистрирован: 03 мар 2014, 10:39
Версия LabVIEW: 2012
Контактная информация:

Re: S7 200/300

Сообщение katerina »

А можно где нибудь взять пробную версию этого модуля для Labview 2012?? на сайте я только для 2013 нашла..
Ответить

Вернуться в «Коммуникация с приборами»