Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 25

Тема: Проблема с кодом на ST. Цикл выполняется с ошибкой.

  1. #11
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    851

    По умолчанию

    Цитата Сообщение от hardkp Посмотреть сообщение

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

  2. #12

    По умолчанию

    Прикрепляю скриншот того как выглядит переменная, когда я сам, через cds руками её перезаписываю.
    cds_problem.png

  3. #13

    По умолчанию

    Какой ПЛК?
    СП307 - мастер на линии RS232?

  4. #14

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Какой ПЛК?
    СП307 - мастер на линии RS232?
    ПЛК 160, панель СП307.
    ПЛК - slave, СП307 - мастер, SCADA - мастер.

    Проверить на железе нет возможности, поэтому пишу пример, откатываю, а потом применю приём в проекте.

    Таких переменных и синхронизаций будет около 80 шт.
    Поэтому нужен оптимальный метод, таймеров много использовать не смогу.

  5. #15

    По умолчанию

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

    Нужно ставить галку снять фиксацию перменной, по умолчанию галки нет, переменная краснеет, значит фиксируется. Я этого увы не знал.
    Последний раз редактировалось hardkp; 09.04.2022 в 14:10. Причина: дополнить

  6. #16

    По умолчанию

    Modbus.JPG

    Конфигурация примерно так выглядит?

    Такая настройка дает возможность подключить к одной Modbus-таблице 2 мастера через Debug и RS232,
    а так же еще 4-е мастера через Ethernet.
    При этом все могут читать и писать (по принципу, кто последний тот и прав).
    Последний раз редактировалось EFrol; 09.04.2022 в 14:23.

  7. #17

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Modbus.JPG

    Конфигурация примерно так выглядит?

    Такая настройка дает возможность подключить к одной Modbus-таблице 2 мастера через Debug и RS232,
    а так же еще 4-е мастера через Ethernet.
    При этом все могут читать и писать (по принципу, кто последний тот и прав).
    Я не знал и создал 2 таблицы. Спасибо буду знать и использовать.
    А как в таком случае создать переменную в RETAIN и присвоить ей начальное значение?

  8. #18

    По умолчанию

    Цитата Сообщение от hardkp Посмотреть сообщение
    Я не знал и создал 2 таблицы. Спасибо буду знать и использовать.
    А как в таком случае создать переменную в RETAIN и присвоить ей начальное значение?
    Вы бы хоть видео для новичков посмотрели или поиском поискали. Этот вопрос задают через день.

    Все переменные в конфигурации, в ПЛК - слейве будут глобальные и энергонезависимые. После заливки программы в контроллер задайте начальные значения хоть руками. Можно и начальную инициализацию сделать.
    Последний раз редактировалось kondor3000; 11.04.2022 в 13:22.

  9. #19

    По умолчанию

    Решил не создавать новую тему, а продолжить здесь же, но с циклом While в ST.

    Хочу создать цикл, в котором переберутся все биты байта bCount. На эти биты физически повешены 8 реле, а на реле - 8 параллельных насосов с разной производительностью.
    До того, как оператор запустит программу, мне нужно по-быстрому программно пробежаться по всем возможным вариантам включения и прикинуть: а получиться ли задать нужную производительность комбинацией насосов?
    Код:
    Код:
    FUNCTION myFunc: BOOL
    
    VAR
        bCount: BYTE := 0;
    END_VAR
    
    
    WHILE NOT bCount=255 DO
        bCount := bCount + 1;
    
    
    //    IF bCount.0 THEN ......; END_IF
    //    IF bCount.1 THEN ......; END_IF
    //    IF bCount.2 THEN ......; END_IF
    //    IF bCount.3 THEN ......; END_IF
    //    IF bCount.4 THEN ......; END_IF
    //    IF bCount.5 THEN ......; END_IF
    //    IF bCount.6 THEN ......; END_IF
    //    IF bCount.7 THEN ......; END_IF
    
    END_WHILE
    Цикл не отрабатывается. Происходит только один проход. Потом выход из функции.
    Что я сделал не так?

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

    По умолчанию

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

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

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Ответов: 0
    Последнее сообщение: 21.01.2021, 22:08
  2. Панель СП310 - загрузка проекта с исходным кодом
    от _Алексей_ в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 23.08.2018, 07:19
  3. Экспорт проекта с ошибкой
    от Poo в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 27.07.2018, 15:44
  4. Не выполняется PLC_PRG
    от S#716_0P в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 08.09.2017, 13:35
  5. Не выполняется установка Codesys V3
    от Дмитрий Артюховский в разделе СПК2хх
    Ответов: 11
    Последнее сообщение: 26.06.2013, 01:27

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

Ваши права

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