Сейчас вся работа с контроллером построена только через внешний модуль (и управление и просмотр текущих данных). Есть ли возможность реализовать чтение текущих данных как у ECL 210 - через обычный опрос?
Для чего нужно:
появится возможность поставить устройство на автоопрос и хранить архив текущих данных
можно будет работать с контроллером через веб интерфейс и мобильное приложение
будет возможно использовать температуру наружного воздуха в других точках
появится возможность использовать считанные значения на мнемосхемах
можно формировать различные отчеты/графики
Я понимаю что задача достаточно трудоёмкая т.к. нужно все переделать практически заново, но все же возможно ли такое реализовать в следующих версиях?
Готов при необходимости предоставить доступ к контроллеру через адаптер RS232 - Ethernet
Да, это возможно. Я перенесу тему в раздел “Поддержка новых устройств”. Оформите, пожалуйста, следующее сообщение по правилам оформления заявки.
Нам нужен будет доступ к прибору.
Нам не удалось опросить ваше устройство. Насколько я понял из вашего письма MOXA настроена в режиме Real COM. В какой программе вы создавали виртуальный COM-порт, NPort Administrator или NPort Windows Driver Manager?
В вашем письме указан 1 порт. При этом в программе NPort Administrator указывать порт не требуется. При создании виртуального COM-порт в программе NPort Windows Driver Manager требуется указывать два порта.
Moxa настроена именно в режиме TCP Server (не Real Com). Виртуальный COM порт создавал через USR-VCOM Virtual Serial Port Server v3.7.2.525
Прикладываю скриншот настройки виртуального ком порта и результат опроса заводской программой.
IP соответственно вам указать нужно тот, что в письме
Укажите пожалуста с какого IP будете производить подключение, чтобы добавить в исключения файервола.
Либо давате настрою MOXA в режиме клиента на ваш IP и порт, как вам удобнее.
Так же прошу при разработке драйвера для этого устройства реализовать помимо чтения датчиков температуры S1-S6, чтение расчитанной температуры теплоносителя (Calculated flow temperature) стр. 7 протокола обмена.
Заранее благодарю :-):
В ходе изучения протокола обмена наткнулся на библиотеку на GitHub, написана на Java правда, но что интересно - там присутствует считывание даты и времени из RAM контроллера (это не описано в протоколе обмена, и такой функции нет в заводском ПО).
Запрос времени
// date and time setting
add(new Ecl300Command(Cmd.READ_TIME_MONTH_YEAR, "Month Year", new byte[] {(byte) 0xCB, (byte) 0x80, 0x00, 0x00}, ResponseFormat.DATE_TIME_MONTH_YEAR));
add(new Ecl300Command(Cmd.READ_TIME_DAY_HOUR, "Day Hour", new byte[] {(byte) 0xCB, (byte) 0x82, 0x00, 0x00}, ResponseFormat.DATE_TIME_INT_INT));
add(new Ecl300Command(Cmd.READ_TIME_MIN_SEC, "Min Sec", new byte[] {(byte) 0xCB, (byte) 0x84, 0x00, 0x00}, ResponseFormat.DATE_TIME_INT_INT));
Разбор ответа
private String getReponseMessageDateTime(byte weekDayMonth, byte year,
byte day, byte hour, byte minutes, byte seconds) {
String sWeekDay;
int weekDay = (int)((weekDayMonth & 0xF0) >> 4);
int iMonth = (int)(weekDayMonth & 0x0F);
int iYear = (int)(year & 0xFF) + 1900;
int iDay = (int)(day & 0xFF);
int iHour = (int)(hour & 0xFF);
int iMinutes = (int)(minutes & 0xFF);
switch (weekDay) {
case 1:
sWeekDay = "Mon";
break;
case 2:
sWeekDay = "Tue";
break;
case 3:
sWeekDay = "Wed";
break;
case 4:
sWeekDay = "Thu";
break;
case 5:
sWeekDay = "Fri";
break;
case 6:
sWeekDay = "Sat";
break;
case 7:
sWeekDay = "Sun";
break;
default:
sWeekDay = "???";
break;
}
return String.format("%s %04d-%02d-%02d %02d:%02d", sWeekDay, iYear, iMonth, iDay, iHour, iMinutes);
}
Прошу по возможности при разработке драйвера добавить возможность чтения даты и времени контроллера.