Инструкция по установке компонентов на Delphi

 

  В версию компонентов от 21.01.2021 года были внесены значительные изменения, из-за чего могут возникать ошибки совместимости с предыдущими версияси
подробнее...

Для работы компонентов понадобится

JEDI API Library & Security Code Library

Набор библиотек JEDI API распаковываем в папку (путь указываю для примера, каждый может распаковывать туда куда душе будет угодно, главное что-бы путь в Environment Variables был прописан правильно):

C:\Delphi\JEDI\

Набор моих библиотек распаковываем в папку (про расположение папки см. выше):

C:\Delphi\Kandiral\

  • 1.  Запускаем Delphi
  • 2.  Заходим в меню "Component"->"Install Packages...". Если в списке есть уже установленные ранее компоненты(старая версия), удаляем их.
  • 3.  Заходим в меню "Tools"->"Options..."->"Environment Variables". Добавляем переменные(если их нет, а если есть, то проверяем правильность пути) JEDI=C:\Delphi\JEDI и переменную KANDIRAL=C:\Delphi\Kandiral
  • 4.  Заходим в меню "Tools"->"Options..."->"Library". В "Selected Platform" выбираем "32-bit Windows". В "Library path" добавляем следующие пути(если их там нет)
    • $(JEDI)\jwa\branches\2.3\Common
    • $(JEDI)\jwa\branches\2.3\Includes
    • $(JEDI)\jwa\branches\2.3\SaCMAPI
    • $(JEDI)\jwa\branches\2.3\Win32API
    • $(KANDIRAL)\Release\$(ProductVersion)\$(Platform)
    • $(KANDIRAL)\Resources
    • $(KANDIRAL)\dfm
    в "Browsing path" добавляем такие пути
    • $(KANDIRAL)\Automation
    • $(KANDIRAL)\Common
    • $(KANDIRAL)\Crypting
    • $(KANDIRAL)\File
    • $(KANDIRAL)\Graphics
    • $(KANDIRAL)\ISO
    • $(KANDIRAL)\Media
    • $(KANDIRAL)\Net
    • $(KANDIRAL)\Utils
    • $(KANDIRAL)\Web
    • $(KANDIRAL)\Windows
  • 5.  Открываем одну из групп проектов, которая соответствует вашей версии Delphi. Имя файла группы проектов имеет следующий вид Kandiral150.groupproj. Где 150 - это Package Version (подробнее см. тут Compiler Versions).
    • Kandiral150.groupproj Delphi XE
    • Kandiral160.groupproj Delphi XE2
    • Kandiral170.groupproj Delphi XE3
    • Kandiral180.groupproj Delphi XE4
    • Kandiral190.groupproj Delphi XE5
    • Kandiral200.groupproj Delphi XE6
    • Kandiral210.groupproj Delphi XE7
    • Kandiral220.groupproj Delphi XE8
    • Kandiral230.groupproj Delphi 10 Seattle
    • Kandiral240.groupproj Delphi 10.1 Berlin
    • Kandiral250.groupproj Delphi 10.2 Tokyo
    • Kandiral260.groupproj Delphi 10.3 Rio
    если в списке нет необходимого вам файла, то берем версии ниже. То есть если например у вас "Delphi 10 Seattle", а файла Kandiral230.groupproj нет, то открываем файл Kandiral220.groupproj или ниже версии, который есть.
  • 6.  В Project Manager на названии группы жмем правой кнопкой мыши и в контекстном меню выбираем "Build All"
  • 7.  После компиляции поочередно на каждом пакете жмем правой кнопкой мыши и в контекстном меню выбираем "Install"

Если всё сделано правильно, то в палитре компонентов должны появиться установленные элементы.


Library path:

$(KANDIRAL)\Release\$(ProductVersion)\$(Platform);$(KANDIRAL)\Resources;$(KANDIRAL)\dfm;$(JEDI)\jwa\branches\2.3\Common;$(JEDI)\jwa\branches\2.3\Includes;$(JEDI)\jwa\branches\2.3\SaCMAPI;$(JEDI)\jwa\branches\2.3\Win32API

Browsing path:

$(KANDIRAL)\Automation;$(KANDIRAL)\Common;$(KANDIRAL)\Crypting;$(KANDIRAL)\File;$(KANDIRAL)\Graphics;$(KANDIRAL)\ISO;$(KANDIRAL)\Media;$(KANDIRAL)\Net;$(KANDIRAL)\Utils;$(KANDIRAL)\Web;$(KANDIRAL)\Windows


При установке путей к библиотекам нужно указать платформу "32-bit Windows"
В некоторых версиях компилятор ругается на файл с картинками

Мне, во всех случаях возникновения этой ошибки, помог перезапуск Delphi.

Если перезапуск Delphi не помогает, то идём следующим путем

Первый способ. Убираем из пакета файл с картинками. На работу библиотек это не повлияет, просто сами компоненты будут без картинок. Для этого в "Project Manager" на названии пакета (например KRCommon160) жмём правой кнопкой мыши и в контекстном меню выбираем "View Source"

Удаляем строчку

{$R '..\..\Common\KRCommon.dcr'}

и перекомпилируем пакет.

Второй способ. Подключаем картинки старого формата. В каждом пакете есть файл типа "ИмяПакета.dcr", в нем содержатся картинки всех компонентов (которые я уже нарисовал). Но есть и еще dcr файлы, которые сделаны в imageedit от Delphi 7. Второй способ заключается в том, что-бы заменить новый файл с картинками на старые. Для этого в "Project Manager" на названии пакета (например KRCommon160) жмём правой кнопкой мыши и в контекстном меню выбираем "View Source"

И вместо файла KRCommon.dcr подключаем все остальные dcr файлы из папки Common

Перекомпилируем пакет. Аналогично проделываем с остальными пакетами где вылетает ошибка.

 
Поделиться:
0
S W
31.12.2021 09:39
 
Добрый день, Руслан.

Смотрю все по COM порту работают. У меня ModBus TCP устройства и Токио 10.2. Компонент с ModBus TCP корректно отработает?
Показать полностью
13
Руслан Кандирал
31.12.2021 09:50
S W
 
Здравствуйте!

Проверьте. Должно работать.
Показать полностью
0
S W
31.12.2021 12:03
Руслан Кандирал
 
Хорошо.

Установлю и отпишусь
Показать полностью
0
alex Misst
18.08.2021 20:02
 
Доброго дня!
пробовал на версиях 10.2 10.3 10.4. Если закоментировать, то неработает логирование.
Form1.KRCOMPortConnector1.OnSendAsync:=send;
Form1.KRCOMPortConnector1.OnRecvAsync:=recv;
[dcc32 Error] MonitoringUnit.pas(102): E2010 Incompatible types: 'PByte' and 'PKRBuffer'

еще при загрузке проекта на всех полях ввода пишет Error reading KRField1.Timer Property Timer not exist
Показать полностью
13
Руслан Кандирал
18.08.2021 20:12
alex Misst
 
Здравствуйте!

Как я понял, ошибка в каком-то из примеров.
Это из-за того, что пример был сделан на старой версии компонентов, где в событиях использовался тип PKRBuffer.
Нужно в процедурах send и recv изменить тип указателя на буфер с PKRBuffer на PByte
Показать полностью
0
Евгений Чистяков
20.04.2021 14:52
 
Понял, спасибо.
Показать полностью
0
Евгений Чистяков
20.04.2021 14:28
 
Алексей, добрый день. А на версию Delphi 7 возможно установить?
Показать полностью
13
Руслан Кандирал
20.04.2021 14:42
Евгений Чистяков
 
Здравствуйте!
Компоненты заточены на использование двухбайтовых строк, плюс используются некоторые элементы типа FormatSettings и др. , которых нет в Delphi 7
Показать полностью
0
Алексей Старых
30.03.2021 11:17
 
Добрый день! Пытаюсь установить 250 на 10.2. При Build all выдает: [dcc32 Fatal Error] KRGoogleSearchConsole.pas(25): F2613 Unit 'uLkJSON' not found.
Все пути в указал
Спасибо
Показать полностью
13
Руслан Кандирал
30.03.2021 12:33
Алексей Старых
 
Здравствуйте, Алексей

Да есть такая ошибка. Дело в том, что модуль uLkJSON был удален в последней версии.
Как я не отлавил эту ошибку на тестах перед загрузкой, непонятно

Походу uLkJSON остался в двух юнитак пакета KRWeb. Можно компилировать пакеты по отдельности, все кроме KRWeb, то есть не выбирать "Build All" на группе пакетов, а на каждом пакете делать Build

А я сейчас буду исправлять.

