Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Вы не вошли.

 Поиск | Регистрация | Вход 

03.07.2026 13:10:06
#26

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

серийники крейтов
новый 6T777689
старый 6T769623

03.07.2026 14:51:29
#27

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

ситуация следующая, если использовать только старые библиотеки то ltr43 работает, ltr11 при конфигурации выдает ошибку, но дальше работает (подозреваю что с дефолтной конфигурацией).
если заменить только ltr11api.dll то приложение падает молча, если подкинуть еще ltrapi.dll падает с Abnormal program termination

так что от вас требуется починить либо ltr11api.dll для нового ltr11, либо в новых библиотеках починить ltr43api.dll

03.07.2026 19:01:12
#28

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,409

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Кажется я понял в чем дело. Судя по всему проблема возникала из-за того, что в коде

short CRC = CalculateModbusCRC(&mDataToSend[0], 6);
mDataToSend[6] = CRC>>8;			 // Старший байт контрольной суммы
mDataToSend[7] = CRC&0x00FF;		 // Младший байт контрольной суммы

если в CRC старший бит будет 1, то при сдвиге CRC >> 8 старшая часть дополнится тоже 1 (это может зависеть от компилятора, но в Borland как и во многих сделано, что при сдвиге знакового числа старшие биты дополняются знаковым (старшим)).
В новой библиотеке действительно, если старшие незначащие биты в словах на передачу были не 0, то это могло привести к ошибкам формирования слов на передачу.
Этим и объясняется, что зависит от адреса, т.к. от адреса меняется CRC (точно проверить не могу соответствие старшего бита CRC и адреса регистра, т.к. не знаю какой у Вас DEVICE_ADDRESS)
Поправил, чтобы от старших битов корректность передачи не зависела - обновил ltrdll ( https://lcard.ru/download/ltrdll.exe - должна быть версии 1.32.45). Попробуйте взять оттуда.
Ну и если бы код был

mDataToSend[6] = (CRC>>8) & 0x00FF;	

то, по идее, должно работать и с текущей.

06.07.2026 08:59:56
#29

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Замена библиотек на новые не помогла, исправление в коде расчета CRC тоже, ошибка прежняя -4023

06.07.2026 09:05:09
#30

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

я все таки не могу понять, почему мы можем читать регистры в которых лежат значения температур, а регистры состояний при чтении получаем ошибку -4023

06.07.2026 11:07:20
#31

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,409

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

А какой именно у Вас DEVICE_ADDRESS?

06.07.2026 11:40:12
#32

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Алексей L Card пишет:

А какой именно у Вас DEVICE_ADDRESS?

#define DEVICE_ADRESS                1     // адрес ведомого устройства(ПЛК)
#define PACKET_SIZE                    8   // Размер пакета в байтах

07.07.2026 07:30:15
#33

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Добрый день, у нас в понедельник сдача установки, а старых крейтов больше нет ....

08.07.2026 13:22:50
#34

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,547

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Попробуйте консольную утилиту. В архиве находятся исходные тексты и самые свежие версии библиотек Ltrapi.dll и Ltr43api.dll. Данная утилита тупо фиксирует только статус выполнения штатной функции LTR43_RS485_Exchange() для всех доступных регистров.

08.07.2026 16:02:57
#35

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Тихомиров Сергей пишет:

Попробуйте консольную утилиту. В архиве находятся исходные тексты и самые свежие версии библиотек Ltrapi.dll и Ltr43api.dll. Данная утилита тупо фиксирует только статус выполнения штатной функции LTR43_RS485_Exchange() для всех доступных регистров.

сейчас сделаем

08.07.2026 16:12:43
#36

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

csrss_E17r4ftQvj.png
не хватает чего то

08.07.2026 16:30:24
#37

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,547

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Ошибочка вкралась... Обновил архив.

08.07.2026 17:07:18
#38

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

вот видео процесса, файл большой поэтому ссылкой на мой диск
https://disk.yandex.ru/i/6mgyD2jKn4zL5A

08.07.2026 18:15:08
#39

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,547

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Пока всё идёт отлично: мерзопакостной ошибки -4023 нет! Только обычная ошибка обмена по RS-485.
Теперь можно подправить параметры работы RS-485, чтобы они в точности соответствовали Вашим.
Это Вы можете сделать сами (все исходники есть), либо присылайте конфигурационные параметры мне.
В последнем случае пришлите также и Ваш вариант функции расчёта CRC: CalculateModbusCRC().

Вчера 09:11:55
#40

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

// Функция вычисляет CRC для протокола MODBUS
unsigned short CalculateModbusCRC(short *data, int datasize)
{
	unsigned char uchCRCHi = 0xFF;
	unsigned char uchCRCLo = 0xFF;
	unsigned char uIndex;

	while(datasize--)
    {
		uIndex = uchCRCHi ^ *data++; /* calculate the CRC */
        uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
        uchCRCLo = auchCRCLo[uIndex];
	}

	return (uchCRCHi << 8 | uchCRCLo);
}
	// Настройки портов ввода-вывода
	    FLTR43->IO_Ports.Port1 = 0;
    	FLTR43->IO_Ports.Port2 = 0;
    	FLTR43->IO_Ports.Port3 = 0;
    	FLTR43->IO_Ports.Port4 = 0;
    	// Определяем режимы формирования меток
    	FLTR43->Marks.SecondMark_Mode = 0;
    	FLTR43->Marks.StartMark_Mode = 0;
    	// Настройки интерфейса RS-485
	    FLTR43->RS485.FrameSize = 8;
    	FLTR43->RS485.Baud = 115200;
    	FLTR43->RS485.StopBit = 0;
    	FLTR43->RS485.Parity = 1;//0;
    	FLTR43->RS485.SendTimeoutMultiplier = 10;
    	FLTR43->RS485.ReceiveTimeoutMultiplier = 20;
Вчера 09:15:29
#41

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

единственное отличие в параметрах конфигурации порта, я увидел это

hLtr43.RS485.Parity							= 0;				// Проверка четности отключена

у нас в этом параметре 1

Вчера 12:13:45
#42

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,547

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

1. Обновил архив с консольной утилитой.
2. Внёс следующие изменения:
- hLtr43.RS485.Baud = 115200;       // Скорость обмена
- hLtr43.RS485.Parity = 1;               // Проверка четности включена
- новая функция расчёта CRC: CalculateModbusCRC()
- таблицу коэффициентов auchCRCHi[] и auchCRCLo[] для этого CRC взял из спецификации MODBUS на стр.43

Пробуйте...

Вчера 13:46:10
#43

Участник
Здесь с 27.09.2023
Сообщений: 53

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

photo_2026-07-09_14-44-16.jpg

тестовая утилитка заработала

Сегодня 12:30:35
#44

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,547

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Теперь с уверенностью можно утверждать, что  Ваша программа тоже должна отрабатывать без ошибок.
Ведь в консольной утилите используется практически слепок Вашей функции ReadRegisterModbus().
Также Вашей программе необходимо обязательно 'скормить' LTR библиотеки c версией не ниже 1.32.45.
Кстати, в консольной утилите, для острастки, делается проверка версий используемых библиотек ltrapi.dll и ltr43api.dll.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон: +7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Мы работаем с юридическими и физическими лицами, пожалуйста, прикладывайте реквизиты при оформлении заказа
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск