PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разработка программ (http://pccar.ru/forumdisplay.php?f=27)
-   -   Обкатка диагностической программы для Toyota - Тестер ECU JDM (http://pccar.ru/showthread.php?t=11362)

GASCHE 15.06.2011 09:26

Цитата:

Сообщение от Skokoff (Сообщение 186873)
В итоге вычислил что такая штука происходит при посылке запроса 0180!
Может кто сталкивался с таким или просто мысли какие есть?

А можно выложить несколько ответов о поддерживаемых PIDах до значения 0180 например 0120 0140 0160 и после 01A0 01С0.

Valentin8080 15.06.2011 10:05

Цитата:

Сообщение от тсж39 (Сообщение 187109)
для Skokoff:
прочти приложение ,может найдешь ответы на интересующие вопросы.

Да в общем все верно написано.

Skokoff 15.06.2011 16:25

Вложений: 1
Цитата:

Сообщение от GASCHE (Сообщение 187137)
А можно выложить несколько ответов о поддерживаемых PIDах до значения 0180 например 0120 0140 0160 и после 01A0 01С0.

во вложении файл "130611_223633вырвал флешку.txt"

это запрос рилтайма всех пидов подряд моде 01. без 0180, но до него один фиг не дошло и глучкнуло на заведенную. лог незаконченый - как только коолбаснуло двиг, то сразу вырвал флешку. видимо между 6D и 73 есть ещё глючный пид.
лог подкоректирован - убраны строки с запросами без ответов и ненужные строки типа "Data: ...".

Цитата:

Сообщение от Valentin8080 (Сообщение 187138)
Да в общем все верно написано.

Видимо я плохо сформулировал свою мысль.
Главный вопрос - как определяется способ расшифровки ответа еку, по содержанию строки в инишнике или по её положению в разделе?

Например вот класическое начало для тоёты:
--- раздел "инф об эку"-----------
1. 01 00 -иниц 5baudinit
2. 10 00 - начало сеанса связи
3. 01 1C -опред типа адаптера
4. 01 D3 -ID ECU
5. 01 00 - определить поодер. пиды для 01 00
6. 01 20 - для 01 20
--------------
Если я пеменяю местами строки 4 и 5 останентся результат тем же или фиг?
Если я добавлю строку 7:
7. 01 05
что появится в окне "инф об эку"? ничего? или значение температуры будет интерпретировано как поддерживаемые пиды?

тсж39 15.06.2011 18:28

для Skokoff:

TxD(Эхо):82 13 F1 01 B0 37
RxD:84 F1 13 41 B0 F4 01 6E

для 01 B0 ответ F4 01 --1111.0100.0000.0001
теперь считаешь:
0-это не поддерж.пид
1-это поддерж.пид
получается: 01 B0 -поддерживает пиды: B1.B2.B3.B4.B6.C0
так расшифровываются поддерживаемые пиды.

GASCHE 15.06.2011 18:58

К сожалению, у меня нет статистики, но смотрим "130611_223633вырвал флешку.txt" TxD(Эхо):82 13 F1 01 00 и ответ RxD:86 F1 13 41 00 BF 9F B1 00, т.е. поддерживаются 01, 03, 04, 05, 06, 07, 08, 09, 0C, 0D, 0E, 0F, 10, 11, 13, 14, 18 Здесь вроде все нормально кроме 03 PID на который нет ответа, но среди поддерживаемых нет и 20 PID, т.е. по идее мы на этом должны остановиться.
Однако запрос 20 есть TxD(Эхо):82 13 F1 01 20 и на него получен странный ответ RxD:84 F1 13 41 20 F4 01 длинной 4 байта вместо 6. Что в этом случае поняло ECU и что ответило?

тсж39 16.06.2011 00:22

для GASCHE

01 00------ BF 9F B1 00
1011.1111.1001.1111.1011.0001.0000
01, 03, 04, 05, 06, 07, 08, 09, 0C, 0D, 0E, 0F, 10, 11, 13, 14, 18
01 20------ F4 01
1111.0100.0000.0001
21.22.23.24.26.30

TxD(Эхо):82 13 F1 01 03 8A
RxD:83 F1 13 41 03 02 CD
Data:41 03 02
вот от моей машины ответ пид 01 03 дает ответ 02

почему у него нет ответа на 01 03, хотя он поддерживается не знаю

пид 01 00---поддерживает с 0101 до 011F, 20 в него не входит,
а 01 20 поддерживает с 0121 до 0130, 30 в него входит
если я не ошибаюсь то только 0100 поддерживает до 1F, а 01 20, 01 30 и следующие захватывают и начало следующего,то есть 30. 40.... и т. д.

00-1F-требуют 4байта, можно перебрать 32 пида
21-30-нужно всего 2 байта, что бы перебрать 16 пидов

Skokoff 16.06.2011 02:10

GASCHE
ты прям мои мысли читаешь. озадачено точно такимиже вопросами про заморочки с пид 20. кстати, tecu расшифровала этот короткий ответ как поддерживаемые пиды. Вообще ты, наверное, обратил внимание, что есть ещё ряд пидов которые не стыкуются со списком "поддерживаемых".

[тсж39]
пид 01 00---поддерживает с 0101 до 011F, 20 в него не входит
01 20 поддерживает с 0121 до 0130, 30 в него входит - откуда инфа по кол-ву и что входит а что нет?
Покрайней мере по стандартному kwp2000 всё не так. Пиды порублены блоками по 32, а не по 16. Запрос на нулевой из блока даёт список поддерж пидов в этом блоке и в том числе "ссылку" на следующий блок. Хотя из фактов видно что тоёте на ето пох или можно это объяснить различием между kwp и собственным протоколом тоёты. У тебя случаем нету описания протокола именно тоёты?

GASCHE 16.06.2011 10:23

Цитата:

Сообщение от тсж39 (Сообщение 187310)
вот от моей машины ответ пид 01 03 дает ответ 02

Я это знаю, просто отметил выпадение у него этого PID из общего правила.
Цитата:

Сообщение от тсж39 (Сообщение 187310)
00-1F-требуют 4байта, можно перебрать 32 пида 21-30-нужно всего 2 байта, что бы перебрать 16 пидов

До сих пор думал что правила для того и создаются чтоб их выполнять :) Смотрим у Valentin8080 в программе TECU\PIDS\Toyota\Powertrain\PIDS.ini расшифровку пида 0130 - # of warm-ups since codes cleared думаю, она несколько отличается от 0120 - Поддерживаемые пиды 21-40.
Цитата:

Сообщение от Skokoff (Сообщение 187323)
Хотя из фактов видно что тоёте на ето пох или можно это объяснить различием между kwp и собственным протоколом тоёты.

А может это мы, по незнанию так толкуем факты, а TOYOTA смотрит и улыбается :)
Цитата:

Сообщение от Skokoff (Сообщение 187323)
У тебя случаем нету описания протокола именно тоёты?

:smile1:

Valentin8080 20.06.2011 07:40

Цитата:

Сообщение от Skokoff (Сообщение 187215)
Видимо я плохо сформулировал свою мысль.
Главный вопрос - как определяется способ расшифровки ответа еку, по содержанию строки в инишнике или по её положению в разделе?

Например вот класическое начало для тоёты:
--- раздел "инф об эку"-----------
1. 01 00 -иниц 5baudinit
2. 10 00 - начало сеанса связи
3. 01 1C -опред типа адаптера
4. 01 D3 -ID ECU
5. 01 00 - определить поодер. пиды для 01 00
6. 01 20 - для 01 20
--------------
Если я пеменяю местами строки 4 и 5 останентся результат тем же или фиг?

порядок запросов, кроме первых двух (01 00 и 10 00) не имеет значения.

Цитата:

Сообщение от Skokoff (Сообщение 187215)
Если я добавлю строку 7:
7. 01 05
что появится в окне "инф об эку"? ничего? или значение температуры будет интерпретировано как поддерживаемые пиды?

ничего не будет

Запросы вида 01 00, 01 20, и тд расшифровываются как в мануале квп, но смотрится еще размер ответа (то есть если в ответе 2 байта данных, то это интерпретируется как 16 пидов).

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

Valentin8080 20.06.2011 17:22

Цитата:

Сообщение от тсж39 (Сообщение 186893)
для Валентина:

опробовал новую версию по Daihatsu
теперь ошибки расшифровывает правильно
нашел несколько ошибок в работе программы:
1. В словах Daihatsu надо изменить "X" на "H"-везде.
2. Надо в файл Daihatsu.ini добавить пид 30 00,а то не показывает
поддерживаемые пиды для сид 30Н.
3. Пид 1А 00 заменить на 1А, с нулями не берет.

Снятая информация в приложении:

Отпишись как сейчас в новой версии все. Лучше с логами, особенно инфо о ецу.

тсж39 20.06.2011 19:01

для Валентина:
сегодня или завтра сделаю.

тсж39 21.06.2011 12:01

Диагностика Daihatsu Terios KID
 
Вложений: 1
для Валентина:

снял логи по Daihatsu, все в приложении
infoecu только в логах , так как infoecu.txt накладываются один на другой
и остается только последний, берет адреса 10,29,32,58 может и еще какие,
не знал что еще попробовать.

avante 21.06.2011 14:53

Добрый день уважаемые нужна ваша помощь, разбираюсь в протоколе для тойоты (Chaser 100 двиг 1G-FE beams) примирительно для платформы Arduino(avr). На данный момент интересует сама инициализация (fast init), почитал описание протокола для тойоты(очень и очень кратко на одном листе) от el66 и набросал скетч, который наглядно показывает, что я понял из прочитанного. Скорее всего я что-то перепутал или забыл, помогите пожалуйста.
PHP код:

