Ок, в принципе я уже описал в двух словах, могу подробней.
На контроллере ведется архив, архиватор писал сам, в свое время столкнулся с этим вопросом, овен предлагает свое решение, но у меня там были какие-то проблемы, насколько я помню с вещественными числами, решено это сейчас или нет - не знаю. Пишу на карту, каждый день новая директория, название - текущая дата; внутри - каждый час файл, название - время.лог. Внутри строки определенного формата.
На делфи пишу приложение. Каждый час формируется файл скрипта, примерно такого вида:
Код:
option batch on
option confirm off
open scp://root:12345@192.168.84.6
cd /mnt/mmc/PLC5_20121010/
option transfer binary
get 0900.log D:\PLCArchives\PLC5\PLC5_20121010\
close
exit
Понятно, что даты и время вычисляются. Кому интересно что это значит на сайт winscp это описано. Далее запускаю winscp примерно так:
Код:
  WinSCPPath:=WorkingDir+'WinSCP\winscp.com';
  WinSCPCMD:='/console /script='+WorkingDir+'script.txt';
  Rslt:=CreateProcess(PAnsiChar(WinSCPPath),
                      PAnsiChar(WinSCPCMD),
                      nil,
                      nil,
                      false,
                      NORMAL_PRIORITY_CLASS,
                      nil,
                      nil,
                      StartUpInfo,
                      ProcessInfo);
Далее проверяю существование файла. На самом деле можно получать код с которым завершилось приложение (winscp.com), но у меня всегда возвращался отрицательный результат, как я понял это связано с тем, что не поддерживается команда groups. Далее разбираю файл и делаю что мне нужно. Еще стоит заметить, что при таком способе перед автоматизацией этого процесса один раз ручками подключаюсь к контроллеру, чтобы они обменялись ключами или как-то так. После это все норм работает. Все, кажется подробно