Для начала надо попробовать отключить модем, и, непонял, зачем переключатся на 19200 7e1?
Вид для печати
Для начала надо попробовать отключить модем, и, непонял, зачем переключатся на 19200 7e1?
Отключить модем не могу - меня газовики убьют. Они похоже сами дозваниваются на него и удаленно считывают архивы.
Да и зачем? Обмен-то идет...
Насчет 19200 - по стандарту :) Он же отвечает /Els_6_
Значит, он готов обмениваться на режиме С, скорость 19200. А 7е1 - согласно стандарту ГОСТ Р МЭК 61107, п.4.4.
А попробуйте 8n1
Да попробовал уже... Забавная хрень происходит...
Если в ответ на Els6 ответить АСК-060, ему пофиг. Если ответить АСК-061, он отвечает 8 байтами какого-то мусора (ответ ловлю тоже на 9600, т.к. на 19200 ничего не видно) и уходит в астрал до какого-то момента времени...
ЗЫ. Люди, а как правильно для ЕК260 контрольный байт считать? Хочу попробовать выбивать ЕК-шку из астрала SOH-B0-ETX-BCC.
ЗЗЫ. Погуглил. Правильно понимаю, что надо просто поксорить все байты тела включая ЕТХ?
1. Не надо гадать. В настройках прибора параметр "Инт2":
0 - 7e1
1 - 7o1
2 - 8n1
2. Подтверждение скорости:
АСК-060 - не совсекм понятно, это точный вид ответа?
В общем я отвечаю такой посылкой:
ACK, '0', '6', '1', CR, LF
В ответ прибор вернет пароль сессии (вроде так называется):
01 50 30 02 28 31 32 33 34 35 36 37 29 03 50 [.P0.(1234567).P]
Обрати внимание - не АСК060, а АСК061 - режим программирования.
В режиме АСК060 - прибор автоматом выплюнет тебе запрограммированный ранее набор параметров и уйдет в спячку.
В режиме АСК061 - он будет отвечать на запросы параметров, ну и записывать их по команде. На доступ в различным параметрам требуются коды Поставщика или Потребителя.
Вот алгоритм расчета КС
Код:BYTE Calk_Control_Summ(BYTE* buff)
{
BYTE cs = 0;
int i = 0;
int StartFlag = 0;
while((buff[i]!=ETX)&&(buff[i]!=EOT))
{
if (StartFlag) cs ^= buff[i];
else if ( ((buff[i] == SON)|(buff[i]==STX)) ) StartFlag = 1;
++i;
}
// символ ETX
cs ^= buff[i];
return cs;
}
Из описания:
Астрал этот называется периодом активности сесии, прибор ждет команды:) Если команд нет, примерно через 30сек опять в спячку уйдет. И как показывает практика - если что-то не так пошло, то SOH-B0-ETX-BCC из астрала не особо то его и возвращает, самы надежный способ - таймаут на минуту.Цитата:
Режим считывания данных
В случае АСК 0Z0 CR LF тарифное устройство будет отвечать предопределенным набором данных в формате. Набор данных может быть пуст для тех тарифных устройств, которые не предназначены для считывания данных этим способом.
Связь будет происходить со скоростью 300 Бд (начальная скорость передачи информации) если:
- символ "Z" в сообщении подтверждения/выбора опций – "0"; или
- неправильное или неподдерживаемое сообщение подтверждения/выбора опций послано и принято; или
- никакого сообщения подтверждения/выбора опций не послано и не принято.
Связь будет переключаться на скорость передачи информации "Z" Бд, только если символы "Z" в идентификационном ответе и сообщении подтверждения/выбора опций идентичны.
В общем, раз прибор тебе ответил на /?! CR LF, то подтвердив выбор скорости - меняй скорость, не меняй формат кадра.
И еще. После установления связи после команды АСК 0Z0 CR LF обрати внимание, все остальные команды идут без CR LF.
Поделитесь, пожалуйста, секретом подключения корректора газа по RS-485.
Подключаю по схеме:
А к Т-, R-
B к Т+, R+
На входы ЕК +U, Ri и +U, GND внешнее питание 9В
Прибор не отвечает, даже на запросы ПО СОДЭК. Может необходимо дополнительное сопротивление на входы ЕК? Тогда какого номинала?