Страница 63 из 699 ПерваяПервая ... 1353616263646573113163563 ... ПоследняяПоследняя
Показано с 621 по 630 из 6985

Тема: CODESYS V3.5. Вопросы и ответы

  1. #621

    По умолчанию

    Возможно, вопрос не относится к этой ветке, но темы в других местах остались без ответа.

    Имеется среда CODESYS V.3.4, ПЛК МОДУС 5684 с интерфейсным модулем 5672, с помощью которого ПЛК (мастер) по ModBus опрашивает ПЧ (слейв).
    Проблема заключается в том, что ПЛК не видит частотник, хотя видит и общается с другими слейв-устройствами. Также запускал программу ModbusPoll, она регистры ПЧ видит. Возможно, в программе ПЛК формируется неправильный modbus-запрос к частотнику? Можно ли это проверить?

    Ссылка на мою тему с описанием проблемы и проектом: http://www.owen.ru/forum/showthread.php?t=22964

  2. #622

    По умолчанию

    Может, тут подскажете... как такое лечить? При использовании библиотеки ArchiverSPK Вложение 22521 SP5 Patch 5, библиотека устанавливается с ошибками и из репозитория СПК и отдельно. Ошибка: Вложение 22523

  3. #623

    По умолчанию

    Господа, возникло 2 вопроса. Как можно повернуть элемент, изображение на мнемосхеме на 90 градусов для 'красоты'. И еще как реализовать открытие/закрытие к примеру 6 клапанов с подтверждением типа да/нет. Надо создавать диалог на каждый клапан?

  4. #624
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    И еще как реализовать открытие/закрытие к примеру 6 клапанов с подтверждением типа да/нет. Надо создавать диалог на каждый клапан?
    Не обязательно. Была у меня такая задача.

    Создаём диалог с параметрами имяКлапана, идКлапана:

    cds35_valve_dlg.png

    Имя отображаем в строке. ИД используем для передачи в функцию открывания/закрывания клапанов. После вызова функции закрываем диалог.

    cds35_valve_dlg_click.png

    Там, где изображены клапаны, вызываем этот диалог с нужными параметрами для каждого клапана:

    cds35_valve_dlg_open.png

    Под значками клапанов удобно использовать невидимые кнопки чуть крупнее значков:

    vis.png

  5. #625
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от Andrew_Stranger Посмотреть сообщение
    Как можно повернуть элемент, изображение на мнемосхеме на 90 градусов для 'красоты'.
    Во вкладке Абсолютное перемещение привяжите к параметру Внутреннее вращение переменную и подставляйте в нее значение угла (в градусах), на которое нужно повернуть элемент.

  6. #626

    По умолчанию

    Yegor спасибо, а можно еще на функцию посмотреть.
    Евгений Кислов, т.е просто так повернуть элемент нельзя с целью удобного расположения?

  7. #627
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Сами попросили.

    Код:
    FUNCTION SendPlcCmd : BOOL
    VAR_INPUT
        Cmd: SCommand;
        Arg0, Arg1: WORD;
    END_VAR
    
    
    IF CMD_CTRL.cmdCount < 51 THEN
    
        CMD_CTRL.cmdQueue[CMD_CTRL.cmdCount][0] := Cmd;
        CMD_CTRL.cmdQueue[CMD_CTRL.cmdCount][1] := Arg0;
        CMD_CTRL.cmdQueue[CMD_CTRL.cmdCount][2] := Arg1;
        CMD_CTRL.cmdCount := CMD_CTRL.cmdCount + 1;
    END_IF
    Код:
    PROGRAM CMD_CTRL (* Sends commands to the PLC *)
    VAR_INPUT
        Cmd, Arg0, Arg1: WORD;
        cmdQueue: ARRAY[0..50] OF ARRAY [0..2] OF WORD;
        cmdCount: INT;
    END_VAR
    VAR
        Checksum: WORD;
        Pulse: TON := (PT := T#300MS);
        tx: BOOL;
        cmdIdx: INT;
        edge: R_TRIG;
    END_VAR
    
    (* Command conveyor, up to 50 commands in queue *)
    tx := FALSE;
    edge(CLK := cmdCount > 0);
    Pulse(IN := NOT Pulse.Q AND cmdCount > 0);
    IF (Pulse.Q OR edge.Q) AND cmdIdx < cmdCount THEN
        Cmd := cmdQueue[cmdIdx][0];
        Arg0 := cmdQueue[cmdIdx][1];
        Arg1 := cmdQueue[cmdIdx][2];
        Checksum := Cmd + Arg0 + Arg1;
        tx := TRUE;
        cmdIdx := cmdIdx + 1;
    ELSIF Pulse.Q THEN
        Cmd := 0;
        cmdIdx := cmdCount := 0;
    END_IF
    mbus_cmdctrl.png

    Это уже на ПЛК110, к которому подключены две СПК:
    Код:
    PROGRAM CMD_CTRL
    VAR_INPUT
        awaitingStop1, awaitingStop2, timeEditable1, timeEditable2: BOOL;
        timeLim1, timeLim2: TIME;
        auto: BOOL;
    END_VAR
    VAR
        cmdCount: INT;
        pOut: POINTER TO BOOL;
        dummy: BOOL;
        cmdStat: ARRAY [Idle..LastCmd] OF INT;
    
    
        b3online, b4online, b6online, b7online, b8online, uf1online: BOOL;
    END_VAR
    VAR_OUTPUT
        resetNeeded: BOOL;
    END_VAR
    
    resetNeeded := FALSE;
    
    
    IF SACmd <> Idle THEN
        IF SACmd + SAArg0 + SAArg1 <> SACmdChecksum THEN
            SACmd := Idle;
        END_IF
        cmdCount := cmdCount + 1;
    END_IF
    
    
    (* Select corresponding output *)
    pOut := MUX(SAArg0,
        ADR(k1), ADR(k2), ADR(k3), ADR(k4),
        ADR(k5), ADR(k6), ADR(k7), ADR(k8),
        ADR(k9), ADR(k10), ADR(k11), ADR(k12),
        ADR(k13), ADR(kdv), ADR(npp1), ADR(npp2),
        ADR(npp3), ADR(kez4), ADR(k14), ADR(k15),
        ADR(k16), ADR(k17), ADR(k18), ADR(k19),
        ADR(k20), ADR(k21), ADR(k22), ADR(k23),
        ADR(k24), ADR(k25), ADR(k26), ADR(k27),
        ADR(k28), ADR(npp4), ADR(ni1), ADR(ni2),
        ADR(chiller2), ADR(usnd_start), ADR(kdv2),
        ADR(chiller), ADR(k29), ADR(k30), ADR(k31)
    );
    
    
    (* &#206;&#242;&#234;&#235;&#254;&#247;&#232;&#242;&#252; &#240;&#243;&#247;&#237;&#238;&#229; &#243;&#239;&#240;&#224;&#226;&#235;&#229;&#237;&#232;&#229; &#226; &#224;&#226;&#242;&#238;&#236;&#224;&#242;&#232;&#247;&#229;&#241;&#234;&#238;&#236; &#240;&#229;&#230;&#232;&#236;&#229; *)
    IF auto THEN
        pOut := ADR(dummy);
    END_IF
    
    
    IF NOT auto THEN
        CASE SACmd OF
            Open:
                pOut^ := TRUE;
            Close:
                pOut^ := FALSE;
            Toggle:
                pOut^ := NOT pOut^;
            SetATG:
                IF SAArg1 = 0 THEN
                    PLC_PRG.ATG_SP := SAArg0;
                ELSE
                    AUTO1.atgtemp := SAArg0;
                END_IF
            SetGPL:
                IF SAArg1 = 0 THEN
                    INVControl.1 := SAArg0 > 0;
                    INVFreq := SAArg0 * 100;
                ELSE
                    AUTO1.gplfreq := SAArg0;
                END_IF
        END_CASE
    END_IF
    
    
    CASE SACmd OF
        SetTemp:
            PLC_PRG.PID_SP := SAArg0;
        SetTimers:
            IF NOT SAArg0.0 THEN
                AUTO1.time1 := WORD_TO_TIME(SAArg1 * 1000);
            ELSE
                AUTO2.time1 := WORD_TO_TIME(SAArg1 * 1000);
            END_IF
        StartAuto:
            resetNeeded := NOT auto;
            IF NOT SAArg1.0 AND AUTO1.step = 0 THEN
                AUTO1.process := SAArg0;
            ELSIF SAArg1.0 AND AUTO2.step = 0 THEN
                AUTO2.process := SAArg0;
            END_IF
        StopAuto:
            IF NOT SAArg1.0 THEN
                AUTO1.stop := TRUE;
            ELSE
                AUTO2.stop := TRUE;
            END_IF
        AbortAuto:
            IF NOT SAArg0.0 THEN
                AUTO1.process := 0;
            ELSE
                AUTO2.process := 0;
            END_IF
        SetRegen:
            PLC_PRG.RegenEnabled := SAArg0.0;
    END_CASE
    IF SACmd > 0 AND SACmd < SIZEOF(cmdStat) THEN
        cmdStat[SACmd] := cmdStat[SACmd] + 1;
    END_IF
    SACmd := Idle;
    Очень вероятно, что ничего этого в вашем случае не требуется, и можно обойтись телом первой функции, то есть сразу там исполнять команду.
    Последний раз редактировалось Yegor; 16.02.2016 в 11:47.

  8. #628
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от Andrew_Stranger Посмотреть сообщение
    Евгений Кислов, т.е просто так повернуть элемент нельзя с целью удобного расположения?
    Можно ввести туда константу. Если вопрос о том, можно ли повернуть изображение в редакторе CODESYS - то, вероятно, нет.

  9. #629

    По умолчанию

    Yegor, да зря попросил.
    С поворотом понятно.
    Еще вопрос, у всех СПК1xx, c сенсором проблемы или только у меня? На 3 моделях уже при работе, то промахиваешься мимо кнопки, то жмется она со второго раза. Разница по сравнению с работой различных панелей оператора сразу заметна.

  10. #630
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,064

    По умолчанию

    Цитата Сообщение от Andrew_Stranger Посмотреть сообщение
    Yegor, да зря попросил.
    С поворотом понятно.
    Еще вопрос, у всех СПК1xx, c сенсором проблемы или только у меня? На 3 моделях уже при работе, то промахиваешься мимо кнопки, то жмется она со второго раза. Разница по сравнению с работой различных панелей оператора сразу заметна.
    Попробуйте сделать калибровку экрана.

Страница 63 из 699 ПерваяПервая ... 1353616263646573113163563 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3177
    Последнее сообщение: 27.03.2024, 12:47
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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