оператор цикла Repeat <действие> until <условие>. - выполняет <действие>, пока <условие> не станет TRUE.
это все (что касается массивов и проверок... ) на ST пишу
Вид для печати
Сase не доводилось пользоваться, но как я понимаю ваш вариант - в каждом шаге перебрать все 27 комбинаций и в следоющих шагах тоже по 27?
залез в справку в стандарте МЭК не нашёл, правда оператора FOR тоже не увидел, можете привести пример кусочка текста проги с операторм REPEAT ?
RA. Большое спасибо, я сегодня приобрел инструмент который позволяет копнуть гораздо быстрее и изящней, если можно так сказать!!!!
Ответил в личку:)
Добрый день, не могу понять как изменить часовой пояс в контроллере. Через библиотеку получаю время в формате UTC +0.
Что интересно, через SPK_TOOLS время получаю адекватное. Используя библиотеку CAA DT_UTILS, через GetTime получаю время в DT UTC:+0. Почему - не могу понять, и вроде можно сменить часовой пояс, но тоже не получается
В общем разобрался. Когда залил пример проекта sys_time_SPK107_Target_3.5.2.0.projectarchive время перевелось на 2 часа назад.
Хотя, конечно как с часовым поясом работать всё же не понятно (чтение/запись)
Пробовал такой код:
где gmtSetIBias := 120 (я так понял в минутах задается).Код:rtrGetGmt(CLK:= cmdGetGmt, Q=> );
GetGmt(
xExecute:= rtrGetGmt.Q,
xDone=> ,
xBusy=> ,
xError=> ,
eError=> ,
tziInfo=> curGmt);
gmtIBias:=curGmt.iBias;
curSetGmt.iBias := gmtSetIBias;
rtrSetGmt(CLK:= cmdSetGmt, Q=> );
SetGmt(
xExecute:= rtrSetGmt.Q,
tziInfo:= curSetGmt,
xDone=> ,
xBusy=> ,
xError=> ,
eError=> );
Не работает.
Я когда-то пробовал сделать это на виртуальном контроллере - и у меня тоже не получилось. Мы уточним у компании 3S, как работать с данным функционалом.
Подскажите пожалуста, пытаюсь запустить виртуальный контроллер (WIN 3? Start PLS в трее все сделал) и выскакивает такое окно причем на двух компах, что делать?Вложение 26435
Большое спасибо, заработало!
Опять у меня непонятки с библиотекой CAA DTUtil.
Создаю ФБ
Но на выходе, кроме dayWeek и dayYear получаю нули. Я что-то не так делаю?Код:FUNCTION_BLOCK UNPACK_dwDT
VAR_INPUT
inDwDT :DWORD;
END_VAR
VAR_OUTPUT
dtRTC :DT;
year, month, day :UINT;
hour, minute, second :UINT;
//dayWeek :DTU.RTCLK.WEEKDAY;
dayWeek :UINT;
dayWeekWS :WSTRING;
dayYear :UINT;
END_VAR
VAR
ErrDayWeek :POINTER TO INT;
ErrDayConcat :POINTER TO INT;
splitDT :DTU.ERROR;
END_VAR
***********************************
dtRTC := DWORD_TO_DT (inDwDT);
splitDT := DTU.DTSplit(
dtDateAndTime:= dtRTC,
puiYear:= ADR(year),
puiMonth:= ADR(month),
puiDay:= ADR(day),
puiHour:= ADR(hour),
puiMinute:= ADR(minute),
puiSecond:= ADR(second));
dayWeek := DWORD_TO_UINT(((inDwDT / 86400) +3) MOD 7) + 1;
dayYear := DWORD_TO_UINT((inDwDT + 43200) / 31557600 + 1970);
У меня ваш ФБ работает нормально.
Вложение 26441
Предположу, что вы запускаете проект в эмуляции. Так делать не надо. Используйте виртуальный контроллер CODESYS Control Win V3. Cм. СПК. FAQ, п. 9.8.
Странно, ладно буду разбираться где накосячил...
Да, действительно дело было в этом, спасибо.
Здравствуйте, уважаемые! Подскажите новичку, а лучше "ткните", если не затруднит, в пример с ФБ ArchivatorOwenLib на языке CFC. Попытался разобрать в примере на ST, но до меня не доходит: как записывать в GetData несколько переменных? или нужно для каждой переменной свой блок на CFC?
подскажите где засада ,хочу послать данные на ОРС сервер не получается организовать модбас слейв с спк
В целом, Modbus Slave настроен корректно, только у параметра Всегда обновлять переменные лучше поставить значение Вкл. 2 (всегда в задаче цикла шины).
Ну и галочку Задержка я бы снял.
Вероятно, проблема на уровне настройки OPC. Напишите мне завтра на почту или в skype, пожалуйста - отправлю вам рабочую версию документа о связи СПК с OPC-серверами.
Подскажите пожалуста почему не исполняетВложение 26476ся простой код?Вложение 26477 Вложение 26478. Пробую на виртуальном контроллере.Спасибо.
Неужели целиком экран не показать? и не раскрыть массив, например, чтобы мы тоже видели значения все. и если есть исключения - CDS же пишет на чем он встал.
двойное синее подчеркивание массива - и о чем предупреждает компилятор??
Евгений прав, значение масива не передаёться виндекс CASE, вот так работает Вложение 26485. Сейчас пытаюсь как передать значение масива в индекс CASE, как получиться отпишусь.
по первым скринам:
http://www.owen.ru/forum/attachment....7&d=1474377028
в CASE приходит 3 (третий) элемент массива, равный 0. Далее в CASE его сравниваем с 1, 2, 3. Ноль естественно не равен ни 1, ни 2 ни 3. никае из условий CASE не выполняется. Обработки этой ситуации ELSE тоже нет.
И покажите хотя бы весь массив - какие значения его элементов.
Все ребят разобрался как работает оператор СASE и цикл REPEAT. Прилагаю скрин с програмкой Вложение 26494
Вложение 26496
Объясните пожалуйста, как добавить плк, без него, в режиме эмуляции, переменные на OPC сервер не достать, если я правильно понимаю, то под gateway, должна находится строка с плк. Ссылка на таргет плк приветствуется
Проблема решена, я скачал таргет, но забыл перезапустить codesys, после перезапуска все отобразилось, хоть плк назывался не читаемым шрифтом, но работает.
Может кто-то сталкивался с европрибором, с их плк возможно работать в codesys? Не могу найти их таргеты
Всем привет!
Работаю над одним проектом, в качестве ПЛК выбрал СПК1ХХ чисто для работы в эмуляторе.
Ну так вот столкнулся с такой проблемой, сигнал на включение выхода уходит, а выход не подсветчивается. Или еще хуже, выход светится а на визуализации не отображается, хотя раннее всё работало. первый раз с таким сталкиваюсь.
Стандартная рекомендация - выполнить команды Очистить все и Перекомпиляция из меню Компиляция, после чего повторно загрузить (не путать с онлайн-обновлением) проект. Если не поможет, то надо выкладывать архив проекта и скриншоты с подробным описанием, что ожидается и что происходит на самом деле.
Подскажите пожалуста, как в КДС -3 записать несколько инструкции в одну строчку, например TEMP_1:=1 TEMP_2:=1 TEMP_3:=1;
Спасибо, применю!
Еш0 по синтаксису вопрос, как записать проверку сразу нескольких переменных в одну строчку Вложение 26695