Страница 894 из 1040 ПерваяПервая ... 394794844884892893894895896904944994 ... ПоследняяПоследняя
Показано с 8,931 по 8,940 из 10399

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #8931
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    Цитата Сообщение от Anton441 Посмотреть сообщение
    Так как применить библиотеку stsndart? ..
    Код:
    VAR CONSTANT
    (*"делите и побеждайте.." (С) melky*)
    	DELIM	: STRING := '<0x0D><0x0A>'; (*в натуре видимо нужно '$R$N', оно же '$0D$0A'*)
    END_VAR
    VAR
    	L_DELIM	: DWORD;
    	longstr : STRING(1000) := (*1000: любое тупо большее макс ожидаемого (580?) + sizeof(тип под pstr), ниже*)
    //из примера выше - как есть
    '026099 1217 164<0x0D><0x0A>....<0x0D><0x0A>026106 853 1095';
    
    	cnt		: INT; (*сколько строк после парсинга*)
    	result	: ARRAY[1..40] OF STRING; (*40: любое >= чем макс кол-во "тегов", string(x) - X заведомо вмещающее "тег"*)
    	(*в результ класть DELIM не вижу смысла*)
    
    	i		: DWORD;
    	pstr	: POINTER TO STRING; (*string(x) - X заведомо вмещающее "тег" + DELIM*)
    	pz		: POINTER TO BYTE;
    	z		: BYTE;
    END_VAR
    -------------------------------------------------
    L_DELIM := LEN(DELIM);
    cnt := 0;
    pstr := ADR(longstr);
    REPEAT
    	cnt := cnt + 1;
    	i := FIND(pstr^, DELIM (*заместо DELIM достаточно 1-ый символ  DELIM'а*));
    	(*//тупо быстрее MID'а*)
    	IF i > 0 THEN (*ненужно здесь SEL вставлять, т.к. каждый цикл LEN выполнять незачем*)
    		pz := pstr + i - 1;
    	ELSE
    		pz := pstr + INT_TO_DWORD(LEN(pstr^));
    	END_IF
    	z := pz^; (*либо 1-й символ DELIM'а либо #0*)
    	pz^ := 0;
    	result[cnt] := pstr^;
    	pz^ := z;
    	(*//*)
    	pstr := pz + L_DELIM;
    UNTIL i = 0 //проверять cnt на превышение макс кол-ва строк - сами
    END_REPEAT
    ps
    вообще задача непонятна - как можно длину длиной строки просрать если она не возникает в ПЛК из ниоткуда
    Последний раз редактировалось Валенок; 02.08.2022 в 17:58.

  2. #8932

    По умолчанию

    END_VAR из раздела объявлений, с наглой мордой, переселился в конец программы.

  3. #8933
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    Она сама, это глюк КДС !!!
    ))
    Спасибо, убрал
    и добавил (рука дрогнула когда копипастил)
    Последний раз редактировалось Валенок; 02.08.2022 в 15:59.

  4. #8934

    По умолчанию

    Добрый день. Так сложилось, что сначала изучил OWEN Logic, теперь дошла очередь до Codesys.
    Вопрос. Как реализовать промежуточное сохранение значения входа или переменной, часто это называют термином "защелка"?
    В лоджике это было примерно такАнимация.gif

  5. #8935
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от Ruslanadm Посмотреть сообщение
    Добрый день. Так сложилось, что сначала изучил OWEN Logic, теперь дошла очередь до Codesys.
    Вопрос. Как реализовать промежуточное сохранение значения входа или переменной, часто это называют термином "защелка"?
    В лоджике это было примерно такАнимация.gif
    Блок MOVE с дополнительным входом EN
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #8936

    По умолчанию

    Цитата Сообщение от Ruslanadm Посмотреть сообщение
    Добрый день. Так сложилось, что сначала изучил OWEN Logic, теперь дошла очередь до Codesys.
    Вопрос. Как реализовать промежуточное сохранение значения входа или переменной, часто это называют термином "защелка"?
    Или написать на ST, переменные как на скрине - IF I8 THEN AO1:=AI1; I8:=FALSE; END_IF
    Код:
    IF I8 THEN
    AO1:=AI1;
    I8:=FALSE;
    END_IF
    Последний раз редактировалось kondor3000; 04.08.2022 в 19:03.

  7. #8937

    По умолчанию

    Спасибо, все получилось. По крайней мере, с CFC, ST тоже, конечно, безусловно пригодится, но он пока только в планах.

  8. #8938

    По умолчанию

    Здравствуйте!
    К МВА подключен расходомер сигналом 4-40.
    Требуется посчитать сколько воды проходит в течении 10, 30, 1 час. Можно конечно каждую секунду суммировать значения и делить на интервал времени.
    Не нашел готовый блок, возможно плохо искал и есть готовый блок для подобной задачи.
    Подскажите пожалуйста есть для подобной задачи готовые блоки учета нарастающим итогом за заданный интервал времени?

  9. #8939

    По умолчанию

    Integral из util.liv

  10. #8940

    По умолчанию

    Здравствуйте, заинтересовала такая задача. На фабрике есть сеть датчиков влажности которые передают в свой специализированный контроллер данные (допустим по Modbus RTU), можно ли как то "присосаться" к этой сети с помощью ПЛК110? Я так полагаю в режиме слейв он данные запрашивать не может, и два мастера в сети тоже не могут существовать. Специализированный контроллер тоже не сможет передать данные в ПЛК110 он такой функции не имеет.

Страница 894 из 1040 ПерваяПервая ... 394794844884892893894895896904944994 ... ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •