Вход

Просмотр полной версии : ПЛК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
Народ ну неужели никто не сталкивался.... всего то и осталось этот неладный символ отправить... сроки горят капец как:(

Валенок
06.08.2020, 22:51
Народ изучает ваш проект видимо.

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

Валенок
06.08.2020, 23:01
На хрена BYTE_WRITE ?
На хрена циферки 200, 500 ?

И да. "485 байт"
На остановке 100 человек. В автобус влезает 20. Что делаем ?

Brandon_heat_dre
06.08.2020, 23:04
200 и 500 подбирались методом тыка, если значение ожидания меньше то просто напросто строка не улетает в порт. BYTE_WRITE остался от первоначального кода, я по нему отслеживал ушли байты или нет. сейчас роли никакой не играет. это как то может повлиять что один символ не уходит? не 485 байт, это я в попыхаха а в 485 порт байт.

Валенок
06.08.2020, 23:09
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 не изменилось ничего.

Валенок
06.08.2020, 23:26
, все смешалось в кашу
Смешали в кашу. Зачем столько записей в порт в 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?

Валенок
06.08.2020, 23:54
Что такое setbyte и какое отношение 63-му ?



Библиотека сислибком эмпирическим путём выяснено, очень плохо работает с длинными строками .поэтому несколько записей.
Тупо сходу - на 63-ем как минимум 255 без проблем. У вас ?

Brandon_heat_dre
07.08.2020, 00:01
Setbyte функция отправки байта в порт из библиотеки unm. К 63 никакого отношения не имеет , дабы Библиотека на 63 не работает, просто код изначально был написан под 160 плк, теперь я его адаптирую для 63, просто меняя функции setbyte на syslibwrite. На setbyte всечетко , символ делает своё дело. Потому и спрашиваю в чем может быть принципиальная разница

Валенок
07.08.2020, 00:12
Я везде (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 как отмена действия, то все будет зашибись.

Валенок
08.08.2020, 13:16
символ благополучно прилетел... модем его благополучно проигнорил.
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
А ну уже прикреплял ... забыл видимо в запаре.

capzap
09.08.2020, 17:10
Только библиотека там 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 (может я не всей информацией владею) всегда прекращает выполнение любой операции.

capzap
09.08.2020, 20:34
каким образом ctrl+z может быть заменена на esс? ESC (может я не всей информацией владею) всегда прекращает выполнение любой операции.

отправка сообщений не одно и тоже что интернет
у CIPSEND есть три варианта, помимо ctrl-z есть же нормальный вариант с известной длинной посылки данных, кроме этого есть команда CIPATS которая тоже может решить проблему бкз использования этого кода

capzap
09.08.2020, 20:35
Если вы имеете ввиду библиотеку для отправки смс 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 года , если не ошибаюсь, но прошивка свежая.