Сайт Кандирала Руслана

Фото Кандирала РусланаЗдравствуйте! Меня зовут Кандирал Руслан, мне 36 лет. Я уже долгое время занимаюсь программированием в разных направлениях и решил поделиться своими наработками с интернет публикой.

Основная цель сайта - помочь людям, столкнувшимся с проблемами, которые мне удалось решить в свое время, а также выявить возможные ошибки в моих кодах.

Я ни кому не навязываю свои методы решения той или иной задачи, поэтому вместо того чтобы критиковать мою работу предложите свой вариант реализации и по средствам дискуссии мы выявим оптимальные пути развязки поставленной задачи.

Распространение содержимого сайта может осуществляться без моего согласия и без выплаты вознаграждения, но с обязательным указанием источника. За финансовую поддержку буду весьма признателен.

 
Поделиться:
0
ResKacey
16.09.2018 23:49
 
Hi Ruslan. Your modbus components works in C++Builder (Tokyo)?
Показать полностью
5
Руслан Кандирал
17.09.2018 07:13
ResKacey
 
I dont know. I do not work with C++Builder.
Показать полностью
0
Sergei Mihailov
21.08.2018 10:27
 
День добрый Руслан. У меня вопрос в следующем я правильно понял что у Вас реализован протокол modbus поверх TCP а не чистый ModbusTCP?
Показать полностью
5
Руслан Кандирал
21.08.2018 10:41
Sergei Mihailov
 
Здравствуйте. Не совсем понятен Ваш вопрос. Протокол TCP реализован на уровне системы Windows. И я использую WinAPI для передачи пакетов Modbus посредством стека протоколов TCP/IP. Modbus TCP - это формат пакета отправляемого подчиненному устройству. И он(формат пакета Modbus TCP) реализован у меня согласно официальным спецификациям.
Показать полностью
0
Sergei Mihailov
21.08.2018 11:48
Руслан Кандирал
 
Я наверное немного не правильно выразился. Извините. У Вас реализовано соеденение Modbus RTU через TCP соеденение, а я спрашивал о возможности соеденения ModbusTCP здесь присутствует небольшая разница более подробно в статье https://www.siv-blog.com/modbus-tcp-spec... . Я использую в своих проектах переходники с возможностью режима ModbusTCP. При включении режима на переходнике ModbusTCP проект перестает видеть устройство из за разности посылок, если оключаю режим ModbusTCP То все прекрасно работает. У меня реализованы проекты обмена с контроллерами ОВЕН в режиме modbusTCP с устройствами все работет, или если использовать проект на основе pscalscada для lazarus тоже все работает. Но так как я работаю с Delphi XE7 то мне более привлекателен ваш проект.
Показать полностью
5
Руслан Кандирал
21.08.2018 12:09
Sergei Mihailov
 
Вы говорите о двух разных вещах:
1) Тип связи (сеть или COM порт). У меня за это отвечают коннекторы. То есть в зависимости от того какой коннектор (KRTCPConnector или KRCOMPortConnector) вы подключите к компоненту KRModbusMaster такая и будет связь.
2) Тип протокола Modbus (TCP/RTU/ASCII). Для этого есть свойство MBType в компоненте KRModbusClient.

Для подключение через COM порт с использованием протокола Modbus RTU нужно использовать коннектор KRCOMPortConnector и в свойстве MBType указать mbtRTU.

Для подключение по сети с использованием протокола Modbus TCP нужно использовать коннектор KRTCPConnector и в свойстве MBType указать mbtTCP.

В видео я показываю разные типы связи и меняю коннектор и свойство MBType:
Показать полностью
0
Sergei Mihailov
21.08.2018 12:37
Руслан Кандирал
 
Извините сразу не заметил. Убрал автоматом подстановку из комбобокса MBType при установлении соединения. Все заработало. Спасибо за разъяснение.
Показать полностью
0
Sergei Mihailov
21.08.2018 12:29
Руслан Кандирал
 
Извините я ошибся в примере соединение автоматом ставился либо ASCII либо RTU от комбобокса убрал все заработало. Спасибо за разъяснение. Все отлично работает.
Показать полностью
0
Динар Ишмухаметов
17.05.2018 13:09
 
Доброго времени суток.В Delphi необходимо реализовать постройку графика реального процесса(с датчика на выходе) и модели данного процесса(через разностное уравнение).В связи с этим на входе реального и модельного процессов будут подаваться показания параметра давления с одного датчика.После чего по этому давлению будет происходить расчет модели на выходе на основании разностного уравнения.Второй датчик будет использован для вывода графика с реального процесса.И в итоге будут выводиться два графика один по модели другой по реальному процесса.Вопрос:как реализовать такие фиктивные датчики?Обязательно ли применять ПЛК?Какие из Ваших наработок,по вашему мнению,лучше тут применить?
Показать полностью
5
Руслан Кандирал
17.05.2018 14:04
Динар Ишмухаметов
 
Здравствуйте.

Как я понял вас интересует связь по протоколу modbus между программой на Delphi и условными датчиками.

