В предыдущем уроке мы рассмотрели один из вариантов создания программы мигания светодиодом в TIA Portal. Теперь переходим от программирования к работе с реальным контроллером Siemens S7-1200.
В этом уроке мы подключим физический PLC к компьютеру, загрузим в него программу, проверим выполнение программы на реальном цифровом выходе, а затем подготовим встроенный аналоговый вход контроллера для дальнейшей работы с промышленным токовым сигналом 4–20 мА.
Контроллер Siemens S7-1200 подключаем к компьютеру через Ethernet.
Компьютер и PLC должны находиться в одной IP-подсети. После физического подключения открываем созданный проект в TIA Portal и переходим в раздел:
PLC_1 ↓ Device configuration
В проекте должен быть выбран именно тот CPU, который физически установлен на нашем стенде.
В данном случае используется:
Siemens S7-1200 CPU 1211C DC/DC/DC.
После того как TIA Portal обнаружил контроллер, выполняем компиляцию проекта и загружаем программу в CPU.
Перед тем как начинать работу с аналоговыми сигналами, необходимо убедиться, что связь с PLC работает, программа загружается и контроллер действительно выполняет написанный нами код.
Для этого используем уже знакомый алгоритм мигания светодиодом.
Сам алгоритм подробно рассмотрен в предыдущем уроке:
Урок №3. Программа мигания светодиодом в TIA Portal
В текущем проекте используются:
| Назначение | Адрес |
|---|---|
| Цифровой вход | %I0.0 |
| Цифровой выход | %Q0.0 |
После компиляции загружаем программу в CPU и переводим контроллер в режим RUN.
Если индикатор физического выхода Q0.0 начинает мигать с заданным нами периодом, значит:
— соединение компьютера с PLC работает;
— программа успешно загружена;
— CPU находится в режиме RUN;
— основной цикл программы выполняется;
— физический цифровой выход работает.
Первый этап закончен. Реальный PLC работает и выполняет нашу программу.
Теперь переходим к основной задаче данного урока — подготовке PLC для получения аналогового сигнала.
На используемом CPU 1211C имеются два встроенных аналоговых входа:
AI0 AI1
Общим проводом аналоговой части является клемма:
2M
Встроенные аналоговые входы используемого CPU работают с напряжением в диапазоне:
0…10 В
При этом в нашем проекте в дальнейшем будет использоваться промышленный токовый интерфейс:
4…20 мА
Следовательно, непосредственно измерять ток встроенным аналоговым входом CPU мы не можем.
Необходимо преобразовать ток в напряжение.
Для преобразования тока в напряжение используем обычный измерительный резистор.
В нашем стенде будет установлен резистор:
R = 330 Ом
Напряжение на резисторе определяется законом Ома:
U = I × R
Посчитаем напряжение для трех характерных значений токовой петли.
U = 0,004 × 330 U = 1,32 В
U = 0,012 × 330 U = 3,96 В
U = 0,020 × 330 U = 6,60 В
Таким образом, промышленный токовый диапазон:
4…20 мА
после прохождения через резистор 330 Ом преобразуется в диапазон напряжения:
1,32…6,60 В
Полученное напряжение полностью укладывается в рабочий диапазон встроенного аналогового входа PLC:
AI0 = 0…10 В
| Ток | Резистор | Напряжение |
|---|---|---|
| 4 мА | 330 Ом | 1,32 В |
| 12 мА | 330 Ом | 3,96 В |
| 20 мА | 330 Ом | 6,60 В |
Резистор 330 Ом подключается между аналоговым входом AI0 и общим проводом аналоговой части 2M.
ток 4…20 мА
│
│
▼
AI0
│
│
[ 330 Ом ]
│
│
▼
2M
PLC измеряет не непосредственно ток, а падение напряжения на резисторе.
Таким образом:
4 мА → 1,32 В 12 мА → 3,96 В 20 мА → 6,60 В
P = I² × R P = 0,02² × 330 P = 0,132 ВтПоэтому для нашего стенда достаточно резистора мощностью 0,25 Вт. Для более точного измерительного тракта желательно использовать резистор с допуском 1% или лучше.
Открываем:
Device configuration ↓ CPU 1211C ↓ Properties ↓ Analog inputs ↓ Channel 0
Для используемого контроллера получаем следующие параметры:
| Параметр | Значение |
|---|---|
| Channel address | IW64 |
| Measurement type | Voltage |
| Voltage range | 0…10 V |
| Smoothing | Weak (4 cycles) |
Для первого эксперимента остальные настройки можно оставить без изменений.
Чтобы в программе не использовать непосредственно физические адреса, создадим имена переменных.
| Name | Data type | Address | Назначение |
|---|---|---|---|
LED |
Bool | %Q0.0 |
Физический цифровой выход |
input |
Bool | %I0.0 |
Физический цифровой вход |
current |
Int | %IW64 |
RAW-значение аналогового входа AI0 |
После загрузки программы в контроллер переходим в режим Online.
Включаем режим мониторинга программы — кнопку с изображением очков.
В этом режиме TIA Portal показывает текущие значения переменных непосредственно во время выполнения программы.
Тег:
current
связан с физическим адресом:
%IW64
Следовательно, при изменении напряжения на физическом входе AI0 значение переменной current также будет изменяться.
Для диапазона аналогового входа 0…10 В номинальному диапазону соответствует цифровое значение приблизительно:
0 В → 0 10 В → 27648
Следовательно:
RAW = U / 10 × 27648
Для нашего резистора 330 Ом получаем:
| Ток | Напряжение AI0 | Ожидаемый RAW |
|---|---|---|
| 4 мА | 1,32 В | ≈ 3650 |
| 12 мА | 3,96 В | ≈ 10949 |
| 20 мА | 6,60 В | ≈ 18248 |
current в TIA Portal должно изменяться приблизительно от:
На этом подготовка PLC к работе с нашей системой измерения температуры закончена.
На данном этапе мы уже умеем:
— подключать реальный Siemens S7-1200 к TIA Portal;
— загружать программу в физический PLC;
— проверять выполнение программы через цифровой выход;
— работать со встроенным аналоговым входом AI0;
— преобразовывать ток 4–20 мА в напряжение при помощи резистора 330 Ом;
— получать RAW-значение аналогового входа через %IW64;
— наблюдать полученные данные непосредственно в TIA Portal.
До этого момента мы занимались подготовкой PLC.
В следующей части начинаем создавать непосредственно измерительное устройство.
В качестве первого датчика температуры будем использовать DS18B20.
STM32 будет получать с него значение температуры и преобразовывать полученное значение в промышленный токовый сигнал 4–20 мА.
PLC будет принимать этот сигнал через уже подготовленный нами аналоговый вход AI0.
После этого выполним обратное масштабирование полученного аналогового значения и получим внутри PLC уже не условное RAW-значение, а реальную температуру в градусах Цельсия.