October 10, 2019

Программная активация удаленного доступа

В новых ПЛК по умолчанию отключен удаленный доступ. Во имя безопасности, конечно же. И вот когда ты подключаешься удаленно через эр-ди-пи, ви-пи-эн и прочие тим-виверы, запускаешь CERHost, а на контроллере не активен Remote Display... На помощь приходит Beckhoff Device Manager.

Что делать, если не приходит?

Найти контроллер через System Manager, подключиться к ПЛК и залить в него хитрую программу, которая в свою очередь активирует удаленный доступ.


Автостарт через реестр


Реестре содержит раздел Launch90, в который можно записать имена программ для автостарта. Название ключа явно позаимствовано из Linux, но нам нужно активировать удаленный доступ, а за него на стороне ПЛК отвечает сервис CeRDisp.exe. Теперь всё готово, осталось подать материал в жерло FB_RegSetValue из TcUtilities.lib.

После добавления записи в реестр, необходимо перезагрузить ПЛК. Для этого воспользуемся функцией NT_Reboot из той же библиотеки. Результат:

PROGRAM MAIN
VAR
    Reboot: NT_Reboot;
    RegSetValue: FB_RegSetValue;

    newValue: STRING := 'CeRDisp.exe';
END_VAR
VAR CONSTANT
    HKLM_INIT_SUBKEY: STRING := 'init';
    REG_LAUNCH90_VALUE: STRING := 'Launch90';
END_VAR

(* @END_DECLARATION := '0' *)

RegSetValue(
    sNetId   := '',
    sSubKey  := HKLM_INIT_SUBKEY,
    sValName := REG_LAUNCH90_VALUE,
    eValType := REG_SZ,
    cbData   := LEN(newValue) + 1,
    pData    := ADR(newValue),
    bExecute := TRUE
);

IF NOT RegSetValue.bBUSY THEN
    Reboot( NETID := '', START := TRUE);
END_IF

END_PROGRAM


Что-то еще про автостарт приложений можно прочитать в Automatic start of CE applications. И автозапустить что-нибудь еще полезное.

No comments

Post a Comment

Note: Only a member of this blog may post a comment.