Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Modbus, Ethernet, SCADA и прочие "излишества"

Форум самогонщиков Автоматика
1 2 3 4 2
Tomat7 Магистр Черноморская губинния 235 138
Отв.20  18 Февр. 18, 11:04
Очень странно...
А в Serial Monitor что выдаёт??
Tomat7 Магистр Черноморская губинния 235 138
Отв.21  18 Февр. 18, 12:41
На всякий случай проверил "с нуля" - на чистый комп поставил Arduino IDE, добавил библиотеки и скетчи скачав из этой темы, откомпилил и залил в чистую Ардуино Нано без Ethernet шилда, но с LCD 16x2. Всё показывает - и оригинальный скетч регулятора тока и мой MB-reg-094.

IMG_20180218_122805.jpg
IMG_20180218_122805.jpg Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.
baton Доктор наук Санкт-Петербург 648 230
Отв.22  18 Февр. 18, 13:31, через 50 мин
При компиляции пишет замечания типа таких
In file included from sketchconfig.h:17:0,

                from D:РњРѕРё документушкиArduinoMB-reg-094MB-reg-094.ino:9:

D:Мои документыArduinolibrariesRegPower/RegPower.h:13:0: warning: "LIBVERSION" redefined

#define LIBVERSION "RegPower_v20171225 R="
Я не придал им значения, раз не ошибка.

Добавлено через 22мин.:

Так, на рабочем компе попробовал, вобще никаких замечаний Улыбающийся
Но на экране та же история.
Вечером попробую ещё поковыряться, посмотреть, что не так может быть.


Добавлено через 10ч. 55мин.:

Монитор порта показывает, что всё хорошо Улыбающийся
Free RAM: 973
MAC: DE:AD:BE:EF:30:1
WIZ5100 IP: 0.0.0.0
DStemp_v20180121 on pin 6
00
5446
Free RAM: 925
0: 0.00 | 1
Pnow=0
Pset=987
Pteh=0
0: 0.00 | 1
Pnow=0
Pset=0
Pteh=0

Значит у меня что-то с подключением экрана. На двух экранах пробовал и на разных Arduino. A4 и A5 подключение?
Tomat7 Магистр Черноморская губинния 235 138
Отв.23  19 Февр. 18, 11:10
A4 и A5 подключение?
Да конечно, стандартно для Arduino Nano - A4 SDA, A5 SCL. (Pro Mini так же)

На двух экранах пробовал и на разных Arduino.
Мистика какая-то.  :-\
baton Доктор наук Санкт-Петербург 648 230
Отв.24  19 Февр. 18, 12:41
С подключением экрана всё нормально.
Случайно в магазине напоролся на "Arduino Nano Sensor Shield" где уж точно ничего не спутаешь. Да и со скетчем регулятора работает.
dsc_0001_12.jpg
Dsc_0001_12. Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.
dsc_0004_5.jpg
Dsc_0004_5. Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.

Пробовал компилировать и с обновлёнными библиотеками - без разницы. И правда мистика...
Может конечно я каких-то тонкостей не знаю, которые всем кажутся очевидными, и что-то не так делаю Улыбающийся
Tomat7 Магистр Черноморская губинния 235 138
Отв.25  19 Февр. 18, 15:38
Да нет там никаких хитростей - там всё "в лоб" сделано как раз для простоты.
Приложил один из старых скетчей без Ethernet'a - если не сложно, попробуй с ним дисплей "запустить".

Для него еще нужна библиотека Dallas Temperature https://github.com/...Control-Library

Еще можно попробовать без шилда (того что с желтыми контактами), то есть подключаться напрямую к ногам Ардуино.

Добавил i2c_scanner.ino для определения адреса дисплея.
i2c_scanner.ino 2.4 Кб
reg48_old.ino 14.6 Кб
сообщение удалено
baton Доктор наук Санкт-Петербург 648 230
Отв.26  20 Февр. 18, 18:01
Tomat7, пока детальки для второго блока идут из Китая пробую понять как компьютер-"базовый блок"-регулятор связываются между собой через сеть.
Вопрос возник потому, что вбив IP в config.h я не увидел его в сети.
Посмотрел на этом порту маршрутизатора и вижу только IP вида
130.0.0.0
224.0.0.0
...

MAC адреса
00:00:02:00:00:02
00:00:F2:00:00:00
00:02:00:00:00:96
00:02:02:00:00:96
00:02:F2:00:00:96
на одном порту от одного устройства.
Попробовал раскомментировать
//#define ETHERNET_DHCP
но тогда вобще никаких пакетов в сеть не идёт.
Посмотрел, что такое Modbus TCP, по идее для коммутаторов-маршрутизаторов это должно быть просто обычное сетевое устройство?
Tomat7 Магистр Черноморская губинния 235 138
Отв.27  20 Февр. 18, 18:53, через 52 мин
При включении на экране на 5 секунд должен показываться адрес - не важно статически прописанный в скетче или полученный динамически от DHCP.
baton Доктор наук Санкт-Петербург 648 230
Отв.28  20 Февр. 18, 19:56
Там показывает абсолютно разное.
То просто 0.0.0.0, то IP из внешней сети... Когда DHCP, то просто показывает экран с датой и дальше не идёт.

