Моя задача была такова (отбрасываю оффтопиковые детали):
Есть ряд переменных разного типа, разбросанных по областям CONSTANT, RETAIN и обычным VAR. Их свойства описываются структурой PARSCRIPT и существует массив таких структур. В этот массив входят все те переменные, которые я называю параметрами. В параметры я включаю те и только те переменные, для которых будет иногда использоваться инструмент единообразного доступа по чтению и записи этих переменных.
В прилагаемом проекте показано возможное решение, основанное на использовании указателей на параметры и информации о типах. В ФБ чтения и записи GetPar и SetPar происходит выбор по CASE участка кода, где точно известно, какого типа извлекаемые-записываемые данные. И там, конечно, без всяких проблем это чтение-запись происходит.
В программе PLC_PRG продемонстрировано, что значения правильно извлекаются, затем они для понту модифицируются и записываются назад.
Собственно, решение простое, когда уже понимаешь, что к чему. По пути дров повалено много, но таков он, этот процесс познания.
Кстати, для моей задачи множественные выходы ФБ GetPar и множественные входы SetPar вовсе и не нужны. Они скорее хороши для того, чтобы в PLC_PRG показать, что извлеклось правильно. А я буду использовать один выход Х (см. закомментированные участки GetPar) и аналогичный вход Х у SetPar (еще не написано). Ведь мне вся эта байда нужна для обмена с ИП320 через регистры, а туда вся инфо по значению параметра пойдет в виде 4-хбайтного регистра. И в момент передачи на или с ИП320 до лампочки различия в формате INT, DWORD, TIME, DATE. Все равно ИП320 ни хрена не понимает, кроме бита и ворда
И красивое бортовое время придется нарезать на голы-очки-секунды, тьфу! на часы-минуты-секунды и передавать их туды через 3 регистра...
Но это уже отдельная песнь.
Так что еще раз хочу поблагодарить Учителя и всех остальных!