-
bs1:=ADR(SMSq1.bSend);
bs1^:=q1;
Вы сделали все наоборот
-
Будте добры, дайте ответ на 24 сообщение !
Последний раз редактировалось Ufolog; 12.07.2010 в 20:36.
-
Пользователь
та же ошибка 4062
сделал как вы сказали: результат тот же
вот код:
Последний раз редактировалось olegon; 22.07.2010 в 15:52.
-
Пользователь
Разобрался с помощью справки по codecys
Вызов функционального блока. Привожу цитату из русской справки:
"Переменные вход-выход:
Обратите внимание, что переменные вход-выход (VAR_IN_OUT) передаются в экземпляр функционального блока через указатели. Поэтому таким переменным нельзя присваивать константы при вызове.
Вызов экземпляра fuboinst с входом iInOut1 типа VAR_IN_OUT:
VAR
fuboinst: fubo;
iVar1: int;
END_VAR
iVar1 := 2;
fuboinst (iInOut1 := iVar1);
Не допустимы попытки присваивания констант:
fuboinst (iInOut1:=2); или fuboinst .iInOut1:=2;"
т.е в моем случае будет примерно так:
------------------------------------------------------------
Program PLC_PRG
VAR
q1:bool;
SMS1: GSM_Modem_SMS;(*объявляем экземпляр ФБ*)
END_VAR
q1:=1;(*присваиваем значение q1=1*)
SMS1(bSend:=q1);(*передаем значение из q1 параметру ФБ*)
-------------------------------------------------------------
Вот так будет работать По крайней мере компилируется без ошибки 4062.
Вывод:
Параметру bSent присваиваем значение не напрямую при вызове, а через переменную q1, хотя q1 не указатель, а просто переменная. А в helpe написано "переменные вход-выход (VAR_IN_OUT) передаются в экземпляр функционального блока через указатели".
В упор не вижу тут явного объявления указателя (POINTER TO ..) Это вольности перевода helpa? Пожалуйста поясните, может я заблуждаюсь?
Всем спасибо заранее!
Последний раз редактировалось olegon; 12.07.2010 в 22:45.
Причина: уточнение
-
для входных и выходных переменных в каждом экземпляре фб им выделяется отдельная память и при вызовах идет копирование значений. для вход-выход память не выделяется, в экземпляр неявно отсылается адрес (указатель) оригинала. отсюда переменная вход-выход тянет аналогичные указателю опасности и ограничения, на что в хелпе и указано.
-
Есть вопрос. В программе CoDeSys считываю с ЖКИ ПЛК63 свой конфигурационный параметр типа Dword (SubMenu/TimeP). Затем мне его надо запустить на вход таймера, для чего необходимо перевести в из Dword в Time. Вопрос: какой функцией это делается, и какая библиотека нужна?
Честно убил определённое кол-во времени на самостоятельный поиск, но не нашёл. Если где было - извиняюсь.
-
там библиотек никаких не надо?
а то я так уже пробовал, а он ,в режиме симуляции, на входе счётчика ничего не отображал.(тоесть параметр 10сек., а вхот Pv(или как там) - 0)
-
В режиме слаив СП 270 не передает значения PS регистров в контроллер и не читате float переменные в чем тут дело?
-
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума