Страница 239 из 320 ПерваяПервая ... 139189229237238239240241249289 ... ПоследняяПоследняя
Показано с 2,381 по 2,390 из 3198

Тема: Панели оператора СП3xx. Вопросы и ответы

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

    По умолчанию

    Цитата Сообщение от BrEST Посмотреть сообщение
    Спасибо за мысль, тоже попробую:
    WORD Value=0;
    Value=PSW[531];
    PSW[531]!=0? Write(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, Value): Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_BIT, &PSW[531]);

    Как-то так получилось, похоже на правду?
    Я в Си не силен, по синтаксису не скажу
    но чтение (Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_BIT, &PSW[531]) здесь, в макросе, не делал бы
    Оставил бы чтение PSW531 в функции копирования 60 регистров

    Хотя может и так оставить.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #2382
    Пользователь
    Регистрация
    11.04.2016
    Адрес
    Брест
    Сообщений
    39

    По умолчанию

    Не пинайте тапком, если решил задачу не оптимальным способом, но у меня все заработало.
    Итак, для возможности одновременного задания уставки с ПР200, СП3ХХ и OwenCloud (или/и например со SCADA) нужно в панели оператора СП3ХХ:
    1. Создать скрипт и вызывать его функциональной областью по событию "После включения панели" (режим - последовательный) :

    Код:
    WORD Value1=0;
    WORD Value2=0;
    Value1=PSW[531];
    PSW[531]!=0 ? Write(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, Value1): Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, &PSW[531]);
    Value2=PSW[514];
    PSW[514]!=0 ? Write(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, Value2): Read(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, &PSW[514]);
    2. Создать скрипт и вызывать его функциональной областью в цикле каждые, например, 2 секунды, режим вызова скрипта - последовательный:
    Код:
    WORD Value1=0;
    WORD Value2=0;
    Value1=PSW[531];
    Value2=PSW[514];
    Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, &PSW[600]);
    if (PSW[600]!=PSW[601]) 
    {PSW[531]=PSW[600];}
    PSW[531]!=PSW[600] ? Write(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, Value1) : Read(PLC, 1, MODBUS_RTU_REG_4X, 531, 0, TYPE_WORD, &PSW[601]);
    Read(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, &PSW[602]);
    if (PSW[602]!=PSW[603]) 
    {PSW[514]=PSW[602];}
    PSW[514]!=PSW[602] ? Write(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, Value2) : Read(PLC, 1, MODBUS_RTU_REG_4X, 514, 0, TYPE_WORD, &PSW[603]);
    // Комментарии:
    // Регистры PSW[601], PSW[603] - буферные значения изменяемых уставок, при предыдущем опросе
    // Регистры PSW[600], PSW[602] - буферные значения изменяемых уставок, при текущем опросе

    3. В этой же функциональной области добавить функцию "Копирование группы регистров" (в моем случае 60 шт. с ) как на картинке:
    изображение_2022-02-12_133914.png

    Соответственно скрипт написан для возможности изменения регистров 514 и 531 в ПР200, на котором реализована вся логика работы основной программы.
    Последний раз редактировалось BrEST; 13.02.2022 в 17:35.

  3. #2383

    По умолчанию

    У меня вопрос: Почему когда добавляешь в проект историческую таблицу, при эмуляции очень долго загружается окно эмуляции? Примерно секунд 30.

  4. #2384

    По умолчанию

    Всем привет.
    Подключил к СП-307 блок входов-выходов МК110-224 (8 входов, 4 выхода)
    Для чтения состояния входов использую макрос:

    Read (PLC, 24, MODBUS_RTU_REG_3X, 51, 0, TYPE_WORD, &Value);

    А как записать выходы? Пробую так:

    Write (PLC, 24, MODBUS_RTU_REG_16, 50, 0, TYPE_WORD, &Value);

    Но так не проходит. Ругается на параметр "MODBUS_RTU_REG_16".
    В руководстве на блок входов-выходов МК110-224 написано, что "Регистры записываются командой 16 (0x10), считываются – командами 3 (0x03) или 4 (0x04)".

    Может кто подскажет, как правильно сформировать команду записи?
    Спасибо.

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

    По умолчанию

    Во первых, что Вы изобретаете не существующие ключевые слова.
    Во встроенной справке перечислены ВСЕ ДОПУСТИМЫЕ названия регистров

    Захват-02.png

    Воспользуйтесь встроенной автоподстановкой
    - не делайте копи/пасте, а вводите ручками, посимвольно Write( , после скобки появится стандартное окно выбора регистра. выбрать нужно тип -Регистр, в опциях регистра - 4х50
    Скрытый текст:


    Во вторых, за выбор команды записи отвечает системный регистр PFW36.2 (для PLC порта)
    Захват-01.png

    Т.е. функц.областью, глобальной, с действием - После загрузки проекта, с функцией - Установить бит PFW36.2.
    Вступает в действие после перезагрузки панели по питанию
    Последний раз редактировалось petera; 23.02.2022 в 09:22.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #2386

    По умолчанию

    Спасибо, в первой частью разобрался.
    А по - поводу второй части - нужно в начале макроса установить бит 2 в PFW?
    Это делается так:
    Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 36, 2, TYPE_BIT, 1);

    И потом перезагрузить панель? (передернуть питание)
    Последний раз редактировалось ВладОвен; 23.02.2022 в 09:50.

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

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Спасибо, в первой частью разобрался.
    А по - поводу второй части - нужно в начале макроса установить бит 2 в PFW36?
    Зачем в макросе?
    Вторая часть подразумевает обычную функциональную область на любом экране
    Действия по установке бит 2 в PFW36 нужно делать всего ОДИН РАЗ ЗА ВСЕ ВРЕМЯ РАБОТЫ ПАНЕЛИ ПОСЛЕ ЗАГРУЗКИ ПРОЕКТА.
    Если делать в начале макроса, то при каждом вызове макроса будет выполнятся запись во флеш память (PFW), ресурс перезаписи которой ограничен.
    Короче, зачем этот геморрой?
    Делаем
    Т.е. функц.областью, глобальной, с действием - После загрузки проекта, с функцией - Установить бит PFW36.2.
    Вступает в действие после перезагрузки панели по питанию
    Захват-02.png Захват-03.png

    Захват-04.png
    Последний раз редактировалось petera; 23.02.2022 в 09:58.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #2388

    По умолчанию

    Спасибо. Теперь стало понятно. Сделал так, как вы советовали.
    Но при записи в порт PLC такой командой:
    Write(PLC, 24, MODBUS_RTU_REG_4X, 50, 0, TYPE_WORD, &Value2);,
    не проходит компиляция макросов. Ругается:
    "Глобальный макрос: line -5: implicit cast of pointer to 'int'" (неявное приведение указателя на 'int')
    Но в глобальном макросе у меня ничего нету. Он пуст.
    И при чем тут line 5? Эта ошибка пропадает, если закомментировать строку №7

    Трабл.png

    (это я пытаюсь подружить панель СП307 и блок МК110. Читать входы и писать выходы)
    Последний раз редактировалось ВладОвен; 23.02.2022 в 10:18.

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

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Спасибо. Теперь стало понятно. Сделал так, как вы советовали.
    Но при записи в порт PLC такой командой:
    Write(PLC, 24, MODBUS_RTU_REG_4X, 50, 0, TYPE_WORD, &Value2);,
    не проходит компиляция макросов. Ругается:
    "Глобальный макрос: line -5: implicit cast of pointer to 'int'" (неявное приведение указателя на 'int')
    Но в глобальном макросе у меня ничего нету. Он пуст.
    И при чем тут line 5? Эта ошибка пропадает, если закомментировать строку №7

    Трабл.png

    (это я пытаюсь подружить панель СП307 и блок МК110. Читать входы и писать выходы)
    Не надо "&" перед Value2

    Write(PLC, 24, MODBUS_RTU_REG_4X, 50, 0, TYPE_WORD, Value2)

    Смотри встроенную справку по функции Write
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Ругается:
    "Глобальный макрос: line -5: implicit cast of pointer to 'int'" (неявное приведение указателя на 'int')
    Но в глобальном макросе у меня ничего нету. Он пуст.
    И при чем тут line 5? Эта ошибка пропадает, если закомментировать строку №7

    Трабл.png
    Не закрывая проект, смотри в папке конфигуратора \ARMTool
    Результаты компиляции будут в папка типа "MacХХ"
    Твоя "line 5" находится в файле MacХХ.c
    Захват-01.png

    ВНИМАНИЕ
    Папок типа "MacХХ" может быть несколько, каждая новая папка создается при каждой компиляции макросов. Ищи последнюю по времени изменения
    Последний раз редактировалось petera; 23.02.2022 в 10:42.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 239 из 320 ПерваяПервая ... 139189229237238239240241249289 ... ПоследняяПоследняя

Похожие темы

  1. Экспорт CSV в панели СП3xx и порядок квитирования событий
    от theoretician в разделе Панели оператора (HMI)
    Ответов: 30
    Последнее сообщение: 24.08.2021, 16:17
  2. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  3. Сенсорные панели оператора ОВЕН СП3ХХ
    от Боднар Олег Миколайович в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 17.12.2015, 09:09
  4. СПК 107 в качестве панели оператора
    от Леонид в разделе СПК1хх
    Ответов: 15
    Последнее сообщение: 20.11.2015, 08:17

Ваши права

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