Вам спасибо!
Показать полностью
0
Алексей Старых
30.03.2021 12:55
Руслан Кандирал
 
Буду ждать исправленной версии!
Спасибо за быстрый ответ ;)
Показать полностью
13
Руслан Кандирал
30.03.2021 14:58
Алексей Старых
 
Обновил
Показать полностью
0
Алексей Старых
30.03.2021 16:00
Руслан Кандирал
 
Руслан, подскажите, по работе с вашими компонентами.
Я новичок, поэтому не судите строго...
Пытаюсь прочитать значения температуры с модуля Овен МВ110-8А (подключен к компу через преобразователь интерфейса Овен АС-4), по протоколу Modbus-RTU.
Поместил на форму KRCOMPortConnector1, KRModbusMaster1, KRModbusClient1. Выставил настройки COM порта.
В KRModbusClient1 добавил переменную, указал регистр входа.
Добавил KRField, связал его с переменной.
Запускаю проект, в поле KRField вместо температуры - ноль. Лампочка опроса в модули не мигает.
Что нужно еще сделать, чтобы прочитать температуру из модуля?

И еще в компоненте KRField пропало поле Timer которое присутствует в обучающих видио.
Как теперь задать периодичность обновления поля?

Спасибо большое за ответ!
Показать полностью
13
Руслан Кандирал
30.03.2021 17:16
Алексей Старых
 
Вот есть программа для теста
https://kandiral.ru/downloads/MBTester.z...

Там исходники и есть откомпилированный файл, то есть можно запустить программу и проверить как она работает.

Программа считывает, с заданным интервалом, один или два регистра и
отображает значение согласно заданной конфигурации

Для работы нужно:
1) Кнопка COMSets - настройки ком порта ( нужно указать порт к
которому подключен прибор и скорость передачи данных )
2) Внизу в поле Modbus Address указать modbus адрес устройства
3) В поле Index, указать номер регистра
4) В поле Interval, период обновления значения в миллисекундах
5) Нажать кнопку Connect

Если связь с устройством установится, то в двух полях слева вверху под
кнопками, должно отображаться текущее значение.

В процессе обновления можно изменять:
1) Тип значение (MCT_BYTE - один байт без знака; MCT_WORD - один
регистр без знака; MCT_SMALLINT - один регистр со знаком; MCT_DWORD -
два регистра(4 байта), без знака; MCT_INT - два регистра(4 байта), со
знаком; MCT_SINGLE - два регистра(4 байта), значение с плавающей
запятой; )
2) Read Function - функция чтения (0x03 или 0x04)
3) High Byte First - последовательность байтов
4) High Word First - последовательность регистров

Если связь будет нестабильной, то под кнопкой COMTimes можно увеличить
тайминг ReadTotalTimeoutConstant до 20 или 25

И кнопка MBMon открывает окно в котором можно посмотреть все данный
который приходят/уходят в устройства, то есть пакеты протокола Modbus
Показать полностью
0
Алексей Старых
31.03.2021 13:11
Руслан Кандирал
 
Спасибо за программу, с ней всё заработало.
У меня ещё вопрос! Как можно реализовать обмен с COM портом не по протоколу Modbus?
А например, по такому:
Связь устанавливается посредством послания запросов и получения
ответов на них. Стандартная посылка состоит из 4-х байт.
Первый байт - управляющий.
Второй содержит младший байт адреса запрашиваемой переменной.
Третий байт содержит данные.
Четвертый байт- байт контрольной суммы. (Сумма по модулю 256
первых трех).

Я только разбираюсь в ваших компонентах. Поэтому пока сложно представить, как это сделать.
Показать полностью
13
Руслан Кандирал
31.03.2021 14:12
Алексей Старых
 
Из моих компонентов вам поможет только KRCOMPortConnector
KRCOMPortConnector.Send - отправляет запрос и по Callback возвращает ответ.

Вам нужно посмотреть код файла KRModbusMaster.pas
https://github.com/kandiral/Kandiral/blo...

Там основной функционал описан в классе TKRMBThread
функция TKRMBThread.DoSendRTU отправляет данные в коннектор
а в процедуре TKRModbusMaster.ConnectorCB идет разбор ответа

Вот тут уже был вопрос по работе с коннектором
https://kandiral.ru/delphi/krconnector.p...
Показать полностью
0
Александр Куртуков
04.03.2021 08:59
 