Для имитации сигналов нужно делать отдельную программу с Modbus Slave. Но у меня в компонентах еще не реализовано Modbus Slave. В принципе, для обработки двух сигналов можно сделать простой обработчик пакетов.

Если для связи используется COM-порт, то можно использовать com0com.

Если для связи используется TCP/IP, то для имитации сигналов в программе имитаторе нужно делать TCPServer.

Для прорисовки графиков у меня компонентов нет. Недавно задача построения графика, я использовал TJvChart. Когда-то давно делал график с помощью TChart
Показать полностью
0
Динар Ишмухаметов
17.05.2018 21:22
Руслан Кандирал
 
еще вопрос,Руслан,а я могу использовать modbus RTU для осуществления передачи данных с фиктивного датчика давления на модель?
Показать полностью
5
Руслан Кандирал
18.05.2018 08:58
Динар Ишмухаметов
 
Правильно я вас понял? Датчиков у вас нет и вы хотите имитировать сигнал?

В таком случае вам нужна программа(эмулятор) которая будет имитировать сигнал и по запросу генерировать modbus slave пакеты.
Тут есть два варианта:
1) Сделать эмулятор самому. (в моем пакете компонентов modbus slave нет)
2) Скачать в интернете готовый эмулятор. (google по запросу "имитация сигнала modbus" выдает довольно много вариантов. Я такими программами не пользовался, по этому посоветовать ничего не могу)

Далее, вам нужно делать программу на Delphi которая будет получать сигналы и строить графики. Для реализации связи по протоколу Modbus RTU вам поможет пример
https://kandiral.ru/delphi/primer_pereda...

Если вам нужно использовать modbus RTU значит связь будет через COM порт. Для связи эмулятора и вашей основной программы можно использовать com0com. com0com - это бесплатная утилита которая создает пары виртуальных COM портов между которыми происходит передача данных. Создаете пару портов, к одному подключается эмулятор, а ко второму ваша программа.
Показать полностью
0
Динар Ишмухаметов
17.05.2018 20:25
Руслан Кандирал
 
Хорошо,спасибо
Показать полностью
0
Иван Иванов
10.05.2018 08:10
 
Добрый день.
Есть инструкция или возможность собрать пакет под Delphi 2007?
Показать полностью
5
Руслан Кандирал
10.05.2018 09:08
Иван Иванов
 
Здравствуйте
Нет. Такой инструкции нет.
Пакет разрабатывался под Delphi XE и проверялся под некоторые версии выше.
Можете попробовать, но как мне кажется могу возникнуть сложности. Как минимум из-за того, что Delphi 2007 не юникодовская версия.
Я думаю проще будет перейти на Delphi XE
Показать полностью
0
Иван Иванов
18.05.2018 08:59
Руслан Кандирал
 
Получается компонент для ModBus реализует только мастер устройство?
Показать полностью
5
Руслан Кандирал
20.05.2018 20:57
Иван Иванов
 
Да. Slave только планирую сделать
Показать полностью
0
Слава Тетерин
01.03.2018 12:08
 
Руслан, в говорите что KRComPort это не компонент . Тогда подскажите как пользоваться портом. Раньше я использовал AcyncFree в Borland Delphi 7. Мне нужно читать данные с порта и отправлять в порт. В идеале бы событие по приему, коннекте и дисконнекте. Может у вас пример есть?
Показать полностью
5
Руслан Кандирал
01.03.2018 12:32
Слава Тетерин
 
Если старая версия устанавливалась, то ставьте старую.
Давайте я вам вечером сделаю программу перенаправленния данных из порта в порт? Часов в 20(мск).
Показать полностью
0
Слава Тетерин
01.03.2018 09:49
 
Руслан у меня не получается установить сам ComPort. Остальные компоненты встают нормально. Делфи xe8
Показать полностью
5
Руслан Кандирал
01.03.2018 11:00
Слава Тетерин
 
Вы уточняйте почему не получается сделать то или иное действие. Делфи ведь что-то выдает (какую нибудь ошибку)?
Показать полностью
0
Слава Тетерин
01.03.2018 10:30
Слава Тетерин
 
В Файле KRAutomationRigister.pas он не прописан, прописывал его туда в ручную, не компилится. Устанавливал KRComPort в ручную (через component install) он установился, но в палитре не появился.
Показать полностью
5
Руслан Кандирал
01.03.2018 11:16
Слава Тетерин
 
KRComPort - это не компонент, он не устанавливается. Его нужно прописывать вручную.
Пример:
Можете еще посмотреть в файле KRCOMPortConnector.pas, там он используется.
Показать полностью
5
Руслан Кандирал
01.03.2018 10:55
Слава Тетерин
 
Не могу точно сказать в чем у вас проблема. Вот новая версия библиотек
https://kandiral.ru/downloads/Kandiral_0...

Она немного изменилась, и теперь под каждую версию delphi отдельный пакет. Пока есть только для XE и XE7. Я думаю вам подойдет пакет под XE7

