Ну хз. Переменные на ввод и на вывод у слейва как правило разные.
Я обычно систему команд делаю. Три-пять записываемых регистров идут на код команды и её параметры, а остальные читаемые — на передачу текущего состояния. Панель или скада однократно записывает в свой или чужой регистр код и параметры, а состояние считывает постоянно. Можно хоть десять панелей подключить, и без разницы мастер или слейв.
Код:
(* Панели А и Б, для каждой свой набор читаемых и записываемых регистров *)
IF КодКомандыА <> 0 THEN
CASE КодКомандыА OF
КомандаОткрытьКлапан:
ОткрытьКлапан(ПараметрА0);
КомандаЗакрытьКлапан:
ЗакрытьКлапан(ПараметрА0);
END_CASE
(* Чтобы только один раз выполнилось *)
КодКомандыА := 0;
END_IF
IF КодКомандыБ <> 0 THEN
CASE КодКомандыБ OF
КомандаОткрытьКлапан:
ОткрытьКлапан(ПараметрБ0);
КомандаЗакрытьКлапан:
ЗакрытьКлапан(ПараметрБ0);
END_CASE
КодКомандыБ := 0;
END_IF
Как видно, по вкусу можно оформить в виде ФБ или наоборот пропускать разные наборы команд (типа: с одного поста можно открывать и закрывать, а со второго — только закрывать). Уже проверял с двумя СПК110 (обе — мастер) и ПЛК110 (слейв по двум портам). Сейчас так делаю на установку с двумя постами.