Это не я указываю, а бибка. Я то терминалом как раз читаю по одному параметру.
Вид для печати
Это не я указываю, а бибка. Я то терминалом как раз читаю по одному параметру.
используемый в модеме ПМ-01 модуль SIM900 работает с этой командой несколько по другому. - указывается два параметра. Поэтому библиотека так себя и ведет.
http://www.owen.ru/forum/showthread....l=1#post121567 тут представлен листинг, модемы под который написана библиотека на такую команду отвечают.
Если все же требуется написать программу под свой модем. можно частично использовать библиотеку, используя только открытие порта и фб reqat, правда думать придется
Ясно, спасибо! Надо бы явно указать в шапке темы что библиотеки только для модемов ПМ01 или на базе SIM900.
А у сименса Вашего какой чип стоит? Так то две цифры должны понимать все модемы, второе значение используется для отметки считать смску прлчитанной или нет
ЗЫ и повторю с помощью reqat можно послать любую команду на любой модем работающий с АТ-командами
Скорее всего - MC35i это и есть модуль (легендарный ))). Модем, если честно вытащен из загашника, древний он как мамонт. Только для пробы. Про REQAT - спасибо.
ЗЫ. с Telit GL868-Dual хочу еще попробовать, как будет на руках.
Не в древности, думаю, дело. Пытался задействовать Cinterion MC52i. Тоже не хочет с бибкой работать. И GPRS не поднимает через модуль модем в конфигурации. Таки немного отличается система команд. Бибка закрытая, проверить не могу.
Olex007, не в древности, да. А раз команды отличаются и бибка закрыта, то я и предложил:
Цитата:
Надо бы явно указать в шапке темы что библиотеки только для модемов ПМ01 или на базе SIM900.
Нет такой команды у меня (
AT+GSV
ERROR
ATI
SIEMENS
MC35i
REVISION 02.00
OK
Не вопрос, тогда просто идентификатор модуля командой AT+GMM , в 1.02 ревизии онп точно есть, во второй не знаю
AT+GMM
MC35i
OK
Добрый день. Совсем недавно начал знакомиться с контроллерами ОВЕН. Разобрался немного с codesis (спасибо наличию документации на русском языке, примерам программ и форуму - здорово облегчают сей нелегкий труд). Написал программу для ПЛК73. Планирую оснащать ими небольшие водонасосные станции, разбросанные у нас по всему городу, так функционала для них самое то. Сейчас, соответственно, изучаю информацию по СМС и GPRS/CSD. На данный момент мне непонятно, можно ли на ПЛК73 реализовать параллельное функционирование плк с модемом и в режиме передачи данных и с СМС сообщениями или это доступно только с UNM библиотекой, недоступной для данного плк?
В принципе на 95% уверен, что можно (только через CSD, gprs вроде как не поддерживается на плк73). Осталось получить плк и потестить.
Странно... Насколько все подробно написано по плк100+, настолько практически ничего на плк63/73, которого для определенных задач более чем достаточно. Похоже и csd для 63/73 проблема, хотя смски пожалуйста.
Пытаюсь применить 4-й пример к плк73. Прописал LineStatus AT%QB6.0: BYTE; (выход RS-1[FIX]) при компиляции выскакивает ошибка: Неверный адрес: '%QB6.0'. Что я делаю не так?
В ПЛК73 никаких LineStatus нет, т.к. это глобальная переменная из конфигурации ПЛК1хх. CSD-соединение можно поднять и самостоятельно через библиотеку SysLibCom (в любом случае она понадобится и для дальнейшей работы с портом при передаче данных). В двух словах - послали АТ-команду набора номера (ATD<номер телефона>), слушаем ответ, как только в ответ получили "Connect 9600" начинаем обмен.
А про GPRS Вы все правильно поняли, его поднять в ПЛК73 нельзя.
Это я уже понял. На ПЛК73 всё только через библиотеки реализовывать нужно. Просто мало свободного времени и приходится рывкми подходить к решению вопросов. Сейчас пытаюсь понять, каким образом через syslibcom можно реализовать режимы master/slave, для реализации и смс и опроса по csd.
Как я понимаю, это возможно 2-мя модемами только организовать...
Вложение 13376
Бибка SmsOwenLib Выдёт 5 ошибок в чём причина?
При попытке отправить сообщение на 2 номера, оно отправляется 2 раза на один номер. На FB_SMS_SR.SendSmsNum приходит listNum[sl.NumCur], на FB_SMS_SL.NumCount приходит - 2.
Что здесь может быть неправильного?Код:listNum :ARRAY [0..2] OF STRING(11):=2('7911*******'), '7921*******';
И ещё вопрос, как я понял, после прочтения **** она удаляется. Но столкнувшись с тем, что входящая смс обрабатывется только один раз, вставив в симку в телефон, обнаружил там 5-6 входящих смсок. Удалил, повторил запрос - один раз ответ получил и всё. Вставил симку снова в телефон, опять там несколько моих сообщений. Как я понял, первое сообщение контроллер обрабатывает, последующие просто не видит? Тогда почему не удаляются сообщения после просмотра?
И да, плк73.
Поставил CheckNum:=TRUE и CheckNumList :='', сообщения стали удаляться, но при этом теперь перестала работать отправка смс и опрос не происходит даже один раз. То есть если я правильно понимаю, после получения сообщения и отправки на него ответа, нужно подать на вход CheckNumList на время необходимое для удаления сообщения и сбросить?
Эту проблему решил подачей на вход CheckNumList '' во время инициализации и после отправки сообщения, с последующим переключением на список разрешенных номеров (забавные конечно танцы с бубном :/). При этом выяснил, что FB_SMS_SL.done всегда FALSE, непонятно почему.Цитата:
И ещё вопрос, как я понял, после прочтения **** она удаляется. Но столкнувшись с тем, что входящая смс обрабатывется только один раз, вставив в симку в телефон, обнаружил там 5-6 входящих смсок. Удалил, повторил запрос - один раз ответ получил и всё. Вставил симку снова в телефон, опять там несколько моих сообщений. Как я понял, первое сообщение контроллер обрабатывает, последующие просто не видит? Тогда почему не удаляются сообщения после просмотра?
И да, плк73.
Поставил CheckNum:=TRUE и CheckNumList :='', сообщения стали удаляться, но при этом теперь перестала работать отправка смс и опрос не происходит даже один раз. То есть если я правильно понимаю, после получения сообщения и отправки на него ответа, нужно подать на вход CheckNumList на время необходимое для удаления сообщения и сбросить?
Но первая проблема (с отправкой на 2 номера) пока не решена. Кто подскажет как решить?
Спасибо, помогло.
Честно говоря, была у меня с утра мысль проверить вариант с
руки дойти не успели.Код:listNum :ARRAY [0..2] OF STRING(11):='7911*******', '7921*******';
Доки уже по 10 раз перечитал, если честно, именно в них и был вариант с несколькими получателями в том виде, который у меня не получался. Не понятно почему там именно так прописано (видимо, чтобы народ на всем готовеньком не сидел, а башкой тоже думал). Просто я с массивами ещё не работал, поэтому смутно представляю как обрабатывается listNum :ARRAY [0..2] OF STRING(11):='7911*******', '7921*******'; а listNum[sl.NumCur] для меня пока вообще загадка, поиск пока ничего не дал.
И как выяснилось
проблему не решило. Получается, что при включении контроллера и модема происходит инициализация, на вход CheckNumList в течении 10 сек. подается '' и сообщения стираются, вход переключается на список разрешенных номеров. Затем при входящем сообщении на запрос состояния отправляется ответное смс и снова подается '' на вход (10 сек.), однако сообщение не стирается, чтобы оно стерлось, приходится снова сбрасывать питание, чтобы повторить начальную инициализацию. При этом,когда пытаюсь задать уставку, она обрабатывается, значение меняется, отправляется ответное сообщение об успешном выполнении, происходит попытка стирания смски, и на входе NewInSmsText у меня висит '$10(C $0F$02Lt$01P$06$17'? но бывает и другая аббракадабра. В общем бред какой-то, не могу пока понять почему такая чушь получаетсяЦитата:
Эту проблему решил подачей на вход CheckNumList '' во время инициализации и после отправки сообщения, с последующим переключением на список разрешенных номеров.
Поправочка, сообщение типа '$10(C $0F$02Lt$01P$06$17' на входе NewInSmsText висит после прочтения его программой. Убрал подачу на вход CheckNumList '' - ничего не изменилось. Уже не знаю куда копать, прошу помощи :(.
ох, это столько раз уже обсуждалось чтоб удалить все смски необходимо, чтоб CheckNumList был пуст и затем поднимать флаг CheckNum чтоб проверить успешность ловим задний фронт выходной переменной BUSY и в этом же цикле контролируем чему равна ошибка, если нулю то всё успешно удалилось, если 21 то смски не удаляются.
И кстати если на телефоне появляются сообщения это вовсе не означает что они хранятся на сим-карте
В том то и дело, что не работает этот алгоритм. Т.е. он работает, но только при первой инициализации. При последующей подаче пустого списка CheckNumList (со снятием флага CheckNum) и поднятием флага CheckNum не происходит удаление, висит абракадабра на NewInSmsText и всё тут и следующее приходящее смс не читается. Что уже не перепробовал, но помогает только перезагрузка.
Не понял этот момент: я захожу именно на сообщения, хранящиеся на сим-карте, если они не хранятся там, то почему отображаются? Тем более после успешного удаления контроллером, список пуст.
Сейчас не могу проверить,позже посмотрю,но визуально не было,поставлю блок для фиксации
Пару недель не было времени, сейчас снова засел за контроллер. Итоги по смс управлению следующие.
Пример №3_1 не работает. После получения сообщения на выходе NewInSmsText остается '$04.$10C`$0F$02@$08x!$10', что это значит не понимаю, но последующие смс не обрабатываются (CheckNum = TRUE, CheckNumList - список из двух номеров).
Алгоритм следующий: CheckNum = TRUE, CheckNumList - список из двух номеров. При FB_SMS_SR.Enable или NewInSms=TRUE на 10 секунд CheckNumList переключается на '', CheckNum сбрасывается в FALSE и через 100 мс (пробовал разные значения) поднимается в TRUE. Через эти 10 секунд соответственно FB_SMS_SR.Enable и NewInSms снова срабатывают, алгоритм зацикливается. То есть переключение CheckNum вызывает переключение FB_SMS_SR.Enable.Цитата:
чтоб удалить все смски необходимо, чтоб CheckNumList был пуст и затем поднимать флаг CheckNum
Проблему как я думаю можно решить программно, игнорировав это переключение, по типу дребезга контактов, осталось сообразить каким образом. ушел думать...
ErrCode всегда = 0.
WTF?
Всё оказалось интереснее. Сброс CheckNum с TRUE в FALSE дает срабатывание NewInSms что и дает в свою очередь зацикливание алгоритма. Теперь думаю как с этим справиться... вроде вначале такая лёгкая задачка казалась...:)
В общем, все попытки результата не дали, основная загвоздка остается в билиберде после прочтения смс наподобия '$04.$10C`$0F$02@$08x!$10',которая стопорит всё остальное
Что-то и не получается её никак обойти. Кто подскажет, что означаети как можно от этого избавиться?Цитата:
после прочтения смс наподобия '$04.$10C`$0F$02@$08x!$10'
Символ $ обозначает шестнадцатеричный значение кодировки символов из двух цифр
Ничего это не означает, проблема у Вас в чем то другом, в теме мне кажется достаточно примеров под любые ситуации
Пример достаточно, не спорю, они очень здорово помогают. Но по сути, нормальную работу приема сообщений на плк73 организовать не получилось. По факту плк73 отлично работает на отправку смс и возможно передачу по csd каналу (ещё не проверил). Может быть причина в модеме, который 2011 года выпуска, но сомнительно. Попробую побыстрее достать и проверить. Но первый опыт с плк от овен пока не внушает оптимизма, хотя на 1хх может и нет таких проблем, но все равно.
АТ-команды известны, попробуйте через терминал ручками набрать всё что неполучается, если с ПК всё получится принять/послать,просмотреть и удалить,значит дело в библиотеке или всеже в Вашем проекте
Да, ещё бы понимать, что конкретно проверить. С учетом того что библиотека то в принципе отрабатывает, застревает только после получения и прочтения сообщения. Как это проверить с ПК не совсем понимаю. Так что протестю с модемом на новом чипсете + телеофис у меня ещё валяется, с ним попробую.
Сколько смсок лежит на симке?