Обучаем новичка программированию ПЛК (kobrik)

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы
Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

kobrik писал(а):Пачка переменных? что это значит?
Да ничего необычного:
var0 WORD
var1 WORD
var2 WORD
...
var9 WORD
var10 WORD
...

Соответственно var9 и var10 будут лежать по адресу DB1.DBX18.0 и DB1.DBX20.0.
kobrik писал(а):Да уловил, это в зависимости что мы хотим считывать или записывать, применяем адреса. К примеру Holding registers использует такой вид: 40001.
На самом деле эти адреса 1, 10001, 30001, 40001 - атавизм 60-х годов прошлого века. Фирма Modicon (нынче в составе Schneider Electric), которая изобрела Modbus, заточила его под свой контроллер, у которого было 65535 байт (64 кБайт) памяти для работы с Modbus. Modicon привязала местоположение четырех типов данных к конкретным ячейкам своей специальной памяти. Сейчас такая память вызывает лишь смех...
Многие устройства с Modbus-интерфейсом сделаны хитро: они не привязываются к этим конкретным ячейкам 1, 10001, 30001, 40001, вместо этого используются подмены:
00001 => начальный байт Discrete Coils
10001 => начальный байт Discrete Inputs
30001 => начальный байт Input Registers
40001 => начальный байт Holding Registers

Например, дискретный вход по адресу 10021 будет соответствовать 20-му биту (10021 = начальный байт Discrete Inputs + 20).
Ну и ранее Автоматизатор приводил пример: 40033dec = начальный байт Holding Registers + 32.

В некоторых устройствах начальными байтами являются 0, 10000, 30000, 40000. В этом случае надо задавать другое смещение адреса, например, 40033dec = начальный байт Holding Registers + 33.

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение kobrik »

Если можно исправьте в моем проекте, который я вам посылал... И вставьте плииз сюда... Я вроде чето неправильно делаю(

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

Не могу, у меня ТИА Портал v13. Он открывает, но пересохранить в v12 не может.

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение kobrik »

Михайло писал(а):Не могу, у меня ТИА Портал v13. Он открывает, но пересохранить в v12 не может.
Если не трудно тогда, сделайте скриншот блока данных и функционального блока модбас клиент.буду очень признателен...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

Первое, что я бы сделал - это разделил структуру Modbus Data на две структуры: Input Modbus Data и Output Modbus Data. Эти две группы данных должны находиться в разных словах. Сейчас входной бит хранится DB1.DBX19.0, а выходной - DB1.DBX19.1 - это одно слово. Конфликт. Нельзя позволять серверу переписывать слово, в котором хранятся данные, которые он не должен изменять.
Пусть SQ1 лежит в DB1.DBX18.0, а K1 - в DB1.DBX20.0. Короче, сделай так, чтобы входные и выходные слова не пересекались.

Второе: нужно ввести две функции MB_CLIENT. Одна будет считывать Holding Registers, другая - считывать Output Coils.

Считывание Holding Registers
REQ=true
DISCONNECT=false
CONNECT_ID=2
IP_OCTET=192.168.0.3
IP_PORT=502
MB_MODE=0
MB_DATA_ADDR=40002
MB_DATA_LEN=2
MB_DATA_PTR=DB1.DBX22.0 WORD 2

Считывание Coils
REQ=true
DISCONNECT=false
CONNECT_ID=3
IP_OCTET=192.168.0.3
IP_PORT=502
MB_MODE=0
MB_DATA_ADDR=1
MB_DATA_LEN=1
MB_DATA_PTR=DB1.DBX26.0 WORD 1

Разные функции MB_CLIENT должны использовать разные датаблоки (речь не про DB1, а про привязанную DB3 "MB_CLIENT_DB").

И еще один момент: почему выходы функций MB_CLIENT и MB_SERVER пишут в свои же DB? Так работает?

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение kobrik »

Михайло писал(а):Первое, что я бы сделал - это разделил структуру Modbus Data на две структуры: Input Modbus Data и Output Modbus Data. Эти две группы данных должны находиться в разных словах. Сейчас входной бит хранится DB1.DBX19.0, а выходной - DB1.DBX19.1 - это одно слово. Конфликт. Нельзя позволять серверу переписывать слово, в котором хранятся данные, которые он не должен изменять.
Пусть SQ1 лежит в DB1.DBX18.0, а K1 - в DB1.DBX20.0. Короче, сделай так, чтобы входные и выходные слова не пересекались.
Пожалуйста, выложите принтскрин... Никак не могу представить себе это...
Михайло писал(а):почему выходы функций MB_CLIENT и MB_SERVER пишут в свои же DB? Так работает?
Думаю, эти блоки являются специфическими и их нельзя смешивать с с обычными, где хранятся данные...

Я все делаю как вы говорите, но никак не получается передать данные, постоянно получаю нуль в Сименсе. Может я не правильно мониторю переменные...

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

Пока ТС нет, подниму тему.
Завалялись датчики температуры от e+e elektronik (ee09 -ft06), подскажите, как подключить к s7?
Ну провода я подцепить смогу, интересует логика?

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

нужен модуль ввода температурных сигналов...

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

Не успел картинку воткнуть... Вот ты быстрый какой ;)
Я просто хочу подключить к аналоговым входам, там в инструкции написано, что и температура и влажность 4-20 мА
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