Добавлено через 16мин.:

IP ведь здесь прописываем?
#ifdef ETHERNET_DHCP
  mb.config(mac);
#else
  const byte ip[] = { 192, 168, 1, 30 + macID };
  mb.config(mac, ip);
#endif
Tomat7 Магистр Черноморская губинния 235 138
Отв.29  20 Февр. 18, 22:27
IP ведь здесь прописываем?baton, 20 Февр. 18, 19:56
да, macID = ETHERNET_MACID который равен в скетче регулятора 1 - то есть (без #define ETHERNET_DHCP): MAC: DE:AD:BE:EF:30:01  IP: 192.168.1.31
если раскомментировать #define ETHERNET_DHCP, то МАС должен быть тот же, IP от DHCP сервера (если есть к нему доступ можно посмотреть на нём)

1. какой скетч залит? MB-reg-094?
2. что за модуль/шилд Ethernet? WIZ5100?
3. огоньки на плате модуля светят/моргают?
4. огоньки на гнезде RJ45 модуля светят/моргают?
5. огоньки на гнезде RJ45 свитча к которому подсоединён модуль светят/моргают?
6. скетчи из примеров (File->Examples->Ethernet) работают корректно?
7. на компе подключенном и корректно работающем в сети в которой предполагается использовать модуль в командной строке дай команду "ipconfig /all" и её результат сюда (можно в личку)

Вывод монитора порта ты уже показывал, там IP только не правильно - так бывает если если скетч скомпилен под w5100, а сам шилд не найден.
Скетч скомпиленный под encXX без шилда подвисает на минуту примерно, а потом выдает ерунду.

Пиши, разберёмся! Подмигивающий

то IP из внешней сети
Вот про это даже не знаю в какую сторону думать...  :o


Tomat7 Магистр Черноморская губинния 235 138
Отв.30  20 Февр. 18, 23:15, через 48 мин
Прикладываю версию MB-reg-097.
В коде изменения нет, но добавил комментарии ко многим #define.
MB-reg-097.zip 5.4 Кб
baton Доктор наук Санкт-Петербург 648 230
Отв.31  20 Февр. 18, 23:17, через 3 мин
1. Да, скетч MB-reg-094.
2. Да, модуль WIZ5100. Как у тебя на фото красный.
3-5. Да
6. В течении 10-15 минут проверю.
7. Тут нормально
Скрытый текстНастройка протокола IP для Windows

  Имя компьютера  . . . . . . . . . : BATON-main
  Основной DNS-суффикс  . . . . . . :
  Тип узла. . . . . . . . . . . . . : Гибридный
  IP-маршрутизация включена . . . . : Нет
  WINS-прокси включен . . . . . . . : Нет

Адаптер Ethernet Ethernet:

  DNS-суффикс подключения . . . . . :
  Описание. . . . . . . . . . . . . : Контроллер семейства Realtek PCIe GBE
  Физический адрес. . . . . . . . . : 48-5B-39-D4-30-55
  DHCP включен. . . . . . . . . . . : Да
  Автонастройка включена. . . . . . : Да
  Локальный IPv6-адрес канала . . . : fe80::74a6:a763:b950:3990%10(Основной)
  IPv4-адрес. . . . . . . . . . . . : 10.11.12.117(Основной)
  Маска подсети . . . . . . . . . . : 255.255.255.0
  Аренда получена. . . . . . . . . . : 20 февраля 2018 г. 11:06:23
  Срок аренды истекает. . . . . . . . . . : 20 февраля 2018 г. 23:16:30
  Основной шлюз. . . . . . . . . : 10.11.12.13
  DHCP-сервер. . . . . . . . . . . : 10.11.12.13
  IAID DHCPv6 . . . . . . . . . . . : 55073593
  DUID клиента DHCPv6 . . . . . . . : 00-01-00-01-1A-89-7B-18-48-5B-39-D4-30-55
  DNS-серверы. . . . . . . . . . . : 10.11.12.13
                                      8.8.8.8
                                      8.8.4.4
  NetBios через TCP/IP. . . . . . . . : Включен

Вот по поводу правильности подключения задумался.
Делал так
 Modbus, Ethernet, SCADA и прочие "излишества"
Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.

Питание и четыре проводника. Верно?
Tomat7 Магистр Черноморская губинния 235 138
Отв.32  20 Февр. 18, 23:32, через 15 мин
Подключение модуля верное. (reset не подключен)

Для твоей сети нужно в config.h поправить
#define IPBASE 10, 11, 12, 30

И тогда IP адрес модуля должен быть 10.11.12.31
Перед этим сделай с компа ping 10.11.12.31 чтобы убедиться что никакое устройство не отвечает и адрес не занят.

Можешь использовать MB-reg-097 из предыдущего поста, там понятнее коментарии, и MAC назначается чуть "правильнеe".
Если скетчи из примеров отработают корректно с шилдом, а мой скетч не заработает - пришли первые строки из монитора порта.

baton Доктор наук Санкт-Петербург 648 230
Отв.33  20 Февр. 18, 23:42, через 11 мин
Попробовал из примеров WebServer - не вижу его. Меня смущает, что на порту маршрутизатора, куда подключен модуль нет MAC-адреса. Там всплывают какие-то странные.
там IP только не правильно - так бывает если если скетч скомпилен под w5100, а сам шилд не найденTomat7, 20 Февр. 18, 22:27
И вот это даёт повод задуматься
Проводки поменяю Улыбающийся
Tomat7 Магистр Черноморская губинния 235 138
Отв.34  20 Февр. 18, 23:51, через 9 мин
Попробуй пример File->Examples->Ethernet-> DhcpAddressPrinter
B посмотри что он в монитор порта выдает.
baton Доктор наук Санкт-Петербург 648 230
Отв.35  21 Февр. 18, 01:28
B посмотри что он в монитор порта выдаетTomat7, 20 Февр. 18, 23:51
В мониторе: "Failed to configure Ethernet using DHCP". Проводки между Arduino и W5100 поменял. Поменял Arduino. Вероятнее всего что-то с модулем всё же.
Завтра ещё на другом сетевом оборудовании и кабеле попробую (бывало такое) и или дождусь китайскую посылку, или сбегаю в магазин Улыбающийся
Tomat7 Магистр Черноморская губинния 235 138
Отв.36  21 Февр. 18, 09:31
Modbus, Ethernet, SCADA и прочие "излишества"
Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.

Попробуй кнопку Reset на Ардуино понажимать и посмотреть монитор порта...

Еще как вариант, подсоедини RST Ethernet модуля на Reset Arduino. Может этого ему не хватает?
По ссылкам ниже все Reset подключают, хотя у меня два таких модуля без резета работают вполне корректно.
http://arduino.ru/...e-mogu-zapustit
https://mysku.ru/blog/aliexpress/31727.html
https://arduino-info.wikispaces.com/Ethernet
http://devicter.blogspot.ru/2013/02/web.html

Кроме того, некоторые рекомендуют питать модуль от 3.3 вольта, вместо 5.
Если используешь Arduino Nano это попробовать не долго - у неё есть выход 3.3 рядом с D13.

Вообще, моргание "огоньков" (на плате и на RJ45) говорит что модуль технически исправен.
Modbus, Ethernet, SCADA и прочие "излишества"
Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.

baton Доктор наук Санкт-Петербург 648 230
Отв.37  21 Февр. 18, 11:44
Кроме того, некоторые рекомендуют питать модуль от 3.3 вольта, вместо 5.Tomat7, 21 Февр. 18, 09:31
3.3 вольта помогло!
My IP address: 10.11.12.121.
Renewed success
My IP address: 10.11.12.121.
Tomat7 Магистр Черноморская губинния 235 138
Отв.38  21 Февр. 18, 13:39
 
Modbus, Ethernet, SCADA и прочие "излишества"
Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.


Прикладываю приукрашенную версию - MB-reg-098_beta2, алгоритм не трогал, только красоту немного навел и откоментировал #define.
Честно скажу, в Ардуину не заливал и не тестировал, только что скомпилил.

UPDATE: Уже и залил, и протестировал. Да и версия другая...  Смеющийся
Tomat7 Магистр Черноморская губинния 235 138
Отв.39  21 Февр. 18, 15:31
MBpoll

http://www.modbustools.com/download.html  простая и удобная программа для опроса модбас устройств как по RS485, так и по TCP.
Можно конфигурить таймауты и интервал опроса, умеет считать ошибки что бывает крайне полезно.
Прикладываю несколько скринов. Подсветка имён вручную и имена регистров нужно прописывать самому (а как иначае то?:)).

Управление простое и понятное.
1. Connection->Connect (или "F3" ) - выбираем TCP/IP, и указываем IP address нашего устройства, остальное можно не трогать. Жмем ОК.

2. Setup->Read/Write Definition (или "F8" ) - ID не важно, Function нам нужна 03, address - адрес первого регистра (из тех что нам нужен), оставляем "0", Quantity - сколько регистров нам нужно получить, в скетче регулятора мощности заполняются только 6 первых. Жмём Apply.

3. Смотрим картинку. :-) Регистр что на картинке обозначен как dsTemp скорее всего будет содержать -9900, но если подключён ds18b20, то должен показать температуру умноженную на 100. secUptime скорее всего будет 50, это из-за того, что нет мастера Модбаса который должен записывать в этот регистр "0" подтверждая таким образом что он жив и "контролирует контроллер". По значению этого регистра можно дабл-кликнуть, появится окно, в Value вписать "0" и нажать Send. После этого контроллер должен в этот регистр отдать свой Uptime в секундах.
mbpoll2b.JPG
mbpoll2b.JPG Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.
mbpoll1.JPG
mbpoll1.JPG Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.
mbpoll2a.JPG
mbpoll2a.JPG Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.
mbpoll4.JPG
mbpoll4.JPG Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.