Инструкция по установке:
1) Удаляем старую версию и все пути к ней
2) Создаем переменную (Tools->Options->Enviroment Options->Enviroment
Variables) KANDIRAL=Путь к папке библиотек
3) в "Library path"(Tools->Options->Enviroment Options->Delphi
Options->Library) добавить
$(KANDIRAL)\Release\$(ProductVersion)\$(Platform)\
$(KANDIRAL)\Resources\
4)в "Browsing path" (Tools->Options->Enviroment Options->Delphi
Options->Library) добавить:
$(KANDIRAL)\Common
$(KANDIRAL)\Automation
$(KANDIRAL)\File
$(KANDIRAL)\Media
$(KANDIRAL)\Net
$(KANDIRAL)\Utils
$(KANDIRAL)\Graphics
5) запустите Kandiral150.groupproj (для delphi XE) или
Kandiral210.groupproj (для delphi XE7)
6) Делаем build всех пакетов
7) Устанавливаем все пакеты кроме KRMedia
Показать полностью
0
Слава Тетерин
01.03.2018 11:34
Руслан Кандирал
 
Переустановил Делфи. Сделал все по вашей инструкции. Ошибка при компиляции E2199 Packeges ‘KR Common’ both contain unit ‘md5’
Показать полностью
5
Руслан Кандирал
01.03.2018 12:09
Слава Тетерин
 
Удалите из пакета KRCommon файл md5.pas
Показать полностью
0
Слава Тетерин
01.03.2018 12:26
Руслан Кандирал
 
Я удалил, такая дел ошибка возникла еще с несколькими файлами. Я их тоже удалил. Теперь вышла ошибка Е2213 Bad packaged unit format: C:\Program Files\....\KrAutomation.dcp.KRBTConnector - Expected version: 29.0, Windows Unicode (x86) Found version: 22.0, Windows Unicode(x86). Руслан у меня же устанавливалась предидущая версия, я просто не понял как пользоваться компонентом. Может установить обратно ту версию?
Показать полностью
0
maxzz
26.10.2017 13:59
 
Здравствуйте, Руслан!
Попробовал компоненты для работы с MODBUS из Вашей библиотеки. Под Delphi всё работает замечательно, но вот из-под C++ Builder в компоненте KRCOMPortConnector
при присваивании значения свойству Port вылетает ошибка линкера
[ilink32 Error] Error: Unresolved external '__fastcall Krcomportconnector::TKRCOMPortConnector::SetPortW(System::UnicodeString)' referenced from ..\MAINUNIT.OBJ,
в версиях XE2, XE5, XE10.1, причем в XE10.1 то же происходит и в случае присваивания внутри отдельного класса в паскалевском модуле, для присваивания специально написанного
[ilink32 Error] Error: Unresolved external '__fastcall Delphicode::TMyDelphiClass::SetPortW(System::UnicodeString)' referenced from ...\CPPFORM.OBJ
Я понимаю, что, скорее всего, в С++ Вuilder Вы, скорее всего, библиотеку не тестировали, но, возможно у Вас есть соображения, куда копать?
Показать полностью
5
Руслан Кандирал
26.10.2017 23:11
maxzz
 
Честно скажу в C++ Builder работать не приходилось.

Вы можете прислать(выложить на облаке) тестовый проект на C++ Builder который бы коннектился по Modbus используя мои библиотеки. Я попробую запустить его у себя.
Показать полностью
0
Andrey Postolov
26.10.2017 16:33
 
Здравствуйте, Руслан.
На Ваших компонентах практически доделал миниСкаду по ModbusRTU. Но получился затык с Coils и дискретными входами. Компонент ModbusClient у Вас поддерживает только Inputs и Holding. Пробовал ф-ции MBMReadCoils, MBMReadDiscretInputs. Код компилируется, но приложение вылетает с ошибкой. Нет ли у Вас примера работы с этими функциями? Или полнофункционального ModbusClient? Готов купить эти компоненты у Вас.
Показать полностью

Новости сайта

06.02.2018 15:53
Добавлена программа SimpleADB
Программа SimpleADB разработана в среде Delphi XE для отладки Android устройств через утилиту adb
07.10.2017 23:57
Оптимизация библиотек Modbus для контроллеров Arduino
Сделал оптимизированный вариант библиотек Modbus под Arduino, с целью снизить размер занимаемой памяти для скетча
28.03.2017 23:51
Modbus Slave RTU/ASCII для микроконтроллеров Arduino
Реализация клиентской части протокола Modbus RTU и Modbus ASCII для контроллеров Arduino и пример использования с видео обзором

Популярные статьи

Пример передачи данных по протоколу Modbus на Delphi
Пример передачи данных с контроллера ОВЕН ПЛК100 в программу на Delphi по протоколу Modbus
Modbus Slave на Arduino
Реализация клиентской части протокола Modbus RTU и Modbus ASCII для контроллеров Arduino
Набор компонентов для Delphi
Набор компонентов для Delphi включает в себя компонент для работы с файловой системой, сетью, автоматизацией и другие.