Все очень просто: найди схему подключения для EE09-FT6.
http://bjpride.com/download/th/EN/EE09en.pdf

Тут на схеме нарисованы 4 устройства:
1. Датчик влажности и температуры EE09-FT6 с клеммами V+, RH, T.
2. Блок питания 24 В с клеммами "+" и "-".
3. Показывающий прибор (миллиамперметр, токовый аналоговый вход) для измерения влажности - верхний mA.
4. Показывающий прибор (миллиамперметр, токовый аналоговый вход) для измерения температуры - нижний mA.

Тут все понятно?

Теперь найдите документацию на подключение аналоговых сигналов к своему модулю S7.

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

Михайло писал(а): Теперь найдите документацию на подключение аналоговых сигналов к своему модулю S7.
Вот об этом и был мой вопрос, может кто уже подключал датчики и знает какой нужно выбирать элемент.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

Для соединения EE09-FT6 и S7-1200 потребуется модуль 6ES7231-4HD32-0XB0 или 6ES7231-4HF32-0XB0 или накрайняк сигнальная плата 6ES7231-4HA30-0XB0. Если точность измерения не важна, то можно с помощью резистора 500 Ом подключить к самому CPU.

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

У меня на плк есть 1 аналоговый вход
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

ford7 писал(а):У меня на плк есть 1 аналоговый вход
Здесь не один, а два аналоговых входа! Эти входы - от 0 до 10 В, то есть потребуется два резистора 500 Ом, для преобразования тока 4-20 мА в напряжение 2-10 В.

вся информация в документе s71200_system_manual_r.pdf, только надо искать 6ES7214-1HE30-0XB0 (это старый аналог).

Если знаешь английский, то скачать s71200_system_manual_en-US_en-US.pdf примерно от 2012 до 2014 года.

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

Эти книжки у меня есть, просто вот зрительно я лучше воспринимаю. Лучше один раз логику увидеть, а дальше- проще )
Со схемой подключений у меня нет вопросов, но вдруг что-то я не так мыслю ;)
У вас нет необходимых прав для просмотра вложений в этом сообщении.

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ward »

500 ом сажать надо параллельно - на "0" и "2М", "1" и "2М"

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

ward писал(а):500 ом сажать надо параллельно - на "0" и "2М", "1" и "2М"
Теперь я вообще запутался... Можете нарисовать с учетом питания самого датчика?

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

Изобразил. Так?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение Михайло »

Теперь верно. Ты главное разберись, как работают законы Ома и Кирхгофа в этих цепях, чтобы ты мог собрать схему измерения с любыми устройствами.

ford7
Любитель
Сообщения: 30
Зарегистрирован: 30 апр 2013, 14:16

Re: Обучаем новичка программированию ПЛК (kobrik)

Сообщение ford7 »

Увидеть бы внутреннюю схему плк, было бы легче.
Подцепил, запитав от внешнего источника в 12в. Резистор пока поставил на 510 ом, другого не было под рукой. Термометром измерил- 23,9 градусов. Получаю на входе NORMX- число 27338 при напряжении 9,87. Как сейчас преобразовать это дело в температуру?

Ответить