Каталог
Зателефонуйте мені
Каталог

Як з'єднати SIMATIC з транспортним засобом за допомогою PN/J1939 LINK

Як з'єднати SIMATIC з транспортним засобом за допомогою PN/J1939 LINK
Автор: Andriy Savechka Опубліковано: 11.10.2024 Переглядів: 458 Коментарів: 2

Нещодавно наші інженери з A2M допомогли великій нафтовій компанії з інтеграцією J1939 у контролер Siemens S7-1200 в TIA Portal для роботи на вантажівці MAN. Завдяки шлюзу SIMATIC PN/J1939 LINK, який забезпечує зв'язок між мережами PROFINET і J1939, все вийшло як треба. Нижче коротка історія успіху, як інтегрувати J1939 у TIA Portal.

Історія виникнення

Протокол J1939 має свої витоки в автомобільній галузі, зокрема в комерційних і важких транспортних засобах. Його розробила організація Товариство інженерів автомобільної промисловості (SAE) як стандарт для зв’язку між різними компонентами автомобілів. У 1980-х і 1990-х роках електронні системи стали все більш поширеними у транспортних засобах, і виникла потреба в єдиній системі комунікації для контролю та діагностики різних елементів. До появи J1939 кожен виробник мав свої рішення, що ускладнювало інтеграцію та взаємодію між різними системами.

Основою для цього протоколу стала технологія CAN (Controller Area Network), яку розробила компанія Bosch у 1980-х роках. CAN здобула популярність завдяки надійності та можливості працювати з кількома пристроями без необхідності використання головного контролера. Вже на початку 1990-х SAE адаптувало CAN до потреб комерційних транспортних засобів, створивши J1939. Цей новий протокол був розроблений для важких умов експлуатації — вантажівок, автобусів, будівельної та сільськогосподарської техніки.

J1939 не тільки полегшив комунікацію між ключовими системами транспортного засобу, такими як двигун, трансмісія, гальма і кондиціонер, але й дозволив стандартизувати діагностику. Це значно спростило обслуговування та виявлення несправностей. Крім того, завдяки протоколу забезпечується сумісність між компонентами різних виробників, що стало вагомою перевагою для індустрії.

На сьогодні J1939 широко використовується у всьому світі. Він є важливим стандартом у сфері комерційного транспорту та промислової техніки, забезпечуючи надійний зв'язок між різними електронними системами та полегшуючи їхнє обслуговування.

Топологія шини J1939

Топологія J1939 базується на мережі Controller Area Network (CAN) і використовується в автомобільних і промислових системах для зв'язку між різними компонентами. Основні аспекти топології J1939 включають:

  1. Шина CAN: J1939 використовує стандартну шину CAN для передачі даних, що забезпечує високу швидкість і надійність зв'язку між пристроями.

  2. Мережеві вузли: Кожен пристрій у мережі, такий як двигун, трансмісія або система контролю, є вузлом, який може надсилати та отримувати повідомлення.

  3. Канали зв'язку: Зв'язок здійснюється за допомогою повідомлень, які мають визначений формат і структуру. J1939 визначає, як дані упаковані у повідомлення і як вони передаються між вузлами.

  4. Параметричні групи: Для організації даних J1939 використовує параметричні групи (PGN), які визначають, які дані передаються і їх призначення.

  5. Ідентифікація пристроїв: Кожен вузол має унікальний ідентифікатор, що дозволяє відрізняти різні пристрої в мережі.

Структура пакета даних

Повідомлення в протоколі J1939 передаються через шину CAN і мають фіксовану структуру. Кожне повідомлення складається з кількох ключових елементів:

 

1. Ідентифікатор повідомлення: Це 29-бітне поле, яке містить важливу інформацію про повідомлення. Воно включає:

  • Priority (Пріоритет): 3-бітове поле, яке визначає пріоритет повідомлення. Чим нижче значення, тим вищий пріоритет.
  • PGN (Parameter Group Number): 18-бітове поле, що визначає функцію повідомлення. PGN описує, які параметри передаються і які системи їх повинні обробити.
  • Source Address (Адреса джерела): 8-бітове поле, що ідентифікує пристрій, який відправляє повідомлення.
  • Destination Address (Адреса призначення): (може бути частиною PGN) визначає, хто має отримати повідомлення. Це може бути конкретний пристрій або група пристроїв.

2. Дані: Кожне повідомлення J1939 може містити до 8 байт даних. Ці дані кодують інформацію про роботу системи, наприклад, швидкість двигуна, температуру, тиск тощо. Тип даних визначається за допомогою SPN (Suspect Parameter Number), який ідентифікує конкретний параметр у повідомленні.

3. Контроль циклічності: CAN забезпечує контроль цілісності даних через перевірку CRC (Cyclic Redundancy Check), яка гарантує, що повідомлення доставлено без помилок.

Повідомлення передаються з використанням методу безпеки передачі через пріоритети. Якщо два або більше повідомлення намагаються передатися одночасно, CAN-базована система обирає повідомлення з вищим пріоритетом (нижчий пріоритетний номер). Це дозволяє важливим системам, таким як гальма або двигун, передавати свої дані з мінімальними затримками.

Таким чином, J1939 дозволяє надійно передавати важливу інформацію між різними електронними компонентами транспортного засобу через загальну шину, де кожне повідомлення має чітко визначену структуру для ідентифікації його типу та призначення.

Інтеграція J1939 в TIA Portal

