PDA

Просмотр полной версии : Вопрос по CmpSysExec.SysExecute и Web-конфигуратору



user32767
14.06.2023, 05:37
Здравствуйте.
Столкнулся с двумя проблемами по ПЛК210. Первая выглядит попроще - не могу попасть в web-конфигуратор. Набирая в браузере IP-адрес контроллера (в моём случае 192.168.0.10), я попадаю на страничку своей web-визуализации. Если пытаюсь дописать к адресу /cgi-bin/luci, то страница не открывается. Что я делаю не так?
Вторая проблема возникла с функцией SysExecute библиотеки CmpSysExec. Раз в минуту (ну либо вручную) я вызываю функцию SysExecute:
query:='mysql -uarchiver -pQwertyui -h 192.168.0.40 --database=mybase -e "INSERT INTO test_table (test_datetime) VALUES (NOW());" ';
result := CmpSysExec.SysExecute(query);
Переменная query объявлена как String(255), переменная result - как DINT.
Значение result после выполнения всегда 512. Никакая запись при этом в таблице не появляется. "Ну и что, может, mysql-сервер неверно настроен?". Отключаю контроллер от сети, даю другому компьютеру IP-адрес 192.168.0.10, выполняю с него точно ту же команду - всё работает, строка с текущей датой и временем успешно записывается в таблицу test_table базы mybase на сервере 192.168.0.40. То есть с серверной стороны проблем нет, что-то не так именно со стороны ПЛК.
Может, можно как-то подключиться к ПЛК по ssh и попробовать выполнить эту команду вручную? Но как это сделать без веб-конфигуратора...
И да, я знаю про существование примера работы с MySQL для СПК1хх, смотрел его, но он точно так же использует CmpSysExec, просто перед этим жонглирует строками, формируя в итоге такую же команду из данных, введённых пользователем, и результата также не даёт.

Евгений Кислов
14.06.2023, 06:16
Здравствуйте.
Столкнулся с двумя проблемами по ПЛК210. Первая выглядит попроще - не могу попасть в web-конфигуратор. Набирая в браузере IP-адрес контроллера (в моём случае 192.168.0.10), я попадаю на страничку своей web-визуализации. Если пытаюсь дописать к адресу /cgi-bin/luci, то страница не открывается. Что я делаю не так?
Вторая проблема возникла с функцией SysExecute библиотеки CmpSysExec. Раз в минуту (ну либо вручную) я вызываю функцию SysExecute:
query:='mysql -uarchiver -pQwertyui -h 192.168.0.40 --database=mybase -e "INSERT INTO test_table (test_datetime) VALUES (NOW());" ';
result := CmpSysExec.SysExecute(query);
Переменная query объявлена как String(255), переменная result - как DINT.
Значение result после выполнения всегда 512. Никакая запись при этом в таблице не появляется. "Ну и что, может, mysql-сервер неверно настроен?". Отключаю контроллер от сети, даю другому компьютеру IP-адрес 192.168.0.10, выполняю с него точно ту же команду - всё работает, строка с текущей датой и временем успешно записывается в таблицу test_table базы mybase на сервере 192.168.0.40. То есть с серверной стороны проблем нет, что-то не так именно со стороны ПЛК.
Может, можно как-то подключиться к ПЛК по ssh и попробовать выполнить эту команду вручную? Но как это сделать без веб-конфигуратора...
И да, я знаю про существование примера работы с MySQL для СПК1хх, смотрел его, но он точно так же использует CmpSysExec, просто перед этим жонглирует строками, формируя в итоге такую же команду из данных, введённых пользователем, и результата также не даёт.

Добрый день.
Напишите мне на почту или в телеграм, пожалуйста (в подписи) и предоставьте доступ по AeroAdmin.

capzap
14.06.2023, 07:38
Здравствуйте.
Столкнулся с двумя проблемами по ПЛК210. Первая выглядит попроще - не могу попасть в web-конфигуратор. Набирая в браузере IP-адрес контроллера (в моём случае 192.168.0.10), я попадаю на страничку своей web-визуализации. Если пытаюсь дописать к адресу /cgi-bin/luci, то страница не открывается. Что я делаю не так?
Вторая проблема возникла с функцией SysExecute библиотеки CmpSysExec. Раз в минуту (ну либо вручную) я вызываю функцию SysExecute:
query:='mysql -uarchiver -pQwertyui -h 192.168.0.40 --database=mybase -e "INSERT INTO test_table (test_datetime) VALUES (NOW());" ';
result := CmpSysExec.SysExecute(query);
Переменная query объявлена как String(255), переменная result - как DINT.
Значение result после выполнения всегда 512. Никакая запись при этом в таблице не появляется. "Ну и что, может, mysql-сервер неверно настроен?". Отключаю контроллер от сети, даю другому компьютеру IP-адрес 192.168.0.10, выполняю с него точно ту же команду - всё работает, строка с текущей датой и временем успешно записывается в таблицу test_table базы mybase на сервере 192.168.0.40. То есть с серверной стороны проблем нет, что-то не так именно со стороны ПЛК.
Может, можно как-то подключиться к ПЛК по ssh и попробовать выполнить эту команду вручную? Но как это сделать без веб-конфигуратора...
И да, я знаю про существование примера работы с MySQL для СПК1хх, смотрел его, но он точно так же использует CmpSysExec, просто перед этим жонглирует строками, формируя в итоге такую же команду из данных, введённых пользователем, и результата также не даёт.

а на другом ПК, где всё работает, так же ключи слитно прописываете?

user32767
14.06.2023, 08:14
Евгений, большое спасибо за помощь!
Итак, описание решений: во-первых, в моей версии прошивки не было mysql, поэтому требовалось обновление прошивки, что одновременно решило проблему с веб-конфигуратором, который не работал из-за неправильных настроек; во-вторых, как оказалось, функция SysExecute ограничена 80 символами, поэтому более длинный запрос обрабатывался некорректно, правильный путь - использовать вместо неё функциональный блок SysExecute3. Теперь всё работает как надо.