Страница 602 из 1043 ПерваяПервая ... 102502552592600601602603604612652702 ... ПоследняяПоследняя
Показано с 6,011 по 6,020 из 10426

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

  1. #6011

    По умолчанию

    Цитата Сообщение от Осинский Алексей Посмотреть сообщение
    У меня используется одно реле.
    Просто значение ему присваивается в 2х местах.
    Одна из веток будет активна, когда температура внутри реактора выше уставки,
    вторая, когда температура внутри реактора ниже уставки.
    Точно, не внимателен был.
    Еще раз благодарю за помощь!

  2. #6012

    По умолчанию

    Скажите пожалуйста, как в языке LD вызывается функция? С ФБ все ясно, создал, добавил через команду "Вставить->Функциональный блок". А с функцией как? В мануале вообще как-то непонятно написано

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

    По умолчанию

    Цитата Сообщение от strs Посмотреть сообщение
    Скажите пожалуйста, как в языке LD вызывается функция? С ФБ все ясно, создал, добавил через команду "Вставить->Функциональный блок". А с функцией как? В мануале вообще как-то непонятно написано
    А какая разница?
    Берете элемент с EN и вставляете, а там хоть функция, хоть ФБ.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #6014

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    А какая разница?
    Ну вот, созданы у меня ФБ pump и функция A1. Я нажимаю "Вставит функциональный блок", в списке Фб есть, а функции нет.
    Вложение 33130

    UPD, ясно, спасибо.

  5. #6015

    По умолчанию

    Цитата Сообщение от Осинский Алексей Посмотреть сообщение
    Есть еще вариант: на выходе ПИД-регулятора установить конструкцию
    Вложение 33098

    Плюс мы рекомендуем использовать ПИД-регуляторы библиотек нашей разработки.
    Библиотеки доступны по ссылке
    В зависимости от Вашего контроллера выберите библиотеку:
    Библиотека PID_Reg2.lib поддержана только в ПЛК63/73.
    Библиотека PID_Regulators.lib поддержана только в ПЛК1хх (в т.ч. ПЛК110 [M02]).

    ФБ этих библиотек не работают в режиме отладки, но зарекомендовали себя лучше, чем стандартный ПИД-регулятор библиотеки Util, который Вы используете в своем проекте.
    Доброго времени суток!
    Вот, использовал Ваш каскад на выходе и применил ПИД из рекомендованной библиотеки. Вроде не ругается. На неделе попробую вживую прогнать ПЛК73 на экспериментальном реакторе.
    Вложение 33162

    С уважением,

  6. #6016

    По умолчанию

    Контроллер ПЛК150 + панель СП307. Почему при использовании обмена по RS485 в основной программе, перестает идти опрос устройств ModBus в Конфигурации ПЛК? Как правильно программно опрашивать панель, так что бы не прекращался обмен с ней в Конфигурации ПЛК?

  7. #6017

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Никогда не слышали - "Занято !" ?
    Опрашиваю один раз при включении
    Код:
    IF POINT_FLAG THEN
    	IF GET_POINT() THEN POINT_FLAG:=FALSE;END_IF
    END_IF
    функция GET_POINT() считывает таблицу данных из панели по ModBus и после этого прекращается обмен в конфигурации ПЛК, все переменные объявлены как глобальные, потому что если объявляю их в функции, то не считывает таблицу.
    Код функции GET_POINT:

    (*t_voz:=WORD_TO_INT(RS_TMP2);*)

    t:=t+1;
    IF (t MOD 1000)=0 THEN
    A := A + 1;
    IF A > 9999 THEN
    A := 0;
    END_IF
    END_IF

    (*Устанавливаем настройки COM-порта*)
    IF port_opened=0 THEN
    Settings.Port:=com_num; (*номер COM-порта*)
    Settings.dwBaudRate:=38400; (*скорость*)
    Settings.byParity:=0;
    Settings.dwTimeout:=0;
    Settings.byStopBits:=1;
    Settings.dwBufferSize:=0;
    Settings.dwScan:=0;
    END_IF

    COM_SERVICE11(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
    (*Если COM-порт открыт, то переходим к приему и передачи данных *)
    IF COM_SERVICE11.ready THEN
    port_opened:=2;
    END_IF

    IF port_opened=2 THEN (*Удачно проинициализировали*)
    (* функция 03 инт - ФБ считывает значение параметра типа int из прибора с адресом 2 в регистр с номером 8 по протоколу Modbus-ASCII*)
    enabl:=1;
    get1_modbus(
    Enable:=enabl , (* разрешение работы блока *)
    Mode:=MB_RTU , (*режим передачи*)
    DevAddr:=2 , (*адрес*)
    FirstAddr:=10400 , (*номер регистра*)
    Quantity:=10, (*количество регистров*)
    ComHandle:=Settings.Port , (*номер COM-порта*)
    TimeOut:=TimeOut , (*Таймаут T#50ms*)
    Buffer:=Buffer , (* буфер данных *)
    Complete=>cmpl , (* скопировать признак завершения операции *)
    Exception=>err , (* скопировать регистр ошибок *)
    ByteCnt=>DataSize ); (*кол-во считанных байтов *)
    (*если установлен признак завершения операции, то *)
    IF cmpl THEN
    IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
    x:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
    cnt:=0;
    WHILE cnt<5 DO
    V1_POINT[cnt] := BYTE_TO_WORD(BUFFER[2*cnt+1]) OR SHL(BYTE_TO_WORD(BUFFER[2*cnt]),8);
    cnt:=cnt+1;
    END_WHILE
    cnt:=0;
    WHILE cnt<5 DO
    V2_POINT[cnt] := BYTE_TO_WORD(BUFFER[2*cnt+11]) OR SHL(BYTE_TO_WORD(BUFFER[2*cnt+10]),8);
    cnt:=cnt+1;
    END_WHILE

    END_IF

    END_IF
    END_IF
    enabl:=0;
    COM_SERVICE11.Delay ;
    GET_POINT:= cmpl;
    RETURN;

    Подскажите как правильно "положить трубку" после опроса COM_SERVICE11.Delay; для этих целей добавил, но не помогло.

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

    По умолчанию

    Цитата Сообщение от Sheldon Посмотреть сообщение
    Опрашиваю один раз при включении
    Код:
    IF POINT_FLAG THEN
    	IF GET_POINT() THEN POINT_FLAG:=FALSE;END_IF
    END_IF
    функция GET_POINT() считывает таблицу данных из панели по ModBus и после этого прекращается обмен в конфигурации ПЛК, все переменные объявлены как глобальные, потому что если объявляю их в функции, то не считывает таблицу.
    Код функции GET_POINT:

    (*t_voz:=WORD_TO_INT(RS_TMP2);*)

    t:=t+1;
    IF (t MOD 1000)=0 THEN
    A := A + 1;
    IF A > 9999 THEN
    A := 0;
    END_IF
    END_IF

    (*Устанавливаем настройки COM-порта*)
    IF port_opened=0 THEN
    Settings.Port:=com_num; (*номер COM-порта*)
    Settings.dwBaudRate:=38400; (*скорость*)
    Settings.byParity:=0;
    Settings.dwTimeout:=0;
    Settings.byStopBits:=1;
    Settings.dwBufferSize:=0;
    Settings.dwScan:=0;
    END_IF

    COM_SERVICE11(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
    (*Если COM-порт открыт, то переходим к приему и передачи данных *)
    IF COM_SERVICE11.ready THEN
    port_opened:=2;
    END_IF

    IF port_opened=2 THEN (*Удачно проинициализировали*)
    (* функция 03 инт - ФБ считывает значение параметра типа int из прибора с адресом 2 в регистр с номером 8 по протоколу Modbus-ASCII*)
    enabl:=1;
    get1_modbus(
    Enable:=enabl , (* разрешение работы блока *)
    Mode:=MB_RTU , (*режим передачи*)
    DevAddr:=2 , (*адрес*)
    FirstAddr:=10400 , (*номер регистра*)
    Quantity:=10, (*количество регистров*)
    ComHandle:=Settings.Port , (*номер COM-порта*)
    TimeOut:=TimeOut , (*Таймаут T#50ms*)
    Buffer:=Buffer , (* буфер данных *)
    Complete=>cmpl , (* скопировать признак завершения операции *)
    Exception=>err , (* скопировать регистр ошибок *)
    ByteCnt=>DataSize ); (*кол-во считанных байтов *)
    (*если установлен признак завершения операции, то *)
    IF cmpl THEN
    IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
    x:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
    cnt:=0;
    WHILE cnt<5 DO
    V1_POINT[cnt] := BYTE_TO_WORD(BUFFER[2*cnt+1]) OR SHL(BYTE_TO_WORD(BUFFER[2*cnt]),8);
    cnt:=cnt+1;
    END_WHILE
    cnt:=0;
    WHILE cnt<5 DO
    V2_POINT[cnt] := BYTE_TO_WORD(BUFFER[2*cnt+11]) OR SHL(BYTE_TO_WORD(BUFFER[2*cnt+10]),8);
    cnt:=cnt+1;
    END_WHILE

    END_IF

    END_IF
    END_IF
    enabl:=0;
    COM_SERVICE11.Delay ;
    GET_POINT:= cmpl;
    RETURN;

    Подскажите как правильно "положить трубку" после опроса COM_SERVICE11.Delay; для этих целей добавил, но не помогло.
    Продолжим издеваться, не приходило в голову что два мастера в сети ( конфигуратор и библиотечный) быть не должно?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  9. #6019

    По умолчанию

    Цитата Сообщение от Sheldon Посмотреть сообщение
    Контроллер ПЛК150 + панель СП307. Почему при использовании обмена по RS485 в основной программе, перестает идти опрос устройств ModBus в Конфигурации ПЛК? Как правильно программно опрашивать панель, так что бы не прекращался обмен с ней в Конфигурации ПЛК?
    Это не совсем верный подход.
    Какую задачу Вы решаете таким образом?
    Опишите, пожалуйста, подумаем как решить.

  10. #6020

    По умолчанию

    Продолжим издеваться, не приходило в голову что два мастера в сети ( конфигуратор и библиотечный) быть не должно?
    В сети один мастер - ПЛК. А то что в программе при открытии порта "ручками" затыкается автоматический обмен это не значит что мастера в сети 2, а скорее всего что такое использование не предусмотрено, а как запустить автоматический обмен после того как он заткнулся - я не знать)
    Цитата Сообщение от Осинский Алексей Посмотреть сообщение
    Это не совсем верный подход.
    Какую задачу Вы решаете таким образом?
    Опишите, пожалуйста, подумаем как решить.
    В панели помимо переменных которые нужно считывать постоянно как это делает конфигуратор, есть еще большая таблица в ПЗУ(массив регистров PFW), которую нужно считывать очень редко (при загрузке, либо когда ее изменили в процессе работы). Даже один процесс задания переменных в количестве 50-100шт не очень прельщает. Может можно как то считать в массив в конфигураторе?

Страница 602 из 1043 ПерваяПервая ... 102502552592600601602603604612652702 ... ПоследняяПоследняя

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

Ваши права

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