Хоч модуль SIMATIC PN/J1939 Link і має форм-фактор лінійки ПЛК S7-1200, він є самостійним шлюзом для мереж J1939, відповідно, може бути підключений до будь-якого ПЛК за протоколом PROFINET.

Додаємо пристрій в мережу

Відкриваємо конфігурацію мережі та додаємо шлюз згідно каталожного номеру 6BK1623-0AA00-0AA0

Стандартно підключаємо його до мережі, виставляємо IP адрес, та робимо Assign device name

Також рекомендую оновити прошивку самого модуля. Для цього йдемо в онлайн діагностику та вибираємо пункт Firmware Update

останню прошивку можна скачати на офіційному сайті СІМЕНС за цим посиланням.

Швидкість шини

Для початку необхідно виставити швидкість шини. Заходимо у властивості модуля Manager_1 та в його параметрах виставляємо необхіну швидкість.

Зазвичай вона стандартно 250 kbps або 500 kbps. У випадку з нашим MAN швидкість була 500 kbps.

Швидкість шини необхідно знати точно заздалегідь. Інакше далі буде важко ідентифікувати, на якому місці у вас виникає проблема.

Конфігурація PGN

З цього моменту починається найцікавіша частина цього процесу. Аби не втомлювати вас сухою теорією, відразу розглянемо реальний приклад зчитування даних з Блоку 1 керування двигуном (Electronic Engine Controller 1).

Даний блок має PGN з номером 61444(hF004) та містить наступну інформацію розміром 8 bytes

Bit Start/Byte Length SPN ID SPN Description
1.1 4 bits 899 Engine Torque Mode
2 1 byte 512 Driver's Demand Engine - % Torque
3 1 byte 513 Actual Engine - Percent Torque
4-5 2 bytes 190 Engine Speed
6 1 byte 1483 SA of Controlling Device for Engine Control
7.1 4 bits 1675 Engine Starter Mode
8 1 byte 2432 Engine Demand - Percent Torque

Його айді 61444(hF004) розшифровується наступниим чином

  • PDU Format: 240
  • PDU Specific: 4

На цьому моменті виникає логічне запитання, а звідки взялися ці цифри ?

Насправді все досить просто. Це можна зробити за допомогою калькулятора Windows у режимі "Програміст". Введіть PGN у калькулятор як десяткове число та виберіть HEX.

Має бути 6 цифр, але перші дві можуть бути скорочені і не з'являться в калькуляторі, якщо обидві дорівнюють 0.

  • Перша цифра — це розширена сторінка даних (0 в цьому прикладі).
  • Друга цифра — це сторінка даних (також 0 в цьому прикладі).
  • Третя і четверта цифри відповідають формату PDU (F0 в цьому прикладі, що дорівнює 240 в десятковій системі).
  • П'ята і шоста цифри відповідають специфіці PDU (04 в цьому прикладі; пам'ятайте, що це в HEX-форматі!).

Оскільки ми з вами працюємо в сфері автоматизації, виконувати одне й те ж завдання кілька разів підряд — це не наш підхід. Саме тому нижче представлений калькулятор, який автоматично розраховує всі необхідні значення.

PGN Calculator

Тепер будемо всю цю інформацію переносити в TIA Portal.

Для початку відкриваємо конфігурацію SIMATIC PN/J1939 Link та добавлямо туди наступний модуль

тепер йдемо у властивості нашого модуля PGN 8 Bytes Input_1 та заповняємо дані які ми порахували вище

Зчитуємо дані

Залишилося отримати дані з шини та конвертувати їх в зрозумілий формат.

В цьому нам допоможе наступний кусок коду

Розберемося в деталях, що тут відбувається. Якщо уважно читали, то повинні пам'ятати, що ми отримуємо пакет розміром у 8 байт, і в середині нього 2 байти (4-5) містять інформацію про оберти двигуна.

Адреса нашого модуля PGN 8 Bytes Input_1 починається з %IB68, відповідно, четвертий байт матиме адресу %IB71, а п’ятий — %IB72.Дані з цих двох байт необхідно перетворити на ціле число. Для цього створюємо проміжну змінну speed з адресою %MW2 та заповнюємо її нашими двома байтами.

Тепер, аби отримати реальні оберти двигуна, конвертуємо наше ціле число у число з плаваючою комою та перемножуємо на коефіцієнт масштабування 0.125. Всі коефіцієнти можна найти в документації на ваш транспортний засіб.

Приклад вище виконано за допомогою LAD, а на SCL це виглядало б так:

speed.%B0 :=  %IB71;
speed.%B1:=  %IB72;
EngineRPM := INT_TO_REAL(speed) * 0.125;

В результаті в нас вийшло дістати всі необхідні дані з вантажівки MAN

І наприкінець

Як каже відомий вислів: "Успіх залежить не стільки від знань, скільки від здатності застосовувати їх" . Якщо ви читаєте цю статтю, значить, ви намагаєтеся повторити схожу задачу. Тож сподіваюся, що вона була для вас корисною і допомогла у вирішенні ваших задач. У разі чого завжди можна звернутися за допомогою до наших спеціалістів у цій справі.

Коментарі

Додайте коментар...

Ім'я
E-mail (Не буде опублікований)
Ваш коментар
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Авторизація
Немаєте акаунта? Реєстрація
Забыли пароль?
E-mail
Введите e-mail Вашей учетной записи, чтобы получить пароль.
Введите корректно e-mail!
viber-chatЧат «А2М» в Viber telegram-chatЧат «А2М» в Telegram
Telegram QR
💬 Актуальні ціни
завжди під рукою