PDA

Просмотр полной версии : передача файлов с ПЛК304



nestor
07.11.2016, 14:50
Добрый день всем. Пытаюсь передать архив с карты памяти на комп посредством FTP, на компе FileZilla server. Из Putty набираю 'ftpput -u [логин] -p [пароль] [ip адрес] arh.txt /media/mmcblk0p1/file.txt' всё прекрасно передается. Если эту же команду загнать в SysExecute, то файл не передается, такое чувство, что нет доступа к карте памяти (с USB то же самое), потому что если посылать файл из директории /etc или /home то всё работает. Что же я делаю не так???

capzap
07.11.2016, 15:10
выполните find корневого раздела для поиска этого файла, должен вывести полный путь, возможно media это символьная ссылка и SysExecute этого не понимает, хотя я создавал и всё работало

nestor
07.11.2016, 15:24
При попытке копировать файлы Putty ругается что нет такого пути (к флешке).
В общем ругалась, потому что я забыл что путь указывается полностью /mnt/usf....
А файл не отправлялся, потому что команда должна укладываться в 80 символов, поэтому путь обрезался. Как с этим бороться может кто знает? Не все команды могут поместиться в 80 символов, придется название файла укорачивать.

capzap
07.11.2016, 15:47
повторяю, выполните команду find / file.txt и что эта команда выводит в консоль?

nestor
07.11.2016, 16:07
В консоль выводит то что надо. Сейчас всё работает. Но меня смущает что команда 'ftpput -u my -p 12345678 192.168.1.56 arh.conf /mnt/ufs/media/mmcblk0p1/2110.log' должна укладываться в 80 символов. Посмотрите какое короткое название файла, и это при том что логин всего 2 символа (my). А я планировал именовать файлы по дате например "data_arhiv_20130227.log". Но если я не ошибаюсь здесь можно применить скрипты? То есть выполнять скрипт с записанной в нем командой. Сейчас пора домой, но дома почитаю об этом.

capzap
07.11.2016, 16:58
набираете echo '#! /bin/sh' > script.sh
затем echo 'ftpput -u my -p 12345678 192.168.1.56 arh.conf /mnt/ufs/media/mmcblk0p1/2110.log' >> script.sh
далее chmod 755 script.sh
и из программы останется только выполнить script.sh через SysExecute. Соответственно перед файлом должен стоять удобный путь для нахождения этого файла

nestor
07.11.2016, 17:57
Вот спасибо, попробую завтра.

nestor
08.11.2016, 09:37
Ну допустим файл скрипта я создал в директории root. А как его запустить? В putty набираю script.sh, в ответ -sh: script.sh: not found.
А всё, разобрался. Надо набирать sh script.sh
Дальше я сам, спасибо.

nestor
08.11.2016, 14:04
Дальше не получается) Хотел организовать FTP сервер, вроде как для этого предназначена команда tcpsvd -vE 0.0.0.0 21 ftpd /share, но Putty ругается. говорит -sh: tcpsvd: not found. Есть подозрение, что такая команда не поддерживается. Есть догадки, как организовать сервер?

capzap
08.11.2016, 14:41
Дальше не получается) Хотел организовать FTP сервер, вроде как для этого предназначена команда tcpsvd -vE 0.0.0.0 21 ftpd /share, но Putty ругается. говорит -sh: tcpsvd: not found. Есть подозрение, что такая команда не поддерживается. Есть догадки, как организовать сервер?

прочтите эту тему http://www.owen.ru/forum/showthread.php?t=11554

Осинский Алексей
09.11.2016, 09:48
Если команда не умещается в 80 символов - объявите переменную команды как STRING (НУЖНАЯ_ДЛИНА)
где НУЖНАЯ_ДЛИНА <= 255

nestor
09.11.2016, 16:07
Почитал, понял что надо воспользоваться pure-ftpd. Распаковал в root. Далее набираю ./configure --with-uploadscript. В ответ -sh: ./configure: not found. Наверное я что то делаю не так)

capzap
09.11.2016, 16:55
Почитал, понял что надо воспользоваться pure-ftpd. Распаковал в root. Далее набираю ./configure --with-uploadscript. В ответ -sh: ./configure: not found. Наверное я что то делаю не так)

:) надо было мне лучше этот пост указать http://www.owen.ru/forum/showthread.php?t=11554&p=71755&viewfull=1#post71755