byte iso_init()
{
  
byte b;

  
digitalWrite(K_OUTHIGH);      // Даём к-лайну 1 на 2 секунды
  
delay(2000);

  
// WakeUp сигнал
  
digitalWrite(K_OUTLOW);       // Опускаем к-лайн в 0 на 35 секунд
  
delay(35);
  
digitalWrite(K_OUTHIGH);       //  Снова поднимаем до 1 на 15 секунд
  
delay(15);
  
  
Serial.begin(9600);            // Устанавливаем скорость в 9600 бод
// Посылка запроса на установку связи, побайтово
  
iso_write_byte(0x81);          // Тут вроде все ясно 0х80 + datalen
  
iso_write_byte(0x13);            // Адрес ECU, очень надеюсь что он 0x13 у меня
  
iso_write_byte(0xF0);            // Тут вообще засада ))) как узнать адрес мой ардуины?
  
  
iso_write_byte(0x81);            // SID запроса на соединение
  
iso_write_byte(0x05);            //Контрольная сумма

// Читаем что идет в ответ  
  
iso_read_byte(&b);            // Заголовок пропускаем потому как он нам не интересен
  
iso_read_byte(&b);
  
iso_read_byte(&b);
  
  
iso_read_byte(&b);            //    Сам ответ!! Очень ожидаем там увидеть 0xC1
  
if (!=0xC1) {
                return 
1;
                }
  
iso_read_byte(&b);            // битовая 
  
iso_read_byte(&b);            // маска
  
iso_read_byte(&b);            // Контрольная сумма.. пока тоже не интересно
  
  
delay(200);                     //ждем 200мс
  
 // Посылаем запрос на возможность диагностического режима
  
iso_write_byte(0x82);          // 
  
iso_write_byte(0x13);            // Заголовок как обычно
  
iso_write_byte(0xF0);            // 
  
  
iso_write_byte(0x10);            //Запрос диагностики
  
iso_write_byte(0x00); 
  
  
iso_write_byte(0x95);            //Контрольная сумма
  
  //И так же ждет положительного ответа ввиде 0х50
  
iso_read_byte(&b);            // Заголовок пропускаем потому как он нам не интересен
  
iso_read_byte(&b);
  
iso_read_byte(&b);

  
iso_read_byte(&b);
  if (
!=0x50) {                            
                return 
1;
                }
  
iso_read_byte(&b); 
  
delay(200);                     //и опять спим 200мс

    
return 0;



Skokoff 22.06.2011 02:07

Валентин, привет. Возможно ли в логе TECU в начале каждой строки добавить системное время с милисек? И убрать строчку "DATA:"?
Мне кажется это было бы полезно. Подробные аргументы могу изложить.

ank0l0g 22.06.2011 10:39

День добрый!
Не подскажите почему файлы профилей из Profile_71_.rar не хотят корректно работать с новой весией программы.
Пример. Беру файл профиль 13050.ini копирую его в папку с программой. Запускаю, выбираю свой профиль, ругается "'COM2' is not a valid integer value". Начинаю сравнивать содержимое профилей моего и тех что идет с прогой. Вторая строчка в моем профиле (из файла Profile_71_.rar) "Powertrain (двигатель, коробка)" отсутствует в профилях что идут с прогой. Удаляю данную строку и получаю уже новую ошибку "'8F' is not a valid integer value".
Удаляю данную строку с параматром 8F и уже новая ошибка и так далее.

Пробовал другие профили, такая же проблема.
Может тогда не стоит выкладывать файл профилей Profile_71_.rar или его необходимо поправить.

lecsa 22.06.2011 10:50

Ну ты же читал в шапке, что старые профили новой прогой неподдерживаются. Кто то до сих пор юзает старые версии (1.х.х.х) программы -вот для них профили и пойдут. Для новых версий, нужно создать профиль под себя или пользовать общие профили. СОМ хоть нужный выбираешь?

ank0l0g 22.06.2011 11:11

Дело не в том какой COM, а в том что "Начинаю сравнивать содержимое профилей моего и тех что идет с прогой. Вторая строчка в моем профиле (из файла Profile_71_.rar) "Powertrain (двигатель, коробка)" отсутствует в профилях что идут с прогой."

А нельзя ли зделать так что бы после работы FindECU_1.0.0.2d_ создавался файл профиля? А то он показывает какие-то данные и потом надо их каким то образом запихать в собственный ini файл.

Reccer 22.06.2011 14:09

Всем здравствуйте! Такая проблема: авто Camry 5sfe 2000г. американка, не могу соединиться с машиной через USB->K-line переходник. ECU, думаю хочет инициализацию 5baud, но м/c USB->COM преобразователей не поддерживают такую скорость. Выходит подключиться можно только через хард COM порт?

lecsa 22.06.2011 15:54

Для ank0l0g
Цитата:

Сообщение от Valentin8080 (Сообщение 187621)

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

Наверное этот ответ устроит?

lecsa 22.06.2011 15:58

Цитата:

Сообщение от ank0l0g (Сообщение 187924)
Дело не в том какой COM, а в том что "Начинаю сравнивать содержимое профилей моего и тех что идет с прогой. Вторая строчка в моем профиле (из файла Profile_71_.rar) "Powertrain (двигатель, коробка)" отсутствует в профилях что идут с прогой."

А нельзя ли зделать так что бы после работы FindECU_1.0.0.2d_ создавался файл профиля? А то он показывает какие-то данные и потом надо их каким то образом запихать в собственный ini файл.

Еще, прога которая поддерживала старые профили имела другой алгоритм работы, новая прога, создана на "новом движке" поэтому и профили друк к другу неподходят.

lecsa 22.06.2011 16:40

Вложений: 1
Сегодня мучал заводскую шевроле лачетти 1.4, коннектился прогой "шевроле эксплолер" но меня не вдохновила работа графиков ЛЗ но дату показывала большую. Законектился TECU под обд-14200, зонд запрыгал как надо. Создал профиль. Профиль получился скудный. Вот бы пидов добавить!может быть можно пиды выловить?

lecsa 23.06.2011 12:10

Вложений: 1
Мужики, ну подскажите чё делать то по панели, все динамические цифры сдвинуты. Менял разрешение -не помогает. На стац компе -все нормально. На нетбуке вот такая фигня. Неудобно блин.

Valentin8080 24.06.2011 08:35

Цитата:

Сообщение от Skokoff (Сообщение 187899)
Валентин, привет. Возможно ли в логе TECU в начале каждой строки добавить системное время с милисек? И убрать строчку "DATA:"?
Мне кажется это было бы полезно. Подробные аргументы могу изложить.

Добавил в новой версии. Сразу открылась интересная вещь:
1. Время между запросами с K-Line адаптером ~100ms
2. Время между запросами с ELM327 адаптером ~500ms

Так что думаем что покупать :)

MiD_E34 24.06.2011 12:15

Цитата:

Сообщение от Valentin8080 (Сообщение 188115)
Добавил в новой версии. Сразу открылась интересная вещь:
1. Время между запросами с K-Line адаптером ~100ms
2. Время между запросами с ELM327 адаптером ~500ms

Так что думаем что покупать :)

Ну так понятно - ЭЛМ же еще через свой внутренний процессор с микрокодом пропускает...
Кстати - разобрался со своими подвешиваниями системы тойотовской панелью - на диске где-то была ошибка - прогнал скандиском и все стало нормально

тсж39 25.06.2011 13:52

диагностика Toyota Sienta
 
Вложений: 1
проверил последнюю версию
снял по Сиенте все что можно
информация в приложении:

evoloschenko 26.06.2011 07:39

Уважаемые создатели программы,
трудно определить какой из протоколов ECU подходит к определенной марке и модели автомобиля TOYOTA (приходится перебирать все протоколы) Если возможность параллельно существующему выбору протокола ECU сделать, может быть, подменю с автоматическим выбором подходящего протокола (или вариантов подходящих протоколов) путем указания марки, модели и возможно года выпуска автомобиля
Вообщем для облегчения работы с данной программой

Valentin8080 26.06.2011 08:29

Цитата:

Сообщение от evoloschenko (Сообщение 188259)
Уважаемые создатели программы,
трудно определить какой из протоколов ECU подходит к определенной марке и модели автомобиля TOYOTA (приходится перебирать все протоколы) Если возможность параллельно существующему выбору протокола ECU сделать, может быть, подменю с автоматическим выбором подходящего протокола (или вариантов подходящих протоколов) путем указания марки, модели и возможно года выпуска автомобиля
Вообщем для облегчения работы с данной программой

Для автоматического определения протокола и настроек требуется огромная база данных по всем машинам тоёты на предмет какой протокол в них используется, и это характерно диллерской программе, в написании которой используется документация фирмы тоёта. Естественно у меня такой документации нету.
Здесь же пошли другим путем - каждый сам ищет у себя какая разновидность протокола используется у него и выкладывает на форум. В этом суть форума :)

тсж39 28.06.2011 12:40

ISO-1941,ISO14230
 
вопрос Валентину

подается ли в программе
20 для установки соединения
46 03 перед запросом

Установка соединения
Порядок установки соединения:
Отправка:
20
Приём:
FF

Выбор протокола
ISO 9141:

Отправка:
42, 02, adr, где: adr - адресный байт (обычно 33 hex)
Приём:
02, К1, К2, где К1, К2 - ключевые байты ISO
Или:
82, XX, XX (ошибка инициализации ISO 9141)

ISO 14230 (быстрая инициализация):

Отправка:
46, 03, R1, R2, R3, R4, R5, где: R1 ÷ R5 - сообщение о начале запроса ISO 14230 на установку соединения, обычно R1 ÷ R5 = С1, 33, F1, 81, 66
Приём:
S1, S2, ……… - сообщения о начале ответа ISO 14230 на установку соединения

Могут передаваться последовательно более одного ECU. В качестве ответа может использоваться отрицательный код ответа.

Типичный положительный ответ выглядит следующим образом: S1, S2, ……. = 83, F1, 10, С1, Е9, 8F, BD

ISO 14230 (медленная инициализация): Аналогично ISO 9141

Valentin8080 28.06.2011 13:49

Цитата:

Сообщение от тсж39 (Сообщение 188468)
вопрос Валентину

подается ли в программе
20 для установки соединения
46 03 перед запросом

Это не ISO протокол. Ты наверное смотришь протокол общение с девайсом наподобие ELM327. Даже скажу точно - BR16F84. Не вижу смысла поддерживать данный девайс, так как стоимость ELM327 сейчас доходит до 400 руб на www.ebay.com

тсж39 28.06.2011 14:14

понял, ты прав

тсж39 28.06.2011 14:42

появится ли в программе возможность прямого доступа
к памяти EEPROM ECU (запись,чтение)

Valentin8080 28.06.2011 14:59

Цитата:

