PDA

Просмотр полной версии : Считывание архива с ПЛК 304



Шевцов Игорь
09.10.2014, 11:30
Есть задача: во время пропадания связи между ПЛК 304 и компом писать архив в контроллере, а при появлении связи перенести архив в БД.
С тем как писать в контроллер разобрался, но вот как вытащить файлики архива на верхний уровень идей несколько, и не понятно какую легче реализовать...
1) Поднять FTP (или еще какой либо способ получения прямого доступа к архивным файлам) на контроллере и выкачивать файлы с него а потом уже на компе скриптом загонять в БД...
2) Организовывать чтение файлов контроллером и помещение параметров в регистры Modbus и потом их вычитывать с компа и ложить в БД...
Как поднять FTP не представляю (хотя вариант кажется самым простым), лезть в Modbus не особо хочется :(

Может кто сталкивался с подобным и есть уже решения? Буду благодарен примерам и советам!

capzap
09.10.2014, 12:16
http://www.owen.ru/forum/showthread.php?t=11554&page=2&p=71766&viewfull=1#post71766

Теперь наверное точно - оно?

Шевцов Игорь
09.10.2014, 12:26
http://www.owen.ru/forum/showthread.php?t=14180 оно?
это тема про услуги =)

Шевцов Игорь
10.10.2014, 16:45
Вдруг кому пригодится.
Проблема переноса решилась при помощи бесплатной программы WinSCP.

Батничек скачивания и удаления файла с ПЛК:
winscp.com /console /command "open scp://root:12345@10.0.6.10" "get /mnt/ufs/media/mmcblk0p1/arc1.log d:\" "rm /mnt/ufs/media/mmcblk0p1/arc1.log" "exit"
-------------------------------------------------------------------------
winscp.com /console /command - запуск программы с консолью
"open scp://root:12345@10.0.6.10" - соединение с ПЛК
"get /mnt/ufs/media/mmcblk0p1/arc1.log d:\" - копирование архива с карты SD в корень диска D:\
"rm /mnt/ufs/media/mmcblk0p1/arc1.log" - удаление архива с карты SD
"exit" - закрытие соединения

Ну а перенос в БД это уже дело техники...

GIR
31.08.2016, 12:39
Пытаюсь тем же способом скачать свой архив с ПЛК304. Первый раз файл качается без проблем, но все следующие разы вылазит ошибка:
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.

Шевцов Игорь
31.08.2016, 13:58
Пытаюсь тем же способом скачать свой архив с ПЛК304. Первый раз файл качается без проблем, но все следующие разы вылазит ошибка:
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.

а вы полностью все команды батника используете что я написал?
в частности "exit"
файл у вас удаляется?

GIR
31.08.2016, 14:44
Выполняю без команды удаления файла. Но тут проблема похоже в самой программе, т.к. через интерфейс при подключении он такую же ошибку вываливает, но после нажатия "ОК", все равно открывает содержимое контроллера. А в консоли после ошибки выполнение прерывается.

Сейчас решил использовать другую прогу PSCP. Качает она без проблем, только удалять файлы с контроллера похоже не умеет.

capzap
31.08.2016, 14:47
а при чем тут команды батника, он удалил файл, новый с таким же именем не создался, глупо запрашивать не существующий файл

GIR
31.08.2016, 18:45
а при чем тут команды батника, он удалил файл, новый с таким же именем не создался, глупо запрашивать не существующий файл


Выполняю без команды удаления файла.

Использую только команды open, get и exit. Файл не удаляется. И ошибка вываливается при попытке подключиться, а не скачать, до команды get он даже не доходит.
Как я писал выше, при работе через графический интерфейс WinCSP та же ошибка.

Шевцов Игорь
31.08.2016, 19:50
Использую только команды open, get и exit. Файл не удаляется. И ошибка вываливается при попытке подключиться, а не скачать, до команды get он даже не доходит.
Как я писал выше, при работе через графический интерфейс WinCSP та же ошибка.

Было что-то такое и у меня, но эта проблема решилась, сейчас трудно вспомнить как...

а пароль у вас на root какой?
или лучше выложите полный текст вашего батничка, ничего там не исправляя.

GIR
01.09.2016, 06:34
батник:

winscp.com /console /command "open scp://root@10.0.6.102" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
и то что получается

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.
Session started.
Active session: [1] root@10.0.6.102

D:\WinSCP-5.9.1-Portable>

Вчера устанавливал пароль через Putty, но сегодня после включения контроллера пароль пропал. С этим тоже придется разбираться)

capzap
01.09.2016, 06:44
ну и чего Вы тогда пишите про попытку подключится, сесси уже стартовала далее идет выполнение команд, поставьте перед get запросом вывод в консоль существует ли нужный файл по этому пути

GIR
01.09.2016, 08:02
Не знаю, как проверить есть файл или нет в этой проге. Команды test и [] она обрабатывать не хочет, да и их нет в списке поддерживаемых (программой WinSCP).
Вот что получается если использовать ls:

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Session started.
Active session: [1] root@10.0.6.102
drwxrwxrwx 2 root root 4096 Jan 1 1970 .
drwxrwxrwx 5 root root 360 Aug 31 9:12 ..
-rwxrwxrwx 1 root root 94999 Sep 1 9:24 Archive.csv
Archive.csv | 92 KB | 486,2 KB/s | binary | 100%

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.
Session started.
Active session: [1] root@10.0.6.102

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Session started.
Active session: [1] root@10.0.6.102
drwxrwxrwx 2 root root 4096 Jan 1 1970 .
drwxrwxrwx 5 root root 360 Aug 31 9:12 ..
-rwxrwxrwx 1 root root 94999 Sep 1 9:24 Archive.csv
Archive.csv | 92 KB | 557,5 KB/s | binary | 100%

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.
Session started.
Active session: [1] root@10.0.6.102

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.
Session started.
Active session: [1] root@10.0.6.102

D:\WinSCP-5.9.1-Portable>

Файл никуда не девается, я его не удаляю и не использую (архивация в данный момент отключена).

capzap
01.09.2016, 08:34
ну раз просит выполнить команду pwd, выполните вместо ls, должен показать в каком месте сейчас находится юзер. Я в своих скриптах обычно использую cd чтоб попасть в нужную директорию, а оттуда уже качаю файл без указания всего пути. Правда на 304 так не делал, я по другому выгружал файлы

Шевцов Игорь
01.09.2016, 10:08
Не знаю, как проверить есть файл или нет в этой проге. Команды test и [] она обрабатывать не хочет, да и их нет в списке поддерживаемых (программой WinSCP).
Вот что получается если использовать ls:

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Session started.
Active session: [1] root@10.0.6.102
drwxrwxrwx 2 root root 4096 Jan 1 1970 .
drwxrwxrwx 5 root root 360 Aug 31 9:12 ..
-rwxrwxrwx 1 root root 94999 Sep 1 9:24 Archive.csv
Archive.csv | 92 KB | 486,2 KB/s | binary | 100%

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.
Session started.
Active session: [1] root@10.0.6.102

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Session started.
Active session: [1] root@10.0.6.102
drwxrwxrwx 2 root root 4096 Jan 1 1970 .
drwxrwxrwx 5 root root 360 Aug 31 9:12 ..
-rwxrwxrwx 1 root root 94999 Sep 1 9:24 Archive.csv
Archive.csv | 92 KB | 557,5 KB/s | binary | 100%

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.
Session started.
Active session: [1] root@10.0.6.102

D:\WinSCP-5.9.1-Portable>get.bat

D:\WinSCP-5.9.1-Portable>winscp.com /console /command "open scp://root@10.0.6.102" "ls /mnt/ufs/media/mmcblk0p1" "get /mnt/ufs/media/mmcblk0p1/Archive.csv d:\_tmp\" "exit"
Searching for host...
Connecting to host...
Authenticating...
Using username "root".
Password:
Authenticated.
Starting the session...
Error getting name of current remote directory.
Command 'pwd'
failed with return code 0 and error message
-sh: groups: not found.
Session started.
Active session: [1] root@10.0.6.102

D:\WinSCP-5.9.1-Portable>

Файл никуда не девается, я его не удаляю и не использую (архивация в данный момент отключена).

Прикрепляю часть руководства что писал для настройки своей системы.

1) обязательно задайте пароль для root!
2) обязательно выполните пункт по сохранению подключения в графическом окне
3) обязательно сохраните ключ сервера!

GIR
02.09.2016, 08:02
Не помогло, всё тоже самое. Может проблема в версии программы. Буду пользоваться PSCP, а удалять файлы, если потребуется, через SysFile.

Шевцов Игорь
02.09.2016, 13:37
Не помогло, всё тоже самое. Может проблема в версии программы. Буду пользоваться PSCP, а удалять файлы, если потребуется, через SysFile.

т.е. с паролем для root и с ключем сервера не получается?

GIR
14.09.2016, 14:20
Похоже проблема была именно в новой версии WinSCP. Скачал ту, что у вас в документе прописана (5.5.5), в ней также ошибки выдаются, но файлы загружаются.
Но теперь ещё надо решить проблему со сбрасыванием пароля при отключении питания ПЛК. Пароль задаю через Putty, командой passwd. Пробовал на двух ПЛК304.
Может быть проблема в батарее (на одном из контроллеров часы останавливаются при отключении питания) или пароль хранится в энергонезависимой памяти?

GIR
15.09.2016, 09:08
Проблема решилась. После установки пароля ПЛК надо программно перезагрузить (busybox reboot).