nestor
09.11.2016, 22:30
ну у меня нет цели знать всё

capzap
09.11.2016, 22:39
там прекрасно веб-сервер работает, через него тоже файлы передаются

nestor
10.11.2016, 09:32
Я тут подумал, а почему бы не воспользоваться для этих целей (копирования файлов) WinSCP. Только не соединяется через интернет. ПЛК подключен в сеть, на роутере сделал проброс порта 22 на IP контроллера, вроде должно работать, но нет. Может брэндмауэр?

capzap
10.11.2016, 10:06
в плк шлюз прописан?

nestor
10.11.2016, 22:42
Нашел ошибку, в роутере указал адрес плк вместо компа, всё ок. А насколько безопасным можно считать такой способ подключения к плк?

capzap
11.11.2016, 05:04
Нашел ошибку, в роутере указал адрес плк вместо компа, всё ок. А насколько безопасным можно считать такой способ подключения к плк?

ну насколько ssh считается безопасным, настолько и считают

nestor
14.11.2016, 10:08
Насчет веб сервера, я так понимаю это про веб визуализацию? Я создал простейший проект с визуализацией, как мне её увидеть? какой адрес странички?В адресной строке набираю http://192.168.1.55/webvisu.htm, а в ответ The requested URL '/webvisu.htm' was not found on this server.

capzap
14.11.2016, 10:13
Насчет веб сервера, я так понимаю это про веб визуализацию? Я создал простейший проект с визуализацией, как мне её увидеть? какой адрес странички?В адресной строке набираю http://192.168.1.55/webvisu.htm, а в ответ The requested URL '/webvisu.htm' was not found on this server.

нет я про другое http://www.owen.ru/forum/showthread.php?t=17003&p=134541&viewfull=1#post134541

nestor
14.11.2016, 12:56
Всё же как насчет веб визуализации? Она же создается в Codesys, только как мне посмотреть на неё из браузера?

capzap
14.11.2016, 13:11
мне ей пользоваться не понравилось, тем более главное зачем она нужна - это тренды. Но их до сих пор нет. А в моем варианте, подключаете любую бибку на яваскрипте, предназначенную для графиков и работа будет идти, останется только найти веб-дизайнера, чтоб он превратил сервер в "конфетку"

nestor
14.11.2016, 14:59
Я не увидел ответа на вопрос)) Всё же хотелось бы для начала посмотреть на стандартную реализацию, тем более мне пока тренды не нужны.

capzap
14.11.2016, 15:07
ну так сделайте в проекте визуализацию и тогда она же будет и веб-визуализацией

nestor
14.11.2016, 15:31
я же говорю, что сделал простейшую, но не могу её увидеть. В адресной строке набираю http://192.168.1.55/webvisu.htm, а в ответ The requested URL '/webvisu.htm' was not found on this server.

capzap
14.11.2016, 15:45
я же говорю, что сделал простейшую, но не могу её увидеть. В адресной строке набираю http://192.168.1.55/webvisu.htm, а в ответ The requested URL '/webvisu.htm' was not found on this server.
так у него по умолчанию порт 8080 помоему, как то так http://192.168.1.55:8080/webvisu.htm

nestor
14.11.2016, 21:18
я пробовал и так, не работало.

nestor
16.11.2016, 12:13
http://www.owen.ru/forum/showthread.php?t=17003&p=134541&viewfull=1#post134541 архив bz2 не распаковывается, bunzip2: invalid magic

capzap
16.11.2016, 12:21
это где, в самом плк или на ПК. Если что винрар открывает, можно передать и не архивом
а в плк наверное надо tar xvjf archive.tar.bz2
еще есть особенность, что путь стоит указывать полностью, не могу сказать где лежит команда, например /usr/sbin/tar или /bin/bzip2

nestor
16.11.2016, 12:25
Разобрался

nestor
16.11.2016, 12:44
а thttpd надо еще установить?

capzap
16.11.2016, 12:49
нет, он должен быть установлен

nestor
16.11.2016, 12:55
а как мне понять установлен или нет? где его искать?

capzap
16.11.2016, 13:01
ну раз я давал ссылку на конфигурационный файл thttpd.conf, он должен лежать где то в папке /etc

nestor
16.11.2016, 13:10
единственный файл с именем thttpd без расширения лежит в /usr/sbin/
Хотя нашел. Почему то поиск не показал мне этот файл

