Страница 406 из 720 ПерваяПервая ... 306356396404405406407408416456506 ... ПоследняяПоследняя
Показано с 4,051 по 4,060 из 7195

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

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

    По умолчанию

    Цитата Сообщение от energvk Посмотреть сообщение
    Да, спасибо petera, я так уже и сделал. Единственно в чём сомнения, "текущее частота ПЧ" и "текущий ток ПЧ", мне не требуется получать так часто, вполне устроит и раз в секунду, поэтому я думаю эти два параметра выделить в 4-й блок. Это же правильно? Или будет пересекаться с 3-м блоком?
    Пересекаться? Каким образом? Делайте столько UMD, сколько пожелаете и для каждого могут быть свои настройки WorkMode.
    И по
    Это же всё равно через библиотеку только решается, правильно?
    Это делается без библиотек, на стандартной конфигурации, например http://www.owen.ru/forum/showthread....l=1#post141316
    Последний раз редактировалось petera; 15.06.2015 в 11:33.
    26 лет деятельности в области промышленной безопасности

  2. #4052

    По умолчанию

    petera

    Цитата Сообщение от energvk Посмотреть сообщение
    Да, спасибо petera, я так уже и сделал. Единственно в чём сомнения, "текущее частота ПЧ" и "текущий ток ПЧ", мне не требуется получать так часто, вполне устроит и раз в секунду, поэтому я думаю эти два параметра выделить в 4-й блок. Это же правильно? Или будет пересекаться с 3-м блоком?
    Пересекаться? Каким образом? Делайте столько UMD, сколько пожелаете и для каждого могут быть свои настройки WorkMode.
    И по
    Это же всё равно через библиотеку только решается, правильно?
    Это делается без библиотек, на стандартной конфигурации, например http://www.owen.ru/forum/showthread....l=1#post141316

    Сегодня, 10:19
    energvk

    Цитата Сообщение от petera Посмотреть сообщение
    Фишка с "можно воспользоваться модулями ввода/вывода строк, а строки рассматривать как буферы приёма и отправки регистров" применима если ареса для регистров идут по порядку. А это не наш случай.
    Самый простой способ
    1. поместить регистры "управляющая команда на ПЧ" и "задание частоты" в отдельные UMD с WorkMode - By value change, т.е. запись в ПЧ будет только при изменении значения регистров в программе.
    2. Все остальные input регистры оставить в третьем UMD для которого оставить WorkMode - By poll time
    Вложение 18584

    Да, спасибо petera, я так уже и сделал. Единственно в чём сомнения, "текущее частота ПЧ" и "текущий ток ПЧ", мне не требуется получать так часто, вполне устроит и раз в секунду, поэтому я думаю эти два параметра выделить в 4-й блок. Это же правильно? Или будет пересекаться с 3-м блоком?

    И по
    "можно воспользоваться модулями ввода/вывода строк, а строки рассматривать как буферы приёма и отправки регистров" применима если ареса для регистров идут по порядку.
    Это же всё равно через библиотеку только решается, правильно?

    Сегодня, 10:14
    Yegor

    Модбас предусматривает групповое чтение регистров, но в Овено-Кодесисе оно реализуется только для чтения в строковый тип.

    Например, надо читать сразу 20 смежных регистров, и часто. Добавляем String input module, в параметрах указываем подходящую функцию (Read Holding Registers), номер первого регистра и сколько надо прочитать в байтах (один регистр — два байта, то есть ставим 40). Подписываем эту строку как-нибудь типа ModbusRawInput. Дальше пользуемся функцией SysMemCpy из библиотеки SysLibMem, чтобы раздербанивать байты этой строки в переменные программы:
    Код:

    SysMemCpy(ADR(T0_Setpoint), ADR(ModbusRawInput) + 0, SIZEOF(T0_Setpoint));
    SysMemCpy(ADR(T1_Setpoint), ADR(ModbusRawInput) + 2, SIZEOF(T1_Setpoint));

    ... и так далее по карте регистров. То есть смысл в том, чтобы взять все регистры одной охапкой с устройства, а уже потом их разобрать.
    Yegor и petera большое спасибо за подробные и понятные разъяснения.

  3. #4053

    По умолчанию

    Всем привет! Учу по книжке) Подскажите пожалуйста куда вписывать это выражение что ниже, чтобы вызвать ресет для функционального блока????? ЗАРАНЕЕ БЛАГОДАРЕН!
    Выражение:
    Inst.Reset(in:= FALSE);
    Erg:= Inst.out;

    Ф-ний блок:
    FUNCTION_BLOCK Counter
    VAR_INPUT
    in:BOOL;
    END_VAR
    VAR_OUTPUT
    out:INT;
    END_VAR
    --------------------------
    IF in THEN
    out:=out+1;
    ELSE
    out:=out-1;
    END_IF

  4. #4054
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    709

    По умолчанию

    Не видно связи выражения с представленным функциональным блоком (сокращенно ФБ). Если хотите обнулить переменную out в ФБ Counter, то Вам надо в этом блоке добавить вход reset. И уже на него подавать сигнал для сброса.

    FUNCTION_BLOCK Counter
    VAR_INPUT
    in:BOOL;
    reset:bool;
    END_VAR
    VAR_OUTPUT
    out:INT;
    END_VAR
    --------------------------
    IF reset THEN
    out:=0;
    ELSIF in THEN
    out:=out+1;
    ELSE
    out:=out-1;
    END_IF
    ------
    для обнуления вызываем блок
    Counter(reset:=true);

    В этом случае на выходе блока будет все время 0, пока не вызовем блок с параметром false.
    Counter(reset:=false);

  5. #4055

    По умолчанию

    Цитата Сообщение от amn Посмотреть сообщение
    Не видно связи выражения с представленным функциональным блоком (сокращенно ФБ). Если хотите обнулить переменную out в ФБ Counter, то Вам надо в этом блоке добавить вход reset. И уже на него подавать сигнал для сброса.

    FUNCTION_BLOCK Counter
    VAR_INPUT
    in:BOOL;
    reset:bool;
    END_VAR
    VAR_OUTPUT
    out:INT;
    END_VAR
    --------------------------
    IF reset THEN
    out:=0;
    ELSIF in THEN
    out:=out+1;
    ELSE
    out:=out-1;
    END_IF
    ------
    для обнуления вызываем блок
    Counter(reset:=true);

    В этом случае на выходе блока будет все время 0, пока не вызовем блок с параметром false.
    Counter(reset:=false);
    Ну все дабы хорошо но как вызватьCounter(reset:=true); куда его вписывать вообще как все вызывать где прописивать эти вызовы????))))))))

  6. #4056

    По умолчанию

    cart.jpg

    Короче как зделать так?

  7. #4057
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,355

    По умолчанию

    Цитата Сообщение от Prototype2 Посмотреть сообщение
    cart.jpg

    Короче как зделать так?
    ну так прочтите в документации, что такое действие, если пока не понимаете его предназначения делайте проще, как Вам посоветовали с добавлением входной переменной
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  8. #4058

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ну так прочтите в документации, что такое действие, если пока не понимаете его предназначения делайте проще, как Вам посоветовали с добавлением входной переменной
    Ну а если я не могу понять по книжке то что???? Зачем нужен форум и этот раздел для прикола????

  9. #4059
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,355

    По умолчанию

    Цитата Сообщение от Prototype2 Посмотреть сообщение
    Ну а если я не могу понять по книжке то что???? Зачем нужен форум и этот раздел для прикола????
    если Вы действительно хотите изучать КДС, то повторно отправляю Вас к документации, а если ради прикола, то займитесь чем нибудь другим, например пойдите в дворники.
    под тем рисунком, что Вы тут выложиди ясно и понятно написано как вызывается действие - через точку в случае если вызов идет из родителя, а если внутри самого ПОУ то просто как функция без аргументов
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  10. #4060

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    если Вы действительно хотите изучать КДС, то повторно отправляю Вас к документации, а если ради прикола, то займитесь чем нибудь другим, например пойдите в дворники.
    под тем рисунком, что Вы тут выложиди ясно и понятно написано как вызывается действие - через точку в случае если вызов идет из родителя, а если внутри самого ПОУ то просто как функция без аргументов
    Вообще то я никого не оскорблял и не посылал в дворники как вы. Я нормально спросил культурно, а вы снова говорите на языке программирования. Я понимаю у вас там стаж много лет вы думаете что любому человеку доступны ваши слова без наглядного примера, но не все люди одинаковы не все понимают легко, некоторым надо показать тогда они понимают и двигаются дальше. А вы сразу в дворники. Эта стандартная книжка не сильно доступно обьясняет ели на то пошло и начинающий челове к не понимает теряется....

Страница 406 из 720 ПерваяПервая ... 306356396404405406407408416456506 ... ПоследняяПоследняя

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

Ваши права

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