Страница 470 из 471 ПерваяПервая ... 370420460468469470471 ПоследняяПоследняя
Показано с 4,691 по 4,700 из 4705

Тема: разные вопросы новичка

  1. #4691

    По умолчанию

    Цитата Сообщение от matim991 Посмотреть сообщение
    Добрый день, подскажите пожалуйста, Овен ПЛК 110-60, в codesys написана программа, в конфигураторе ПЛК добавил Modbus slave (TCP) и добавил 8bit в кол-ве 4 штук, то есть на регистр 0х00 2 и на 0х01 2, проблема в том, что в Овен OPC при опросе контроллера не видит изменение переменных после 15бита, с 0х01 регистра, состояние подключения пишет GOOD.
    Если через Codesys подключаться, то в конфигураторе и в программе все переключается, переменные все глобальные, на самом плк индикаторы тоже переключаются
    А какие адреса регистров опрашиваете?
    Возможно вам нужны адреса 0 и 1

  2. #4692

    По умолчанию

    Да, на 1-15 бит адрес 0, для 16-31 адрес 1, пробовал добавлять еще 2 по 8bit, чтобы проверить 2 адрес, но результат не меняется.
    Думал возможно проблема в настройке OPC, но и там вроде все нормально

  3. #4693

    По умолчанию

    Цитата Сообщение от matim991 Посмотреть сообщение
    Да, на 1-15 бит адрес 0, для 16-31 адрес 1, пробовал добавлять еще 2 по 8bit, чтобы проверить 2 адрес, но результат не меняется.
    Думал возможно проблема в настройке OPC, но и там вроде все нормально
    Для Coils адреса должны быть 0-15, 16-31,
    Для Holding регистров 0 и 1, только это уже маска бит будет

  4. #4694

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Для Coils адреса должны быть 0-15, 16-31,
    Для Holding регистров 0 и 1, только это уже маска бит будет
    Я не совсем вас понял, в Овен OPC в настройке "ТЕГ" есть раздел "настройка адресации", в которой для Holding я выставляю адрес 0 и нужный бит от 0 до 15 и адрес 1 для 16-31 бита.
    если выбирать настройку региона Coils, то в качестве связи выдает BAD

  5. #4695

    По умолчанию

    Цитата Сообщение от matim991 Посмотреть сообщение
    Я не совсем вас понял, в Овен OPC в настройке "ТЕГ" есть раздел "настройка адресации", в которой для Holding я выставляю адрес 0 и нужный бит от 0 до 15 и адрес 1 для 16-31 бита.
    если выбирать настройку региона Coils, то в качестве связи выдает BAD
    Если у вас Holding регистры, то регистр 0 биты с 0 по 15, 1 Биты в слейве.jpg
    регистр 1 тоже биты с 0 по 15.
    На скрине сделал по 10 бит в 0 и 1 регистре
    Последний раз редактировалось kondor3000; 23.03.2026 в 17:31.

  6. #4696

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Если у вас Holding регистры, то регистр 0 биты с 0 по 15, 1 Биты в слейве.jpg
    регистр 1 тоже биты с 0 по 15.
    На скрине сделал по 10 бит в 0 и 1 регистре
    Да все получилось, большое спасибо за помощь
    Даже не подумал о таком

  7. #4697

    По умолчанию

    Цитата Сообщение от matim991 Посмотреть сообщение
    Да все получилось, большое спасибо за помощь
    Даже не подумал о таком
    А вот опрос для Coils, только адреса уже 0-15 и 16-31. 1 Биты Coils.jpg
    На скрине сделал тоже по 10 бит

  8. #4698
    Пользователь
    Регистрация
    04.07.2024
    Адрес
    Краснодар
    Сообщений
    8

    По умолчанию

    Добрый день.
    Помогите сообразить!
    Пишу свой код типа счетчика моточасов. Готовые решения не устраивают, поэтому не плюйтесь.
    А вопрос в следующем. Необходимо сохранять счетчик при потере питания и соответственно восстанавливать данные после подачи питания. Для этого я, вне функционального блока создал энергонезависимую переменную. Вход куда я ее записываю, и выход который изменяет эту переменную. Но при старте программа не успевает перебросит данные с входа на выход и переменная обнуляется. Точнее если написать в начале кода (первой строкой Vaur OUT := Var IN) То она успевает перезаписать и все вроде нормально. Но если поместить ее строкой ниже или не дай бог засунуть в условие типа IF. то она конечно не успевает пере записаться и обнуляется.
    Возможно я изобретаю велосипед, подскажите как реализовать правильно эту функцию.

    И от сюда вытекает второй вопрос. В программе мне необходимо использовать 2 блока. 1 это инициализация (выполняется один раз при старте) и 2 в цикле. Я использовал оператор IF c защелкой. (решение мне самому не нравится). Сейчас играюсь с функциями WHILE и REPEAT UNTIL. мне кажется они более правильные.
    Есть ли какие-то более гибкие и правильные реализации этих двух вопросов?
    Последний раз редактировалось Але-ндр; 26.03.2026 в 23:55.

  9. #4699

    По умолчанию

    Але-ндр Варианты, как понял тебя я (я делал такой блок на FBD, и он отлично работает):
    1. Да! В коде ST положение строк ВАЖНО. Потому что они выполняются сверху вниз.
    И если тебе надо сначала получить данные из VAR_IN_OUT, а потом выдать - то строки поулчения должны быть выше.
    2. Если писать счётчик часов на FBD, то можно объявить энергонезависимую переменную прям внутри макроса (я так и сделал).
    3. WHILE - это цикл. Я не уверен, что он нужен в этом блоке.
    Clip_3.jpg Clip_4.jpg
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

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

    По умолчанию

    ДА.
    Как это не парадоксально. но вся программа у меня также написана на FBD и уже давно работает (больше 2 лет).
    А тут решил ( как говорится) ради самоистязания (в свободное время) изучить ST, и переписать уже работающую программу. (на самом деле готовлю обновление).
    По этому все вопросы исключительно по ST.
    Самая большая проблема что я не смог найти данных о времени выполнения тех или иных функций (тайминги реального процессора) хотя в принципе они не критичны. Опытным путем определил что Vaur OUT := Var IN корректно работает в первых трех строках.
    И до сих пор не разобрался в приоритетах выполнения (последовательности функциональных блоков).

    Почему разбиваю выполнение на 2 блока? На самом деле это мая (в некотором смысле ) прихоть не хочу нагружать цикл тупым переписываниями 14 переменных одними и теми же данными, обычно они прописываются при инициализации. К сожалению при определении переменных им можно задавать только константы. На сколько я помню (могу ошибаться, не хочу лезть в справочник) на запись уходит 3 такта процессор (3х14=42) а на функцию IF около 10.
    Последний раз редактировалось Але-ндр; Вчера в 00:54.

Страница 470 из 471 ПерваяПервая ... 370420460468469470471 ПоследняяПоследняя

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 15.04.2025, 16:38
  2. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 09:29

Ваши права

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