capzap
16.11.2016, 13:21
ну то что он лежит это не самое главное, наберите в консоли команду top и посмотрите запущен ли он, этот демон

nestor
16.11.2016, 13:35
есть строчка /usr/sbin/thttpd -g -C /etc/thttpd.conf
В адресной строке набираю 192.168.1.57/index.html и вижу страницу с кнопками RUN, STOP и поле ввода или вывода. Но ничего не происходит, программа запущена. Я так понял должен рисоваться какой то график?

capzap
16.11.2016, 14:01
возможно, я не помню проект, но Вам то не график нужен а передача файла, скидывайте в эту папку файл, а в хтмл-страничке ссылку добавте на него и когда в браузере на неё нажмете файл должен скачаться или как минимум в браузере открыться

nestor
16.11.2016, 14:12
подождите подождите)) передачу файлов проехали уже). Мне нужна именно визуализация. Хотя бы просто список неких парамметров, меняющихся во времени

capzap
16.11.2016, 14:28
сейчас глянул, получается надо нажать RUN и появится статический график, если в проекте переписывать файл с новыми данными, тогда график начнет меняться, в проекте для упрощения записываются константные строки поэтому динамики не стоит ждать. Я уже писал нужен веб-программист, чтоб отрисовывать нужные данные, беря их из файлов папки cgi-bin, такая технологи древняя, но и плк не продвинутый веб-сервер

nestor
16.11.2016, 14:41
это всё понятно, но я же говорю, что у меня нет графика, только кнопки и счетчик, наведите на мысль что сделать?

capzap
16.11.2016, 14:48
нажать на кнопку, я ведь сейчас тоже проверить не смогу, у меня нет под рукой 304. Интервал там 5 секунд

ЗЫ и еще я расписывал какими правами должны обладать папки

nestor
16.11.2016, 15:01
права установил, кнопку естественно нажимал)

capzap
16.11.2016, 15:17
ладно, а что дает такая строка http://192.168.1.57/cgi-bin/indata.cgi

nestor
16.11.2016, 15:22
{uno:[0,0,100,100,200,50],
duo:[0,10,100,80,200,100]}

capzap
16.11.2016, 15:29
тогда не знаю что, попробуйте погуглить как работать с meteorcharts.js, найдите какой нибудь пример по работе с json и замените код в index.html

nestor
16.11.2016, 15:34
но у Вас же работало)

capzap
16.11.2016, 15:39
так ведь еще дело в браузерах, конечно библиотеки скриптов должны адаптироваться под любой, но мало ли, с того времени работа над безопастностью зашкаливает, может просто запрет стоит

nestor
16.11.2016, 15:48
хорошо, я почитаю про это всё. Вопрос такой: если часто менять содержимое файла, как это скажется на состоянии памяти ПЛК?

capzap
16.11.2016, 15:53
как это скажется на состоянии памяти ПЛК?

в проекте, первой строчкой идет создание небольшого раздела в ОЗУ, так что как часто бы Вы не писали, флеш будет не затронута

Кстати могу предложить вариант и без скриптов, из поста #45 ссылка должна выдавать содержимое файла который пишется из проекта, если Вас устроит текстовый формат: ПАРАМЕТР := ЗНАЧЕНИЕ, то можете создать в проекте подобное содержание, а в html-странице останется только переодически запускать этот URL, чтоб отображать текущее содержимое

nestor
16.11.2016, 16:09
спасибо, я думал про это, оставлю как запасной вариант)

capzap
16.11.2016, 16:46
так если проблема в библиотеках, этот вариант дал бы ответ на этот вопрос

nestor
16.11.2016, 23:56
В общем нашел простой пример с использованием $.get
Он работает на компе, но на плк304 не работает. И на компе он работает только в Internet Explorer, так как только он поддерживает ActiveX (при загрузке IE спросил, надо ли включить ActiveX), но ведь AJAX и ActiveX разные вещи, или я опять что то не то понимаю. Но это простительно, ночь уже)

nestor
17.11.2016, 15:16
А в каком браузере открывали?

А всё, увидел

nestor
21.11.2016, 00:02
Весь мозг себе сломал. Тоже поставил апач, тренируюсь, всё прекрасно. Но те же странички простейшие с jQuery не работают на ПЛК, может там какие то ограничения? Хотя пример заработал, правда без indata.cgi (напрямую название файла указал, а то на скрипт браузер ругался), и для ajax свойство cache:false добавил, иначе при изменении файла с данными картинка не обновлялась.
Опера при работе со страничкой на локальном сервере молчала,а на сервере ПЛК выдавала:
27701

