Попробовал без скобок. Результат такой же. Напишу простенький тест сейчас..
VaBo
По поводу синтаксиса. В окне программы, в которую надо положить вашу POU, устанавливаете курсор на нужное место, нажимаете F2, выбираете Пользовательские программы>Ваша POU>Ok. Все вставится как надо.
Можно. Только следует учесть, что вызываемая программа работает с локальными переменными в приоритете. Т. е. если в проекте есть глобальная переменная и локальная в вызываемой POU с одинаковыми именами, то будет обрабатываться локальная.А можно ли из одной программы вызывать другую?
Это все понятно, непонятно было, как пошагово отлаживать. Как выяснилось после тестового проектика, если в вызываемой программе не поставить точку останова, то вызывающая программа при проходе "по шагам" визуально не заходит в вызываемую (по факту - да). Блин, только сейчас увидел, что есть F8 - "шаг детальный", который все делает, как нужно. А до этого экранную кнопку тыкал, а на экране только "шаг поверху"...
Наверняка эта тема много раз обсуждалась, но прошу ткнуть ) Как в Codesys v2 лучше реализовать распаковку регистра в 16 bool, и назад? Так же, как в ОвенЛожик, с помощью PUTBIT и EXTRACT или есть другой вариант? Чтобы связать ПЛК и ПР200.
В кодесис есть адресация к битам через точку
Упаковать биты в регистр можно такой функцией
В обратную сторону аналогично, используем Bxx:=W.xx, где хх=0,1,2,...15Код:FUNCTION PACK_W : WORD VAR_INPUT B0: BOOL; B1: BOOL; B2: BOOL; B3: BOOL; B4: BOOL; B5: BOOL; B6: BOOL; B7: BOOL; B8: BOOL; B9: BOOL; B10: BOOL; B11: BOOL; B12: BOOL; B13: BOOL; B14: BOOL; B15: BOOL; END_VAR VAR END_VAR (*Тело функции*) PACK_W.0:=B0; PACK_W.1:=B1; PACK_W.2:=B2; PACK_W.3:=B3; PACK_W.4:=B4; PACK_W.5:=B5; PACK_W.6:=B6; PACK_W.7:=B7; PACK_W.8:=B8; PACK_W.9:=B9; PACK_W.10:=B10; PACK_W.11:=B11; PACK_W.12:=B12; PACK_W.13:=B13; PACK_W.14:=B14; PACK_W.15:=B15;
А для случая "Чтобы связать ПЛК и ПР200" можно и без всяких "паков"
https://owen.ru/forum/showthread.php...l=1#post216361
https://owen.ru/forum/showthread.php...l=1#post187668
Скрытый текст:
Т.е. подправить файл hardware.cfg для таргета и получить в конфигурации "развернутые" 2byte или даже 4byte,
т.е. с возможностью доступа к любому биту как в модуле 8bits
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Вячеслав@
Я создавал свой ФБ.
Допустим это будет аналог PUTBIT:
------Код:Входные_переменные Ин1:bool .. Ин16 :bool -- ВЫходные_переменные Out:WORD; -- Тело Out.0:=Ин1; .. Out.15:=Ин16;
EXTRACT делается также, только наоборот.
Добрый день.
В SCDA через переменную типа int задается время в минутах.
В ПЛК на это время надо запустить таймер TON.
Подскажите, пожалуйста, как преобразовать int в переменную time для таймера?