насколько я помню, там любой неправильный ответ заканчивается таймаутом, так что определить что нет симки с помощью программы не получится.
насколько я помню, там любой неправильный ответ заканчивается таймаутом, так что определить что нет симки с помощью программы не получится.
Здравствуйте! У меня такой вопрос возник. У меня ПЛК100 с ПМ01 работает в режиме постоянного обмена данными с OPC-сервером по GPRS. Мне требуется еще отправка sms в случае аварии. В руководстве есть похожий пример, но там CSD-соединение. В рассматриваемом примере порт захватывается по условию line status = 0, т.е. когда модем не звонит серверу. В случае работы по GPRS соединение постоянное, поэтому line status = 0 никогда не выполняется, у меня постоянно весит 3. Если я в этом случае захватываю через "open_port" интерфейс и таким образом рву соединение - какие возможны последствия, будет ли это корректно? Дело в том, что у меня есть такая особенность, что в случае закрытия удаленного сервера OPC? когда он рвет соединение ПЛК почему-то уходит в перезагрузку. Не даст ли этот принудительный захват интерфейса такую же ошибку?
Ничего не получается! Я уж молчу про то, чтобы работала сразу и передача данных по gprs и посылка sms. Это конечно не заработало. Далее я попытался хотя бы примеры, приведенные в руководстве повторить - перебил их на свой ПЛК 100 и это тоже не заработало! Я даже потом порт поменял на 485, чтобы было точно, как в примере, хотя изначально я пользовался 232. Но все равно ничего не вышло.
Все время одно и тоже - подается сигнал на разрешение работы блока open port, выход out устанавливается в true, подается разрешение на работу блока конфигурации модема. Затем сигнал done на его выходе устанавливается в true и code_error code = 0
Затем подается разрешение на работу блока посылки sms - на выходе блока code error = 0, затем на smssend появляется true, сбрасывая через reset переменную, которая подает разрешение на захват порта через open port и все возвращается в исходное состояние.
Т.е. все error показывают 0, все сигналы показывают, что отправка осуществляется, диоды на модеме при настройке и посылке мигают, но sms не приходят! Пробовал симки разных операторов, все перепробовал - бесполезно. Даже не знаю куда копать, ведь если бы были ошибки или какие-то сигналы не устанавливались бы - тогда понятно, но так ведь все без ошибок.
И выглядит так, будто не хватает данных об sms-центре. Это странно что нет настроек для sms-центра. Я уже выполнял похожий проект на simatic 1200 с gprs-модулем cp-1242-7. Там обязательно требовалось указывать номер sms-центра.
Может я не понял чего-то или пропустил, подскажите, как настроить номер sms-центра для модема?
Ребят выручайте, в такой ситуации я наверное сам не разберусь.
во первых, уточните что Вы понимаете под словами ошибки всегда нули, это Вы визуально наблюдаете или счетчик ошибок поставили.
Во вторых http://www.owen.ru/forum/showpost.ph...&postcount=164 читайте статью. И объясните потом, Ваше представление о sms-центре как о раздаче динамических адресов в локальной сети что ли? Ну и так дополнительно, что означает фраза: "И выглядит так, будто не хватает данных об sms-центре", Вы ручками пробовали отправить смску через терминал? Отличается ли передача с установкой цетра и без него, а может вообще не идет
capzap, под нулевыми ошибками я подразумевал, что визуально в режиме онлайн в codesys ошибки на выходе висят в нулях. Счетчик ошибок - к сожалению, я незнаком с таким инструментом.
За идею послать sms вручную спасибо, я не догадался что-то. За статью отдельное спасибо - очень интересная и полезная статья. То, что данные об sms-центре хранятся на симке я знал, что телефоны умеют читать эту информацию я тоже знал, но сомневался насчет модемов. Сименсовский вот не умеет.
Смс-ки по типу "короткий привет" и "длинные привет" удалось отправить без проблем. Прием смс-к модем также осуществляет. Также посылал (через терминал) смс-ки в обычном текстовом режиме - посылаются также без проблем.
Но вот через программу - нивкакую! Понятия не имею, что здесь можно предпринять.
длительность отображения ошибки составляет один цикл, визуально Вы можете её и не заметить. А счетчик это просто подсчет количества срабатываний если выход блока не равен нулю
capzap, а понятно что вы имели в виду под счетчиком. Я установил подсчет импульсов на сoderror - по нулям, но сейчас все уже заработало. Причем я так и не разобрался почему. Просто я открыл новый проект и там с нуля набрал код. И вроде все заработало. Потом я попытался переделать по аналогии мой изначальный проект. Все изменения сводились к следующему - 1. Неправдоподобные, но все же имели место и поэтому их возможную роль я не могу отрицать - я вручную прописал все параметры блока настройки модема - т.е. помимо скорости указал настройку четности, стоп-битов, управления потоком, до этого они были не указаны и следовательно брались по умолчанию, хотя эти значения по умолчанию совпадают с теми что я указал явно.
Потом еще я вручную написал номер телефона. До этого он был в переменной, эта переменная типа string имела размер 70 байт и я не знаю, чем заполнялись оставшиеся пустые байты, отведенные под переменные. Например в том же сименсе требовалось использовать под номер абонента переменную типа string[22], просто string не прокатывало, использование такого типа у них даже в инструкции прописано. Причем распределение байт такое - 0 байт - указывает допустимо возможное число байт, отводимое под данные, 1 - байт - указывает количество использованных байт при данном значении перемнной, а последующие байты - собственно байты данных (под каждый символ отводится 1 байт) и далее пустые байты. То, что указывалось количество байтов, которые являются значащими в самой переменной (в 1-ои байте), означает, что программа будет только их читать. Следовательно, например российский номер из 11 цифр, записанный в данную переменную будет иметь в типе string[22] следующее распределение байт -
0 байт = 20 (максимально возможное количество байтов данных)
1 байт = 11 (число используемых байтов)
Далее сам номер -
2 байт = 8
3 байт = 9 и т.д. ... 12 байт - последний символ, остальные байты пустые и будут проигнорированы при чтении.
А как здесь я не знаю. Возможно ли, что программа при чтении этой string-переменной, в которую заносится номер, считывает и еще всякий мусор,который прибавляется к номеру?
Более правдоподобные изменения - я по приведенным примерам изменил способ подачи сигнала на sendsms - раньше я подавал передний фронт, т.е. в моей тестовой установке я нажимал кнопку и таким образом подавал дискретный сигнал на вход контроллера. И получалось, что сигнал устанавливался из FALSE в TRUE. Т.е. передний фронт. Теперь же я как и в примере после подачи TRUE на вход sendsms следующей командой сбрасываю сигнал в FALSE. Получается импульс длиной не более 1 цикла, как и в примере. Может ли быть такое, что в реальности разрешение на отсылку прдается правильно не передним фронтом, а единичным импульсом? В самом руководстве сказано, что разрешение подается фронтом, но не сказано каким - то ли передним, то ли задним?
И еще я поставил параметр checknum в false, хотя я прекрасно понимаю, что он тут не причем.
В общем в будущем еще попытаюсь точно выяснить причину, просто сейчас на эксперименты совсем нет времени.
И еще мне хотелось бы выяснить следующий интересный момент. Сейчас у меня работает gprs-передача данных через с opc-сервером. Затем происходит событие, вызывающее посылку sms. Происходит захват порта и разрыв соединения. Затем после освобождения порта подключение к интеренету и передача через gprs должны восстановится. Но это происходит не всегда. Примерно в 70% случаев связь востанавливается с первого раза. В остальных случаях она востанавливается после посылки еще одной **** т.е. после повторного захвата порта. Причем как мне показалось, это еще зависит и от оператора. Т.е. на beeline у меня связь востанавливалась примерно в 95% случаев, а в TELE2 примерно в 70%.
Поэтому хочу разобраться как происходит этот процесс.
В ПЛК есть файл extconf.cfg, содержащий такие команды для подключения к инету - AT+CGATT=1
AT+CGDCONT=1,"IP","internet.tele2.ru"
Правильно ли я понимаю, что каждый раз, когда отсутствует соединение linestatus=0 ПЛК будет слать эти команды модему? Т.е. при включении ПЛК посылаются эти команды и устанавливается связь. Затем связь разрывается когда происходит захват порта. После освобождения порта, контролер должен пытаться востановить подключение по gprs и слать команды до восстановления связи, так? Поэтому, если я прав, то либо он не посылает их регулярно до восттановления связи, либо просто связь не может восстановится. Странно, что ситуация исправляется повторной посылкой смс.
Я думаю, для того чтобы перестраховаться, каждый раз перезапускать модем после посылки смс. Но тут возможно 2-мя путями - 1. Установить переменную stop модема в TRUE, а затем запустить его через переменную start модема. Или просто запитать модем через выходной элемент контроллера. И каждый раз комутировать питание. Не посоветуете, как будет лучше?
немножко что успел переварить: передний фронт и импульс в один цикл плк это вообщем то одно и тоже.
По поводу ввода номера, мне кажется в инструкции писалось что после изменений библиотеки, когда вводился просто 10-тизначный номер, теперь надо вводить код начинающийся с семерки а не с восьмерки
capzap, на самом деле все это не влияет на работу программы. Я это и сам перкрасно понимал, но надо же что-то подозревать. В общем я поочередно отменял все параметры, пока не вернул исходную систему - и она работает! По-моему него просто в какой-то момент что-то сдвинулось в его железных мозгах и он поехал, что уже не в 1-ый раз.
Добрый день! Ребята, помогите, пожалйста, разобраться. Заранее извиняюсь за может глупые вопросы. Связка ПЛК-100 и ПМ01, не получается настроить для отправки смс.
Через гипертерминал смс-ки отсылаются. Сделал пробную программу для ПЛК-100 по примерам. В программе ПЛК сигнал на разрешение работы блока open port выход out устанавливается в true, сигнал на выходе конфигуратора done - false и code_error = 0. Я так понял что-то я напутал с подключением ПМ01 к ПЛК-100 и переключателем интерфейсов. У ПМ01 два интерфейса - 232/485 (Х2) и 485(Х3). Так к какому подключать Х2 или Х3 и какой открывать в опен порте и соответственно прописывать в конфигурации ПЛК? Если № 0 то - RS485, а №1 - то RS232? В настройках модуля unm по 232 или 485 надо что-то менять? Оптимальное минимальное время цикла для ПЛК-100 не менее 10мс? Выводы 9 и 6 на Х1 надо ли замыкать перемычкой? Модем будет работать только на передачу.
Последний раз редактировалось lomtik; 13.12.2012 в 00:04.