FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Архив записей
Статистика

Онлайн всего: 19
Гостей: 13
Пользователей: 6
Alex16, Николаич, aleks73, ahdrey, Agafon, golowa70

Яндекс.Метрика
Пятница, 09.12.2016, 10:37
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Главная » 2016 » Май » 28 » Выход версии 1.12
04:09
Выход версии 1.12


Вышла новая версия программы. Что нового:
Полностью переделана реализация Modbus. Я отказался от готовых библиотек и реализовал собственных код. Теперь Modbus  полностью совместим с промышленным стандартом. Реализованы четыре таблицы переменных – Coils, Discrete Inputs, Input Registers, Holding Registers. Для каждой переменной, можно задавать любой адрес (не обязательно последовательно). Реализована возможность задания адреса слейва, скорости порта и опроса конкретного слейва мастером программным путём с запоминанием этих данных в EEProm. Отлажена работа мастера. Реализована возможность  одновременной работы мастера и слейва на одном контроллере (на разных портах).  Так же теперь возможно применять в качестве порта SoftwareSerial, и необязателен пин PE-DE.
Благодаря динамически генерируемому коду одновременная работа мастера и слейва возможна даже на плате Pro-Mini.
Реализована прямая совместимость со старыми версиями – ранее созданные проекты будут работать на новой версии без переделки.
 
Просмотров: 1780 | Добавил: support | Рейтинг: 5.0/9
Всего комментариев: 14
avatar
0
1
Отличная новость!
avatar
0
2
Нет слов!
avatar
0
3
Огромная благодарность за проделанный труд
avatar
0
4
Спасибо, Сергей!
avatar
0
5
Спасибо! Один минус у мастера: команда записи HoldingReg (06) посылается только в случае изменения переменной, не реагируя на вход EN на переменной. Так как мастер не реагирует на отсутствие слейва повторной отсылкой команды записи, то могут начаться проблемы в сети с большим уровнем помех или с горячим отключение слейвов.
Каким образом можно сделать периодическую отправку команды 06 не изменяя переменную? В ПЛК есть выбор: отсылать с периодичностью или по изменению. Может привязать отсылку команды 06 еще и к ноге EN на переменной, независимо от того, изменилось значение или нет?
Еще было бы удобно видеть код команды рядом с названием регистров HoldingReg(03/06), InputReg(04), Coils(01/05), Input(02)
avatar
1
6
Я пока не решил как поступать в случае помех в сети. Есть два пути. Простой - отправлять в по каждому переднему фронту на входе En. Реализуется не сложно. Второй путь - правильный. Если не пришло подтверждение о получении команды  - повторная отсылка. В текущей реализации я в случае отправки команды на запись не разбираю полученный пакет ответа и не знаю что удачно ли записалось. В принципе реализовать разбор и повторную отправку команды на запись не сложно - но это приведёт к увеличению кода и соответственно дополнительной трате памяти контроллера которой не так уж много. Но я всё таки склоняюсь к этому варианту и наверное в следующей версии реализую его.
avatar
0
7
Ну с разбором сложно, я делал такую штуку на PIC с разбором кодов ошибок, автоповтором отсылки и т.д. А вот по EN было бы хорошо и код намного меньше.
avatar
0
8
Ну я попробую с разбором. Если сожрёт много памяти, сделаю по EN. Пока мне важно тестирование текущей реализации. Поскольку всё писал сам - боюсь будут баги.
avatar
0
9
Хотя и код-то особо не увеличится, просто использовать подпрограмму разбора посылки от команды (03) и сравнивать отправленное и пришедшее.
avatar
0
10
Ну на это и надеюсь )))
avatar
0
11
При добавлении входа или выхода в пользовательском блоке наблюдается вылет программы
avatar
0
12
Да это бага. Уже исправил. Через недельку (когда вылезут основные баги) выпущу новую версию. Как говорится исправлял одну ошибку, создал другую ))). Это тот самый случай.
avatar
1
13
Спасибо Вам Сергей!  За Ваши труды и старание ради нас.
avatar
0
14
Сергей не могли бы вы добавить в программу модуль NRF24L01. Спасибо.
avatar
FLProg © 2016
Яндекс.Метрика