На всякий случай проверил "с нуля" - на чистый комп поставил Arduino IDE, добавил библиотеки и скетчи скачав из этой темы, откомпилил и залил в чистую Ардуино Нано без Ethernet шилда, но с LCD 16x2. Всё показывает - и оригинальный скетч регулятора тока и мой MB-reg-094.
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:
Так, на рабочем компе попробовал, вобще никаких замечаний Но на экране та же история. Вечером попробую ещё поковыряться, посмотреть, что не так может быть.
Значит у меня что-то с подключением экрана. На двух экранах пробовал и на разных Arduino. A4 и A5 подключение?
Tomat7
Магистр
Черноморская губинния
240 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. Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.Dsc_0004_5. Modbus, Ethernet, SCADA и прочие "излишества". Автоматика. Пробовал компилировать и с обновлёнными библиотеками - без разницы. И правда мистика... Может конечно я каких-то тонкостей не знаю, которые всем кажутся очевидными, и что-то не так делаю
Tomat7
Магистр
Черноморская губинния
240 138
Отв.25 19 Февр. 18, 15:38
Да нет там никаких хитростей - там всё "в лоб" сделано как раз для простоты. Приложил один из старых скетчей без Ethernet'a - если не сложно, попробуй с ним дисплей "запустить".
Tomat7, пока детальки для второго блока идут из Китая пробую понять как компьютер-"базовый блок"-регулятор связываются между собой через сеть. Вопрос возник потому, что вбив IP в config.h я не увидел его в сети. Посмотрел на этом порту маршрутизатора и вижу только IP вида
на одном порту от одного устройства. Попробовал раскомментировать
//#define ETHERNET_DHCP
но тогда вобще никаких пакетов в сеть не идёт. Посмотрел, что такое Modbus TCP, по идее для коммутаторов-маршрутизаторов это должно быть просто обычное сетевое устройство?
Tomat7
Магистр
Черноморская губинния
240 138
Отв.27 20 Февр. 18, 18:53 (через 52 мин)
При включении на экране на 5 секунд должен показываться адрес - не важно статически прописанный в скетче или полученный динамически от DHCP.
baton
Доктор наук
Санкт-Петербург
648 230
Отв.28 20 Февр. 18, 19:56
Там показывает абсолютно разное. То просто 0.0.0.0, то IP из внешней сети... Когда DHCP, то просто показывает экран с датой и дальше не идёт.
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
Магистр
Черноморская губинния
240 138
Отв.30 20 Февр. 18, 23:15 (через 48 мин)
Прикладываю версию MB-reg-097. В коде изменения нет, но добавил комментарии ко многим #define.
1. Да, скетч MB-reg-094. 2. Да, модуль WIZ5100. Как у тебя на фото красный. 3-5. Да 6. В течении 10-15 минут проверю. 7. Тут нормальноСкрытый текстНастройка протокола IP для Windows
Имя компьютера . . . . . . . . . : BATON-main Основной DNS-суффикс . . . . . . : Тип узла. . . . . . . . . . . . . : Гибридный IP-маршрутизация включена . . . . : Нет WINS-прокси включен . . . . . . . : Нет
Для твоей сети нужно в 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
Магистр
Черноморская губинния
240 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
Магистр
Черноморская губинния
240 138
Отв.36 21 Февр. 18, 09:31
Modbus, Ethernet, SCADA и прочие "излишества". Автоматика. Попробуй кнопку Reset на Ардуино понажимать и посмотреть монитор порта...
Кроме того, некоторые рекомендуют питать модуль от 3.3 вольта, вместо 5. Если используешь Arduino Nano это попробовать не долго - у неё есть выход 3.3 рядом с D13.
Вообще, моргание "огоньков" (на плате и на RJ45) говорит что модуль технически исправен. 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
Магистр
Черноморская губинния
240 138
Отв.38 21 Февр. 18, 13:39
Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.
Прикладываю приукрашенную версию - MB-reg-098_beta2, алгоритм не трогал, только красоту немного навел и откоментировал #define. Честно скажу, в Ардуину не заливал и не тестировал, только что скомпилил.
UPDATE: Уже и залил, и протестировал. Да и версия другая...
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 Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.mbpoll1.JPG Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.mbpoll2a.JPG Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.mbpoll4.JPG Modbus, Ethernet, SCADA и прочие "излишества". Автоматика.