создание списка сигналов
Добрый день!
Мне необходимо в большом количестве программ часто проверять различные сигналы и чтобы не переписывать одинаковые строки из программы в программу я пытаюсь написать специальную процедуру которая будет этим заниматься, а от меня потребуется только вызвать её введя соответствующие аргументы.
По моей задумке в качестве аргументов в программу отправляются:
1. Список сигналов который должен быть проверен
2. Список значений (1 или 0) который я от них ожидаю
3. Список номеров ошибок которые нужно активировать если состояние сигнала не соответствует ожидаемому
Программа поочерёдно сверяет значения и вызывает ошибку если необходимо.
На данный момент это выглядит следующим образом:
PROC WaitModule(VAR signaldi signal_array{*},dionum value_array{*},num alarmcode_array{*})
_Recheck:
_timeout:=FALSE;
_FOR i FROM 1 TO DIM(signal_array,1) DO
__WaitDi signal_array{i},value_array{i}\MaxTime:=max_wait_t ime\TimeFlag:=timeout;
__IF timeout THEN
___ALARM(alarmcode_array{i});
___GOTO Recheck;
__ENDIF
_ENDFOR
ENDPROC
Вызов выглядит так:
PROC test_3()
_WaitModule [DI_signal_1,DI_signal_2],[0,0],[1,1];
ENDPROC
Проблема заключается в том, что на строке вызова программы у меня висит ошибка "Argument error(124): Argument for 'VAR' parameter signal_array is not variable reference or is read only."
Вопрос заключается в том как заставить эту штуку работать? В качестве теста я менял список сигналов на один сигнал и он правильно проверял его нужное количество раз, из чего получается что остальная конструкция работает нормально.
|