Сообщение от тсж39 (Сообщение 188480)
появится ли в программе возможность прямого доступа
к памяти EEPROM ECU (запись,чтение)

Ну если тебе охота экспериментировать такими вещами - "снимай протокол" :) Я лично свой ECU не хочу делать подопытным кроликом.

тсж39 28.06.2011 16:49

вопрос Валентину

07
13 FF 00
A5 98 01 --что означает эта строка-очистка памяти?,А5-ПИД,9801-?адрес подпрограммы стирания памяти или адрес начала области стирания?
49
01 00
10 00
поэтому был предыдущий вопрос

R2D2 30.06.2011 10:02

Вложений: 1
спасибо смог подключиться авто toyota allex 10.2004
цеплял через elm327

Valentin8080 01.07.2011 12:40

Цитата:

Сообщение от тсж39 (Сообщение 188492)
вопрос Валентину

07
13 FF 00
A5 98 01 --что означает эта строка-очистка памяти?,А5-ПИД,9801-?адрес подпрограммы стирания памяти или адрес начала области стирания?
49
01 00
10 00
поэтому был предыдущий вопрос

Ну на это только кто нить из корпорации тоёта сможет ответить :)

тсж39 01.07.2011 14:36

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

0000003085: TxD(Эхо):82 13 F1 01 7D 04
0000003085: RxD:86 F1 13 41 7D 08 2B 00 02 7D
если это возможно

Valentin8080 01.07.2011 18:16

Цитата:

Сообщение от тсж39 (Сообщение 188713)
не понятно, что дает время в начале лога,

Не понял вопроса, но это время с начала открытия ком-порта в милисекундах. А далее - на каждом пакете время приема пакета. Напомню, что в лог пишется эхо передачи, а не сама передача. Поэтому время приема TxD(эхо) и RxD одинаковое. Это один пакет, а далее в программе он уже разделяется.

Цитата:

Сообщение от тсж39 (Сообщение 188713)
для лучшей читаемости данных в ответе их бы подсветить
каким нибудь фоном или как то выделить, например

0000003085: TxD(Эхо):82 13 F1 01 7D 04
0000003085: RxD:86 F1 13 41 7D 08 2B 00 02 7D
если это возможно

Не думаю, что это хорошо, так как при просмотре и редактировании пользуюсь блокнотом.

karamba 01.07.2011 21:11

ездил тут по трассе... Если полностью убрать с педали газа ногу, форсунки полностью перестают лить бензин, следовательно получаем моментальный расход "?". Отсюда погрешность в вычислении среднего расхода. В городе эта погрешность выше... Калибровку расхода делал по трассе, в городе врать начинает (10,5 реальный расход, против 14 по компу в городе. По трассе до сотых сходится)

klay 02.07.2011 03:19

Ну, если полностью убрать ногу с педали газа, форсунки не перестают лить бензин. Режим отсечки включается по нескольким критериям. Учитывается нагрузка на двигатель, скорость и еще чего-то там. Т.е. только в тех случаях, когда нужно создать режим торможения двигателем. По крайней мере на Ниссанах QG-серии так.

МОМЕНТАЛЬНЫЙ расход ты получаешь при любом режиме. Мож ты имел в виду МИНИМАЛЬНЫЙ?

Я не пробовал делать калибровку в проге, т.к. катаюсь с МУЛЬТИТРОНИКСОМ. Так вот мультитрониксу совершенно все-равно, какой режим езды - городской или по трассе. Расход показывает ОДИНАКОВО ТОЧНО, погрешность максимум 1-2%.

Valentin8080 02.07.2011 05:01

Цитата:

Сообщение от karamba (Сообщение 188754)
ездил тут по трассе... Если полностью убрать с педали газа ногу, форсунки полностью перестают лить бензин, следовательно получаем моментальный расход "?". Отсюда погрешность в вычислении среднего расхода. В городе эта погрешность выше... Калибровку расхода делал по трассе, в городе врать начинает (10,5 реальный расход, против 14 по компу в городе. По трассе до сотых сходится)

Отсечка топлива учитывается к сожалению только у тоёт. А врать скорей всего начинает, когда очень часто движешься с маленькой скоростью (в пробке например).


Часовой пояс GMT +4, время: 10:02.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot