Просмотр полной версии : ПЛК63 + Syslibcom + отправка в 485 байт
Brandon_heat_dre
05.08.2020, 18:12
Доброго дня товарищи. Буду краток, может у кого то есть кусок кода , как с помощью библиотеки Syslicom отправить байт а потом его считать в порт 485. суть в том что нужно в модем АТ команды посылать. времени нет самому разобраться, помогите кто чем может. хотел библиотеку Smslib посмотреть... но она запаролена, так что исходники посмотреть не удалось. спасибо заранее всем откликнувшимся.
Brandon_heat_dre
05.08.2020, 18:13
UNM либ прекрасно работает на 100тых , но тут универсальное устройство создать нельзя... так что увы.
Brandon_heat_dre
05.08.2020, 22:33
я так понял нужно было обратить внимание на конкретное сообщение "Я вычислил, что АТ-команды можно посылать самостоятельно, используя функцию библиотеки REQAT, как не удивительно А это значит что уровень покрытия Вы можете узнать подав AT+CSQ и номер входящего - AT+CLCC " это функция REQAT или библиотека REQAT, вбил в гугле ничего не нашел на эту тему.
Brandon_heat_dre
06.08.2020, 12:15
так , все там без написанных библиотек заработало. другой вопрос подскажите кто нибудь в UNM символ через setbyte '$1A' уходил нормально , через syscomwrite так же не прокатывает, я подозреваю что он несколько символов отправляет а не единый байт . подскажите как через syscomwrite оправить ctrl+z. спасибо.
Brandon_heat_dre
06.08.2020, 15:42
Народ ну неужели никто не сталкивался.... всего то и осталось этот неладный символ отправить... сроки горят капец как:(
Народ изучает ваш проект видимо.
Brandon_heat_dre
06.08.2020, 22:55
да действительно код то можно было бы и показать
COMMAND:='POST /index.php HTTP/1.1$0D$0A';
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 200);
(*---------------------------------------------------------------------------------------------------------*)
COMMAND:='-------------------------------$0D$0A';
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 200);
(*---------------------------------------------------------------------------------------------------------*)
COMMAND:='Connection: keep-alive$0D$0A';
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 200);
(*---------------------------------------------------------------------------------------------------------*)
COMMAND:='Content-Type: application/x-www-form-urlencoded$0D$0A';
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 500);
(*---------------------------------------------------------------------------------------------------------*)
COMMAND:='Content-Length: ';
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 500);
(*---------------------------------------------------------------------------------------------------------*)
COMMAND:=WORD_TO_STRING(LEN_STRING_SEND_2);
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 200);
(*---------------------------------------------------------------------------------------------------------*)
COMMAND:='$0D$0A$0D$0A';
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 200);
(*---------------------------------------------------------------------------------------------------------*)
COMMAND:=STRING_SEND_2;
BYTE_WRYTE:=SysComWrite(port_number, ADR(COMMAND), LEN(COMMAND), 200);
STEP_INTO:=2;
2:
k:=k+1;
IF k=100 THEN
COMMAND:='$1A';
BYTE_WRYTE:=SysComWrite(port_number,ADR(COMMAND),L EN(COMMAND),200);
OTVET:='';
STR_FIND:=0;
STEP_INTO:=3;
k:=0;
END_IF
Brandon_heat_dre
06.08.2020, 22:56
все символы типа 0D 0A и прочих улетаю и отлично отрабатывают
Brandon_heat_dre
06.08.2020, 22:58
а вот ответ из терминала
> POST /index.php HTTP/1.1
Host:
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 29
P1=85&P2=85&P3=85&P4=85&P5=85 <-вот в этом месте стрелочка еще , из терминала нес копировалась, стрелочка как раз прилетает на команду 1A
На хрена BYTE_WRITE ?
На хрена циферки 200, 500 ?
И да. "485 байт"
На остановке 100 человек. В автобус влезает 20. Что делаем ?
Brandon_heat_dre
06.08.2020, 23:04
200 и 500 подбирались методом тыка, если значение ожидания меньше то просто напросто строка не улетает в порт. BYTE_WRITE остался от первоначального кода, я по нему отслеживал ушли байты или нет. сейчас роли никакой не играет. это как то может повлиять что один символ не уходит? не 485 байт, это я в попыхаха а в 485 порт байт.
200 и 500 подбирались методом тыка
Тыкните 0 и забудьте
BYTE_WRITE.... сейчас роли никакой не играет.
Да ?
Brandon_heat_dre
06.08.2020, 23:13
Тыкните 0 и забудьте
Да ?
тыкнул в 0 , все смешалось в кашу > POST /index.php HTTP/1.1
Host: test.tepConnectioContent-Conten24
убрал BYTE_WRITE не изменилось ничего.
, все смешалось в кашу
Смешали в кашу. Зачем столько записей в порт в 1 цикле ?
Brandon_heat_dre
06.08.2020, 23:35
Это обычный пост запрос , на других плк где есть unm там просто Кидается в порт одной строкой. Библиотека сислибком эмпирическим путём выяснено, очень плохо работает с длинными строками .поэтому несколько записей. На передачу одного символа это никак не влияет. Сегодня в техподдержке мне сказали что стслибком не сможет отправить символ 1А что собственно и есть ctrl z. Не знают чего ... но начинаю в это уже по чуть чуть верить.
Brandon_heat_dre
06.08.2020, 23:47
Ну я более мягко сказал что такого не может быть. Все символы ASCII нужные в Коде проходят. Что ещё можно попробовать ? Паузу пробовал , лишнее из кода убрал , разные символы отправлял в виде байта число 26 в виде символа шестнадцатиричного. 1А . Хз что ещё . А в чем принципиальная разница между setbyte и syscomwright?
Что такое setbyte и какое отношение 63-му ?
Библиотека сислибком эмпирическим путём выяснено, очень плохо работает с длинными строками .поэтому несколько записей.
Тупо сходу - на 63-ем как минимум 255 без проблем. У вас ?
Brandon_heat_dre
07.08.2020, 00:01
Setbyte функция отправки байта в порт из библиотеки unm. К 63 никакого отношения не имеет , дабы Библиотека на 63 не работает, просто код изначально был написан под 160 плк, теперь я его адаптирую для 63, просто меняя функции setbyte на syslibwrite. На setbyte всечетко , символ делает своё дело. Потому и спрашиваю в чем может быть принципиальная разница
Я везде (100,110,63,73) юзаю syslibcom. Не вижу смысла в unm. Лишняя переделка при портации туда/сюда (63<->110)
Другой принципиальной разницы нет.
Про 255
Модбас-рту-мастером из 63-73 спокойно пишу 123 регистра. Это пакет 255 байт (одной записью в порт). А еще есть ascii.
Какая длина пакета у Вас ?
Brandon_heat_dre
07.08.2020, 07:16
Сейчас свёл весь пакет до одного байта, один символ и все
Brandon_heat_dre
07.08.2020, 14:27
короче я не знаю куда дальше рыть , сам с собой веду беседу:(50528
символ благополучно прилетел... модем его благополучно проигнорил. хотя если поставим 1B как отмена действия, то все будет зашибись.
символ благополучно прилетел... модем его благополучно проигнорил.
1.Проблема модема
2.Проблема алгоритма общения с модемом
Мне интересно - кто в техподдержке брякнул про "стслибком не сможет отправить символ 1А" ?
Brandon_heat_dre
09.08.2020, 16:57
Некто Максим . Проблема точно не программы, программа прекрасно работает на 110 160 и прочих. Только библиотека там unm , но это не меняет сути . Я склоняюсь к неисправности модема , но не понимаю почему такая реакция на один только символ . Проверил wterm терминалом , на модем точно прилетает 1A на этот символ реакции нет , на все остальные 0D 0B и прочие реакция есть. Скрин работы wterm вечером прикреплю.
Brandon_heat_dre
09.08.2020, 16:59
А ну уже прикреплял ... забыл видимо в запаре.
Только библиотека там unm , но это не меняет сути . Я склоняюсь к неисправности модема
так в теме с овеновской бибкой есть версия и на основе syslibcom, как раз для 63/73. Почему готовой то не воспользоваться? Насколько я знаю ctrl-Z используется для отправки сообщений при AT+CMGF равной единице, там во первых еще есть формат PDU и второе сама ctrl-z может быть заменена на символ ESC
Brandon_heat_dre
09.08.2020, 20:17
так в теме с овеновской бибкой есть версия и на основе syslibcom, как раз для 63/73. Почему готовой то не воспользоваться? Насколько я знаю ctrl-Z используется для отправки сообщений при AT+CMGF равной единице, там во первых еще есть формат PDU и второе сама ctrl-z может быть заменена на символ ESC
Если вы имеете ввиду библиотеку для отправки смс SmsOwenLib или как то так называется.... так она тоже на 63 не заработала... причем я отслеживал в терминале, ровно в том же месте... там UPD режим но это ничего не меняет... кодированное сообщение вконце видимо ctrl+z и такая же история.... небольшая пауза и следом ошибка!
Brandon_heat_dre
09.08.2020, 20:19
каким образом ctrl+z может быть заменена на esс? ESC (может я не всей информацией владею) всегда прекращает выполнение любой операции.
каким образом ctrl+z может быть заменена на esс? ESC (может я не всей информацией владею) всегда прекращает выполнение любой операции.
отправка сообщений не одно и тоже что интернет
у CIPSEND есть три варианта, помимо ctrl-z есть же нормальный вариант с известной длинной посылки данных, кроме этого есть команда CIPATS которая тоже может решить проблему бкз использования этого кода
Если вы имеете ввиду библиотеку для отправки смс SmsOwenLib или как то так называется.... так она тоже на 63 не заработала... причем я отслеживал в терминале, ровно в том же месте... там UPD режим но это ничего не меняет... кодированное сообщение вконце видимо ctrl+z и такая же история.... небольшая пауза и следом ошибка!
сказки не рассказывайте когда режим PDU этот символ 1А не нужен вообще
Brandon_heat_dre
09.08.2020, 21:05
хорошо я завтра приложу скришот что бы не рассказывать сказки. я сказал "видимо" ctrl+z , я не ловил сообщения в терминале. завтра поймаю посмотрю. тем не менее библиотека не заработала... для проверки я взял готовый пример x3 который , в описании сказано что это пример для 63. он скомпилировался без ошибок, я в нем ничего не менял, просто загрузил как есть. он не заработал как раз на моменте когда сообщение после знака > вставлено и его надо отправлять.
за AT+CIPATS спасибо.. сейчас прочитал про эту команду она действительно может спасти отца русской демократии.
Brandon_heat_dre
09.08.2020, 21:48
сейчас на сколько смог через удаленку подключился... команда CIPATS почему то не заработала, но вроде SIPSEND=100 допустим, отправила сообщение правда без ответа сервера почему то, число байт сейчас неправильное, но он хотя бы должен прислать сообщение об ошибке раз нераспознал запрос. но это уже хлем я хотя бы увидел сообщение send ok
Brandon_heat_dre
10.08.2020, 10:01
попробовал варианты предложенные capzap, команда AT+CIPAT=1,2 так же игнорится, в сипсенде висит сообщение и никуда не уходит, какие бы значения сипат я не ставил. далее cipsend=количество байт информации, дает какой то результат в виде send ok , но на сам сервер ничего не прилетает. причем команда отрабатывает через раз, то есть ответ то нет, даже вручную пересчитывал количество информации отправляемой, дабы проверить может где у меня в подсчетах ошибка, такая же ситуация, то есть ответ то нет, на сервер ничего не прилетело. сервер при этом исправен, на него по абсолютно такой же схеме летят данные с других плк.
Brandon_heat_dre
10.08.2020, 14:26
Ну что сказать товарищи, дали друзья 110 плк, на нем поднял univrsal network device и библиотеку unm.lib и все полетело без каких либо проблем, и 1А прошел. и как это понимать вообще... код один в один только поменяна функция syslibwrite на setbyte все.!!!!!!!!!!50569
я понимаю что всем тут мое нытье надоело.. но все таки может докопаемся до истины... вдруг кто еще столкнется с такой шляпой!
Пантелеев Дмитрий
13.08.2020, 11:33
Залил Ваш проект в свой ПЛК 63. Модем ПМ01 2019 года выпуска с модулем SIM800. В логе тоже самое, что и у Вас на ПЛК110.
50616
Brandon_heat_dre
20.08.2020, 10:41
Дмитрий, благодарю за ответ, но тогда вопросов еще больше. Если вы залили мой проект ничего в нем не меняли, и он у вас заработал а у меня нет. тогда где искать проблему.... схема опдключения думаю и ваша и моя полностью совпадаются. 485 А в А , В в В , земли нет... да и бог бы с ней.. она думаю здесь ни при чем. контроллер подключен от сети 220 , модем от блока питания овен ас-3 по-моему 24В . схема примитивная. думаю фотографировать ее не имеет смысла. антена к модему овновская. модем свежий... куплен пару месяцев назад, контроллер 2018 года , если не ошибаюсь, но прошивка свежая.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot