[Железо]16 канальные реле Hi-link HLK-DIO16

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

Модератор: immortal

Ответить
stellhawk
Сообщения: 264
Зарегистрирован: Чт ноя 08, 2018 5:51 am
Благодарил (а): 10 раз
Поблагодарили: 83 раза

[Железо]16 канальные реле Hi-link HLK-DIO16

Сообщение stellhawk » Пт фев 21, 2020 5:27 pm

16-IO-WiFi.jpg_q50.jpg
16-IO-WiFi.jpg_q50.jpg (89.51 КБ) 2230 просмотров
http://www.hlktech.net/product_detail.php?ProId=83
купил я всё таки эту железку.
железка из себя представляет HLK-RM04 + плата на которой присутствует 16 входов и 16 выходов.
общается она через rs485 и сеть ethernet+wifi по специальному протоколу.
что важно для железки есть специальное ПО под винду(120 мб сюда прикрепить не получилось)
для работы программы нужно прописать в переменные окружения windows:
СпойлерПоказать
JAVA_TOOL_OPTIONS = -Duser.language=en -Duser.country=US
Через программу можно настроить соответствие входов и действий связанных с выходами, их довольно много все описывать не буду.
покажу скриншот с программы
2020-02-21_21-25-34.png
2020-02-21_21-25-34.png (24.27 КБ) 2230 просмотров
Протокол я пока не расковырял, но его описание есть в документах.
Настроить порты можно так же через внутренний протокол, но эта часть не описана в документации.
железка лежит на столе играюсь её пока ведет себя стабильно.
Вложения
HLK-DIO16使用手册 Modbus协议说明 V1.1.pdf
(641.22 КБ) 144 скачивания
HLK 16路输入输出控制器 连接和通信协议v1.2 190924 客户开发用.pdf
(567.58 КБ) 163 скачивания
HLK-DIO16 User Manual.pdf
(933.03 КБ) 213 скачиваний
16-IO-WiFi.jpg_q50 (1).jpg
16-IO-WiFi.jpg_q50 (1).jpg (55.27 КБ) 2230 просмотров
stellhawk
Сообщения: 264
Зарегистрирован: Чт ноя 08, 2018 5:51 am
Благодарил (а): 10 раз
Поблагодарили: 83 раза

Re: [Железо]16 канальные реле Hi-link HLK-DIO16

Сообщение stellhawk » Пт фев 21, 2020 5:30 pm

пока из багов увидел стандартный для такого класса устройств, его суть в том что если реле включено через интернет. а вход меняет свое состояние с 1 на ноль. то ничего не происхододит хотя состояние должно поменяться.
для программистов:
последовательность действий:
0. Включаем действие overturn 1 реле на замыкание первого входа.
1. Включает 1 реле через программу.
2.Замыкаем 1 вход. реле выключается.
3. Размыкаем 1 вход . реле не включается.
4. Замыкаем 1 вход. реле включается.
Глюк на шаге 3 - реле должно было включиться но не сделало этого
stellhawk
Сообщения: 264
Зарегистрирован: Чт ноя 08, 2018 5:51 am
Благодарил (а): 10 раз
Поблагодарили: 83 раза

Re: [Железо]16 канальные реле Hi-link HLK-DIO16

Сообщение stellhawk » Вт мар 03, 2020 2:58 pm

расковырял протокол (в нужной части):
посылка формируется из частей:
1. адрес железки он всегда 0х6A 0хA6
2. длина сообщения (без учета адрес железки но с учетом контрольной суммы
3. само сообщение
4. контрольная сумма.
вычисляется вот так:
- берем сумма всех чисел бит сообщения (п.3)
- прибавляем число длины сообщения (п.2)
- оставляем младшие 8 бит
код:

Код: Выделить всё

$device="6A A6";
$a=array(0xFE,0x06);
printstr($device,$a);

function printstr($device,$a)
{
printf("%s ",$device);
array_unshift($a,count($a)+1);
foreach($a as $b)printf("%02x ",$b);
printf("%02x\n",hlk_crc($a));
}

function hlk_crc($bits)
{
$sum=0;
foreach ($bits as $bit)$sum+=$bit;
$sum=$sum&0b11111111;
return $sum;
}
Код помогает не думать о всей обвзяке.
полные команды для снятия данных:
6a a6 03 fe 06 07 - дай значение выходов
6a a6 03 fe 07 08 - дай значение входов

что сыпится при событиях в эфир - ответы:
6A A6 04 07 08 00 13 -состояние входов (07 -входы; 08 (состояние первых 8 реле); 00(состояние вторых 8 реле))
6A A6 04 06 01 00 0B - состояние выходов изменилось(06 выходы 01(состояние первых 8 входов) 00 (состояние вторых 8 входов)
нумерация портов с нуля.

теперь о п.3.само сообщение:

$a[0]=0x01; //-тип команды управляем всеми реле
$a[1]=0x02; //- 0x00 выключен, 0x01 включен, 0x02 сальто, 0x03 толчковый режим;
$a[2]=0x01; // первые 8 реле
$a[3]=0x00;// - вторые 8 реле
будут затронуты только те реле которые в 2 и 3 элементах. остальные реле не будут трогаться.
Ответить