capzap
21.11.2016, 07:26
через Putty плк стучиться в инет? Причем по именам, а не IP-адресам.
Ограничений ни каких нет, код полностью загружается в браузер и некорректна работа это только проблемы браузера должны быть

nestor
21.11.2016, 07:38
какой адрес попинговать? гугл подойдет?) Второй ПЛК подключал, также не работает мой код, но на Ваш код не ругается, только на скрипт (ума не приложу что ему надо). Ещё куки какие то...
27703
27704.

capzap
21.11.2016, 07:51
err2.jpg - это не должно попадать в браузер, должен прийти только результат выполнения скрипта
По поводу пирожков, видимо настроена жесткая безопасность, но наверное лучше заменить скриптовую библиотеку, её разработчик даже сайт не поддерживает.

nestor
21.11.2016, 08:14
не должно, но ведь приходит) ну в принципе, без него можно обойтись, мне сейчас не это главное. Какую именно библиотеку? На локальном сервере то нет этого, а на плк есть, разве это возможно? По поводу пинга, в инет не стучится, что странно. Локальный комп и шлюз пингует. Но я вообще то по локалке подключался к веб серверу.

capzap
21.11.2016, 08:21
браузер скачав страницу видит внутри бибки обращение к удаленному серверу, чтоб подгрузить недостающие компоненты, я то подключаюсь в сети с доступом к интернет, мне и в голову не приходило что не работает

nestor
21.11.2016, 08:40
по поводу интернета понял. А в чем может быть проблема что нет пинга? Брандмауэр отключать пробовал.
27705

nestor
21.11.2016, 08:59
В общем мне потихоньку становится понятно, что при работе страницы на плк не разбирается json.
Вот код страницы:

27706

Код time.json:
{
"age":"false"
}

На локальном сервере сообщение "false" как и должно быть. На плк сообщение "undefined", откуда я и сделал вывод, что здесь что то не так

capzap
21.11.2016, 09:00
шлюз не прописан и днс наверное не установлен, так то к веб-серверу это не должно иметь отношение, работа с сетью и скриптами это проблемы браузера

capzap
21.11.2016, 09:04
На плк сообщение "undefined", откуда я и сделал вывод, что здесь что то не так
еще раз перепроверте права каждого файла в папке сервера, при любых изменениях вроде они могут "слетать"

nestor
21.11.2016, 09:10
Спасибо, действительно, шлюз не прописан был) теперь пингует.

nestor
21.11.2016, 09:12
Я думаю дело не в правах. На файлы 644. Тем более, что если выводить сообщение alert(ht2), а не alert(ht2.age), то выводится всё содержимое json, значит файл читается. Но не разбирается.

capzap
21.11.2016, 09:17
Я думаю дело не в правах. На файлы 644. Тем более, что если выводить сообщение alert(ht2), а не alert(ht2.age), то выводится всё содержимое json, значит файл читается. Но не разбирается.

ну опять же, eval (там где разбирается json) это команда яваскрипта, он выполняется только на стороне браузера, к серверу отношения не имеет

nestor
21.11.2016, 09:25
то есть, как бы выразиться, возможно сервер плк не умеет отсылать данные в формате json и их надо получать в тексте и далее обрабатывать через eval? Я правильно понял?

nestor
21.11.2016, 09:48
Сам спросил, сам ответил)) Этот способ работает! Всё отображается (контейнер сделал вместо всплывающего сообщения), при изменении значения age в файле json содержимое контейнера меняется. Ура). Остальное, как говорят, дело техники) Спасибо большое за помощь!

capzap
21.11.2016, 10:57
ну так то
{uno:[0,0,100,100,200,50],
duo:[0,10,100,80,200,100]}
это и есть json, может браузер как то не правильно понимает перевод каретки и кавычек у меня нет

nestor
21.11.2016, 11:56
в json точно должны быть кавычки, но в данном случае для eval без разницы, как я понял. Я всяко пробовал без eval, не получается.

capzap
21.11.2016, 12:35
я бы сюда рекомендовал глянуть https://github.com/d3/d3/wiki/Gallery как можно рисовать графики

В базовых лайнчарт

nestor
21.11.2016, 13:20
Спасибо за подсказку, на досуге поизучаю