Для начала надо попробовать отключить модем, и, непонял, зачем переключатся на 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.
ЗЗЫ. Погуглил. Правильно понимаю, что надо просто поксорить все байты тела включая ЕТХ?
Последний раз редактировалось Alexander Lifanov; 24.12.2009 в 16:57.
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В
Прибор не отвечает, даже на запросы ПО СОДЭК. Может необходимо дополнительное сопротивление на входы ЕК? Тогда какого номинала?