ставил 260 на 10.3. при Build all ругается на отсутствие 'rtl'. в KRCommon.dpk все пути в library и browsing указаны
Показать полностью
13
Руслан Кандирал
04.03.2021 14:04
Александр Куртуков
 
Здравствуйте!

Как я понял ошибка выглядит как-то так : “Required package rtl not found”
Это проблема у Вас в Delphi. Подобных тем много в интернете:
https://www.google.com.ua/search?q=delph...
Показать полностью
0
301georgy
27.11.2020 22:33
 
добрый день
при "Build All"
выскакивает ошибка на строчке
_fs:=FormatSettings;
Undeclared identifier
что делать???
помогите пожалуйста
Показать полностью
13
Руслан Кандирал
27.11.2020 22:55
301georgy
 
Здравствуйте!

У Вас версия Delphi ниже XE и там нет глобальной переменной FormatSettings
Как вариант Вы можете везде где используется структура FormatSettings заменить на соответствующие глобальные переменные. То есть, в старых версия были отдельные переменные форматирования:
Сейчас все они объединены в одну структуру FormatSettings

Но учтите, что компоненты разрабатывались и тестировались под Delphi от версии XE и выше
Показать полностью
0
Сергей Гришко
02.11.2020 18:13
 
Здравствуйте, подскажи пожалуйста по следующему вопросу. Команда управления устройством содержится в 0 и 1 бите holding регистра. Как правильно с помощью ваших компонентов изменить 2 бита регистра не затрагивая другие биты?
Показать полностью
13
Руслан Кандирал
02.11.2020 19:14
Сергей Гришко
 
Здравствуйте!

Посмотрите статью и видео:
https://kandiral.ru/delphi/mini_scada_si...

Там есть пример управления битами с помощью компонентов KRVCheckBox и TKRIndVButton
Показать полностью
0
Сергей Гришко
02.11.2020 19:59
Руслан Кандирал
 
Руслан, спасибо. Читал эту статью. Скажите, правильно ли я понимаю, что мне нужно последовательно изменить каждый бит по отдельности? 2 сразу я не могу изменить?
Показать полностью
13
Руслан Кандирал
02.11.2020 20:43
Сергей Гришко
 
Вы можете напрямую работать с регистров с помощью стандартных компонентов Delphi, например по нажатию кнопки
Тут есть два момента:
1) Вам нужно позаботиться об обновлении значения, что-бы не затронуть другие биту нужно знать их значение, то есть до изменения состояния бита нужно получить текущее значение регистра. Можно задать интервал обновления KRMBRegister1.Interval:=500
2) Сделать установку значения до отправки KRMBRegister1.UpdateType:=vutBefore. Данный параметр желательно устанавливать во всех регистрах где идет работа с битами. vutBefore - говорит программе, что локальное значение регистра нужно установить до отправки его устройству.
Показать полностью
0
Alexey Efremov
08.11.2019 13:26
 
Доброго дня! Выскакивает ошибка "[dcc32 Fatal Error] KRCommon.dpk(34): E2202 Required package 'rtl' not found". Версия 10.3. Проект открываю 260.

Добавил:
Все решилось добавлением строки "$(BDSLIB)\$(PLATFORM)\release" в Library Path
Показать полностью
0
Герман Петров
29.09.2019 15:12
 
Добрый день! при скачивании каталога с компонентами файлов от 17.08.2019 в ней нет папке Release. Думал, что проблема в антивирусе, но при скачивании с других устройств этой папке нет. В чем может быть причина?
Показать полностью
13
Руслан Кандирал
29.09.2019 15:17
Герман Петров
 
Здравствуйте! Эта папка создается автоматически при компиляции компонентов.
Показать полностью

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

18.07.2021 14:30
Новая статья по экспорту Google Sheet в MS Excel
Экспорт таблиц Google Sheets в файл MS Excel с помощью Google Script, а также сохранение на Google Drive и отправка на e-mail
30.03.2021 14:53
Обновлен набор компонентов для Delphi
Пакет компонентов для Delphi обновлен до версии от 30.03.2021 г.
14.03.2021 04:54
Обновлен скрипт экспорта Google таблиц в PDF
Добавлены новые возможности при экспорте Google таблиц в PDF файл
22.01.2021 11:45
Обновлен пакет компонентов для Delphi
В пакет компонентов для Delphi было внесено большое количество изменений, касающиеся протокола Modbus и мультиязычности

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

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