Files
admin 802671f443 Initial: backup from Claude Project 'навозоудаление OWEN'
- 8 project files from Claude Project Knowledge (MD)
- CHAT_DIGEST.md: synthesis of 5 chats (architecture, status, solved issues)
- INDEX.md: full manifest with notes on missing PDFs and .owle files
- Missing: ManureRemoval_v2.owle (local), 2 PDF manuals (binary, too large for write_file)
2026-04-30 12:26:07 +03:00

263 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Навозоудаление OWEN — выжимка из чатов
**Дата компиляции:** 30 апреля 2026
**Источник:** conversation_search по проекту "Система навозоудаления"
**Найдено уникальных чатов:** 5 (с 4 февраля по 16 февраля 2026)
---
## Архитектура решения (ПЛК, датчики, исполнительные устройства)
### Топология
```
┌─────────────────────────────────────────────────────┐
│ ШКАФ КОРПУСА №1 │
│ │
│ ПР200-220.2.2.0 │
│ ├─ COM1 (Slot 1) → Modbus SLAVE → СП307 панель │
│ │ 9600, 8N2, адрес ПЛК = 16 │
│ └─ COM2 (Slot 2) → Modbus MASTER → 4× ONI SFB-33 │
│ 9600, 8N1 (или 8N2), интервал опроса 100 мс │
│ │
│ СП307-Б (7" сенсорный) │
│ ├─ PLC порт → ПР200 (Modbus RTU Master) │
│ └─ Download порт → MAX485 → ESP32 (удалёнка через │
│ WiFi → CRM сервер) │
│ │
│ 4× ONI SFB-33-D55-A-10 (плавные пуски) │
│ Адреса Modbus: 1, 2, 3, 4 │
└─────────────────────────────────────────────────────┘
```
### Двигатели и защита
| № | Тип | Мощность | Iном (FLA) | Уставка перегрузки | ONI |
|---|-----|----------|------------|--------------------|-----|
| 1 | Горизонтальный | 4 кВт | 12 А | **15.0 А (125%)** | #1 |
| 2 | Горизонтальный | 4 кВт | 12 А | **15.0 А (125%)** | #2 |
| 3 | Наклонный | 2.2 кВт | 10 А | **11.5 А (115%)** | #3 |
| 4 | Наклонный | 2.2 кВт | 10 А | **11.5 А (115%)** | #4 |
### Соответствие входов/выходов ПР200
```
Входы: Выходы:
I1 → MC_Motor1.btn_Start Q1 ← MC_Motor1.Run
I2 → MC_Motor1.btn_Stop Q3 ← MC_Motor2.Run
I3 → MC_Motor2.btn_Start Q5 ← MC_Motor3.Run
I4 → MC_Motor2.btn_Stop Q7 ← MC_Motor4.Run
I5 → MC_Motor3.btn_Start F1-F4 — светодиоды (планируется)
I6 → MC_Motor3.btn_Stop
I7 → MC_Motor4.btn_Start
I8 → MC_Motor4.btn_Stop
```
### Карта Modbus (ONI SFB-33, COM2 Master)
**Чтение (FC 0x04, Input Registers):**
| Параметр | Адрес | Тип | Формула |
|----------|-------|-----|---------|
| Средний ток | 30007 | UINT16 | I = value × FLA / 100 |
| Статус системы | 30009 | UINT16 | Биты: Stop/Accel/Bypass/Run |
| Код аварии | 30011 | UINT16 | 0=норма, 1=перегрев, 3=превышение тока |
**Запись настроек (FC 0x06, Holding Registers):**
| Параметр | Адрес | Диапазон | Формула |
|----------|-------|----------|---------|
| FLA (номинальный ток) | 40002 | 1-150 А | прямо в Амперах |
| UStart% (нач. напряжение) | 40010 | n=0-13 | UStart% = 30 + n×3 |
| TStart (время разгона) | 40011 | n=0-15 | TStart = n×2 сек |
| TStop (время торможения) | 40012 | n=0-15 | TStop = n×2 сек |
| **Управление через Modbus** | **40013** | 0 или 1 | **0=потенциометры, 1=Modbus — ОБЯЗАТЕЛЬНО 1!** |
**Команды (FC 0x05, Coils):**
| Команда | Адрес | Действие |
|---------|-------|----------|
| Пуск/Стоп | 00001 | 0=Стоп, 1=Пуск |
| Сброс аварии | 00008 | 1=Сброс (импульс!) |
### Карта Modbus (ПР200 Slave, COM1, для СП307)
| Регистр | Имя | Направление |
|---------|-----|-------------|
| 512-515 | SL_Fault1..4 | ПЛК → Панель |
| 516-519 | SL_Overload1..4 | ПЛК → Панель |
| 520-523 | SL_Current1..4 | ПЛК → Панель |
| 524-527 | SL_Reset1..4 | Панель → ПЛК |
| 528 | SL_Mode | Панель → ПЛК (на будущее) |
| 529 | SL_EmgStop | Панель → ПЛК |
### Блок MotorControl (актуальная версия от 15 февраля)
```pascal
VAR_INPUT
btn_Start: BOOL; // Кнопка ПУСК (физическая или Toggle)
btn_Stop: BOOL; // Кнопка СТОП
btn_EmgStop: BOOL; // Аварийный стоп (PanelEmgStop)
Current: UDINT; // Ток от ONI через Modbus
CurrentLimit: UDINT; // Уставка перегрузки
Reset: BOOL; // Сброс аварии (физ. или PanelReset)
END_VAR
VAR_OUTPUT
Run: BOOL; // Команда на двигатель
Fault: BOOL; // Флаг аварии (UDINT по факту)
Overload: BOOL; // Флаг перегрузки (UDINT по факту)
ONI_Command: BOOL; // ИМПУЛЬС сброса для ONI Modbus
CurrentOut: UDINT; // Ток на выход для панели
END_VAR
```
**Логика сброса:** повторное нажатие ПУСК при наличии Fault → импульс ONI_Command → запись в катушку 00008 ONI → сброс аварии в плавном пуске.
### Кабельная разводка
- **ПР200 ↔ ONI:** A/B перепутаны! ПР200 A+ → ONI B, ПР200 B → ONI A+ (учтено в проекте)
- **ПР200 ↔ СП307:** DB-9F на стороне панели, pin 7 = A, pin 8 = B (разъём заказан)
### Удалённый мониторинг (на будущее)
ESP32 + MAX485 (~600₽/система) подключается к Download-порту СП307 (Modbus RTU Slave). 9 систем = ~5400₽ vs 22 500₽ для RS-485↔Ethernet конвертеров. ESP32 → WiFi → роутер → CRM-сервер на Node.js.
---
## Текущий статус (% готовности, что работает, что нет)
**Прогресс по разным чатам менялся: 70% (4 фев) → 85% (6 фев) → ~30% после рестарта на новом проекте ManureRemoval_v2 (16 фев).**
### Актуальное состояние (на 16 февраля 2026)
Идёт переделка с нуля на новый проект `ManureRemoval_v2.owle` с принципиальными улучшениями:
- Toggle-логика вместо отдельных ПУСК/СТОП (освобождает входы под датчики)
- Запись настроек ONI (UStart, TStart, TStop) прямо из ПЛК через Modbus
- Полноценный Modbus Slave для СП307 (18 переменных, регистры 512-529)
- Подход: создать FBD-логику на главной схеме → выделить → Создать макрос (это работает в OWEN Logic, в отличие от попыток создать FBD-блок напрямую)
### Что работает (✅)
- Блок MotorControl скомпилирован, 0 ошибок (UDINT для Current/CurrentLimit/Fault/Overload)
- 4 экземпляра MC_Motor1..4 на FBD схеме
- Все 8 кнопок I1-I8 подключены
- Выходы Run → Q1, Q3, Q5, Q7
- Modbus Master на Слоте 2 настроен (4 устройства ONI, адреса 1-4)
- Modbus Slave на Слоте 1 настроен (адрес 16, 18 переменных)
- Сетевые переменные созданы: Current_Motor1..4, FaultReset_Motor1..4
- Конфигуратор СП3хх установлен, проект «Панель_навозоудаления» создан
- Дизайн 3 экранов согласован (главный / настройки с паролем / режим)
### Что в работе (⏳)
- Связь сетевых переменных Modbus с входами/выходами блоков на FBD
- Создание FBD-макроса MotorControl_Logic (выделить блоки → правый клик → Создать макрос)
- Тиражирование макроса на M2, M3, M4
### Что не начато (❌)
- Экраны панели СП307 (рисование в Конфигураторе СП3хх)
- Мониторинг связи ONI (переменные Статус/Опрос)
- Автоматический режим работы по датчикам (телега, уровень в приямке)
- Моточасы и логирование
- ESP32 удалённый мониторинг
---
## Открытые вопросы / TODO
### 🔴 Критично
1. **Дочистить переменные подключения Modbus** к блокам MotorControl (Current_Motor1..4 → MC_MotorN.Current; FaultReset_Motor1..4 ← MC_MotorN.ONI_Command).
2. **Включить управление через Modbus** — в каждый ONI записать `40013 = 1`, иначе записи в 40010-40012 будут проигнорированы.
3. **Построить FBD-макрос MotorControl_Logic** на главной схеме и тиражировать на M2-M4 (~2-3 часа работы).
4. **Скомпилировать (F7) и загрузить в ПР200** через USB.
### 🟠 Высокий приоритет
5. **Экраны панели СП307** в Конфигураторе СП3хх:
- Главный: 4 карточки моторов 2×2 (Run/Fault/Overload индикаторы, Current÷10 для отображения, кнопка Сброс на каждый)
- Настройки (с паролем 1234): UStart%, TStart, TStop, уставка перегрузки, FLA на каждый мотор
- Режим: Ручной / Авто (заглушка)
6. **Тестовый стенд** — собрать с минимумом железа: 220 В, 8 кнопок, 4 лампы 220 В на Q1/Q3/Q5/Q7 (выходы у ПР200-220 — сухие реле, 8 А @ 220 В AC).
### 🟡 Средний приоритет
7. Мониторинг связи ONI (переменные Poll_ONI1..4 = TRUE; Status_ONI1..4).
8. Светодиоды F1-F4 = Fault1..4 (индикация на корпусе ПР200).
### 🟢 Низкий приоритет (на будущее)
9. **Автоматика** по сценарию: датчик телеги (I3?) → последовательный пуск M1→M2→M3→M4 с задержкой 5 сек → контроль уровня в приямке (I4 high / I5 low) → стоп горизонтальных при заполнении приямка → доочистка 10 сек после отъезда телеги.
10. Моточасы каждого двигателя.
11. Логирование аварий с временем.
12. Удалённый мониторинг через ESP32+MAX485 на Download-порт СП307.
### ❓ Вопросы для уточнения
- Регистр 30007 в OWEN Logic — вводится как `7`, `6` или `30007`? (зависит от того, как программа считает смещение; начать с `7`, при отсутствии чтения попробовать `6`)
- На 9 систем: 9 ESP32 (по одному на корпус, 5400₽) или 3 ESP32 (по 3 системы каждый, 1800₽)?
---
## Решённые проблемы (что починили, как)
### 1. Ошибки компиляции в блоке MotorControl (16 → 11 → 12 → 0)
**Решение:** упростили блок — убрали TON-таймеры, оставили только BOOL + REAL (потом перешли на UDINT). Принцип: «простая работающая версия лучше сложной нерабочей».
### 2. ModbusRead, который ломал симуляцию
**Решение:** нашли остаточный блок ModbusRead на схеме и удалили. Симуляция OWEN Logic при наличии Modbus-блоков может валиться — для тестов проще загружать в реальный ПР200 через USB.
### 3. Перепутанные A/B на RS-485 ПР200↔ONI
**Решение:** учтено в монтаже — ПР200 A+ → ONI B, ПР200 B → ONI A+. Не меняем в проекте, меняем в кабеле.
### 4. ONI_Command копировал Run вместо импульса
**Решение:** перевели ONI_Command на детектор фронта (R_TRIG) от Reset — теперь это короткий импульс именно для записи в катушку 00008 ONI.
### 5. Куча проводов на схеме (72 на 4 двигателя)
**Решение:** сократили интерфейс блока MotorControl, сетевые переменные Modbus используются прямо внутри блока, наружу выведены только минимально необходимые сигналы. Стало ~20 проводов вместо 72.
### 6. Нельзя создать пользовательский FBD-блок
**Решение:** в OWEN Logic пользовательские функциональные блоки только на ST. НО: можно выделить FBD-элементы на главной схеме → правый клик → **«Создать макрос»** — получается переиспользуемый визуальный блок. Это и есть профессиональный путь.
### 7. Симулятор OWEN Logic не работал, не понятно где вводить переменные
**Решение:** в упрощённой версии OWEN Logic нет дерева проекта как в CODESYS. Глобальные переменные создаются через таблицу переменных и через элементы «Константа» прямо на FBD-схеме (правый клик → Вставка → Константа).
### 8. Дорогое удалённое подключение для 9 систем (RS-485↔Ethernet конвертеры по ~2500₽)
**Решение:** использовать встроенный Download-порт СП307 как Modbus RTU Slave + ESP32 с MAX485 (~600₽). Экономия ~17 100₽ на парк из 9 систем.
### 9. Сброс аварии без свободных входов
**Решение:** все 8 входов заняты ПУСК/СТОП. Сброс реализован двумя путями: (а) повторное нажатие ПУСК при активном Fault → ONI_Command импульс; (б) кнопка «Сброс» на панели СП307 → SL_Reset1..4 (рег. 524-527) → PanelReset вход блока.
---
## Полезные ссылки и команды
### Файлы проекта
- `test2.owle` — старый проект (на ПК пользователя)
- `ManureRemoval.owle` — наследие от предыдущего программиста (с заготовкой автоматики, не работает)
- `ManureRemoval_v2.owle` — текущий, переделанный с нуля
### Документация ОВЕН
- ПР200 функционал: https://owen.ru/product/pr200/functional
- ПР200 спецификации: https://owen.ru/product/pr200/specifications
- ПР200 примеры: https://owen.ru/product/pr200/primeri_primeneniya
- РП OWEN Logic версия 2.11 — приложен к проекту PDF
- Руководство ONI SFB-33 — приложен к проекту PDF (`onisfbrukov.pdf`)
### Софт
- **OWEN Logic 2.10.367.0** — основная среда (FBD), для ПР200 + СП307. **НЕ CODESYS!**
- **Конфигуратор СП3хх (SP3xx Configurator)** — для рисования экранов СП307
### Компиляция и загрузка
- Build → Compile (F7) — должно быть 0 ошибок
- Online → Загрузить (или Alt+F8 / Ctrl+F11) — выбрать USB-порт COM3..COM10
### Стандартные параметры Modbus
- COM2 Master ↔ ONI: **9600, 8N1**, период опроса 100-1000 мс, таймаут 1000 мс, 3 попытки
- COM1 Slave ↔ СП307: **9600, 8N2**, адрес ПЛК = 16
### Принципы, которые проект подтвердил
1. Делать сразу как надо, без переделок (запрос пользователя — переделать всё под Modbus-управление настройками ONI и панелью СП307, а не оставлять дискретное управление).
2. Простая рабочая версия лучше сложной нерабочей.
3. Адреса в OWEN Logic не вводятся через `%IX0.0` — I1..I8 уже сами на схеме, тащить проводом.
4. На сложных задачах макрос (FBD) выгоднее ST-блока для понимания, ST-блок выгоднее для расчётов.