Страница 988 из 1049 ПерваяПервая ... 4888889389789869879889899909981038 ... ПоследняяПоследняя
Показано с 9,871 по 9,880 из 10486

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

  1. #9871

    По умолчанию

    Цитата Сообщение от senkos Посмотреть сообщение
    удалил вообще весь код, нет ничего
    Запускаю, нажимаю Сброс и все так же compressors[1].bSignal2 = 32 и по датчикам так же хранятся данные с прошлых измерений в compressors[1].t_1st = 22 и по давлению тоже есть значение.
    Какой то шайтан, откуда приходит эта единичка в пятом бите bSignal2.
    И в 4BYTE выходах тоже есть данные, они по ходу и влияют, но откуда они там берутся
    Возможно выравнивание работает, все 32 битные переменные должны быть с чётными адресами.
    Кстати заработал ваш проект, я же в эмуляции запускаю, а не на контроллере.

    Короче у меня не выравнивание, а присвоение переменных в программе было больше Уставок =8, поэтому 5 бит и включался.
    В структуре struct_original_8AC было присвоение 17 и 27 в REAL
    Последний раз редактировалось kondor3000; 25.08.2023 в 16:12.

  2. #9872

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Возможно выравнивание работает, все 32 битные переменные должны быть с чётными адресами.
    Кстати заработал ваш проект, я же в эмуляции запускаю, а не на контроллере.

    Короче у меня не выравнивание, а присвоение переменных в программе было больше Уставок =8, поэтому 5 бит и включался.
    В структуре struct_original_8AC было присвоение 17 и 27 в REAL
    Сейчас удалил все присвоенные значения на уставках. Удалил весь код в исполнении, запускаю и уставки на своих местах и по моему никакого сдвига, так как все значения в нужных переменных.
    В %QD7.10.0 так же какое то значение присутствует. Уже не понимаю что делать, вроде все DWORD и REAL на четных адресах, наверное возьму выходной до понедельника ))
    Выравнивание где то отключается?
    Scr-4.jpg

  3. #9873

    По умолчанию

    Цитата Сообщение от senkos Посмотреть сообщение
    Сейчас удалил все присвоенные значения на уставках. Удалил весь код в исполнении, запускаю и уставки на своих местах и по моему никакого сдвига, так как все значения в нужных переменных.
    В %QD7.10.0 так же какое то значение присутствует. Уже не понимаю что делать, вроде все DWORD и REAL на четных адресах, наверное возьму выходной до понедельника ))
    Выравнивание где то отключается?
    Дело не в выравнивании, если вставили, то удалите вторую Запасную переменную,

    Нашёл причину, если убрать эту строку, то в динамике будет включаться 5 бит 1 Включение 5 бита.jpg

    5 бит включается в программе, если переменная меньше уставки или больше, а причина этого в сравнении с уставками,
    У вас там стоит таймер, только END_IF стоит не там где надо, он работает на < Уставки, а на > уставки, не работает,
    перенёс END_IF ниже и всё заработало как надо, теперь и эту строку можно убрать.
    Последний раз редактировалось kondor3000; 25.08.2023 в 21:09.

  4. #9874

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    5 бит включается в программе, если переменная меньше уставки или больше, а причина этого в сравнении с уставками,
    У вас там стоит таймер, только END_IF стоит не там где надо, он работает на < Уставки, а на > уставки, не работает,
    перенёс END_IF ниже и всё заработало как надо, теперь и эту строку можно убрать.
    Таймер специально поставлен на < уставку, так как по технологии при включении компрессора давление масла меньше минимальной уставки и это приведет к моментальному выключению по аларму. Таймер позволяет например 20 секунд игнорировать нижнюю уставку пока давление масла в картере не поднимется выше минимальной уставки до рабочего значения которое между мин и макс уставками. Потом таймер становится TRUE и если по неисправности давление не поднялось то компрессор аварийно останавливается по условию.
    Верхнее давление масла в запуске не участвует поэтому и не нужен ему таймер.

    Почитал в мануалах codesys про сброс в программе и он равносилен отключению питания плк, что я постоянно делал.

  5. #9875

    По умолчанию

    Цитата Сообщение от senkos Посмотреть сообщение
    Таймер специально поставлен на < уставку, так как по технологии при включении компрессора давление масла меньше минимальной уставки и это приведет к моментальному выключению по аларму. Таймер позволяет например 20 секунд игнорировать нижнюю уставку пока давление масла в картере не поднимется выше минимальной уставки до рабочего значения которое между мин и макс уставками. Потом таймер становится TRUE и если по неисправности давление не поднялось то компрессор аварийно останавливается по условию.
    Верхнее давление масла в запуске не участвует поэтому и не нужен ему таймер.
    5 бит у вас срабатывает при пуске программы где меньше, (compressors[k].P_oil < ust_Poil_min ), после отсчёта таймера, если давление равно 0 . А оно равно нулю без подачи начальных значений.
    Поэтому и висит у вас 32 постоянно.

    Вот программа для эмуляции, 1 компрессор автоматически запускается с установкой начальных значений. Можете протестировать.
    В original_8AC[1].READ можно менять значения и смотреть срабатывание аварий в compressors[1].bSignal2
    Вложения Вложения
    Последний раз редактировалось kondor3000; 27.08.2023 в 13:16.

  6. #9876

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    5 бит у вас срабатывает при пуске программы где меньше, (compressors[k].P_oil < ust_Poil_min ), после отсчёта таймера, если давление равно 0 . А оно равно нулю без подачи начальных значений.
    Поэтому и висит у вас 32 постоянно.

    Вот программа для эмуляции, 1 компрессор автоматически запускается с установкой начальных значений. Можете протестировать.
    В original_8AC[1].READ можно менять значения и смотреть срабатывание аварий в compressors[1].bSignal2
    Спасибо огромное что настолько вникли в проект! Нашел свои проблемы в том что я не делал сброс в программе, думал что выключение ПЛК везде все сбрасывает. оказывается когда в Codesys запускаешь проект нужно в нем же и обнулять начальные значения. Все теперь работает как часики.

    Нарисовалась новая задача с этим таймером:
    1) Например включили компрессор и сразу выключили, таймер TON_1 запустился, но он не имеет опции сброса и отключения отсчета и в итоге мы получим Аларм по двум датчикам на "<". Тут или написать свой таймер со сбросом или модифицировать TON.
    2) Компрессоров 7шт выходит нужно для каждого компрессора свой таймер создать. Интересно массив из TON будет содержать различные экземпляры TON?

  7. #9877

    По умолчанию

    Цитата Сообщение от senkos Посмотреть сообщение
    Спасибо огромное что настолько вникли в проект! Нашел свои проблемы в том что я не делал сброс в программе, думал что выключение ПЛК везде все сбрасывает. оказывается когда в Codesys запускаешь проект нужно в нем же и обнулять начальные значения. Все теперь работает как часики.

    Нарисовалась новая задача с этим таймером:
    1) Например включили компрессор и сразу выключили, таймер TON_1 запустился, но он не имеет опции сброса и отключения отсчета и в итоге мы получим Аларм по двум датчикам на "<". Тут или написать свой таймер со сбросом или модифицировать TON.
    2) Компрессоров 7шт выходит нужно для каждого компрессора свой таймер создать. Интересно массив из TON будет содержать различные экземпляры TON?
    Можно не писать ничего, чтобы сбросить таймер, надо не только обнулить бит на входе, но и сбросить PT:=T#0ms; однократно.

    Не надо 7 таймеров, если все 7 шт включаться за 1 минуту, у меня уже всё на 7 компрессорах работает, не меняя почти ничего в программе эмуляции. Вернул только all_ai : ARRAY[1..7,1..8] OF struct_ai; и подправил код. Если надо по другому, то тогда надо 7 шт. TON_: ARRAY [1..7] OF TON;

    compressors[k].bSignal1 := 1 ; Единицу заменил на on_off. Всё работает в динамике.
    Последний раз редактировалось kondor3000; 28.08.2023 в 10:55.

  8. #9878

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Можно не писать ничего, чтобы сбросить таймер, надо не только обнулить бит на входе, но и сбросить PT:=T#0ms; однократно.
    На самом деле для TON достаточно сбросить вход.
    А вот для TOF - необходимо уставку времени обнулять

  9. #9879

    По умолчанию

    Можно в этой ветке продолжить тему проекта компрессорной станции МВ-ПЛК-СП307 чтобы не разрывать целостность обсуждения?
    Залил проект в СП307, пока без подключения к ПЛК, что то очень жутко тормозит отклик нажатий на кнопки. Оставляю даже один параметр и все равно тормозит. Убираю все элементы ссылающиеся на PLC порт то переход между экранами происходит моментально. Это панель пытается искать слейв устройство и получить данные?
    Кабеля пока нет чтобы подключиться к ПЛК.

    Коллеги, спаял провод и все заработало с первого раза. Не тормозит, данные считывает корректно, уставки срабатывают, ошибки сигнализируются. Всем огромное спасибо!
    Теперь буду мелочевкой заниматься в плане отображения статистики и тп.

    Проект к СП307 прилагаю:
    Вложения Вложения
    Последний раз редактировалось senkos; 31.08.2023 в 13:42.

  10. #9880

    По умолчанию Номера портов TCP modbus slave

    здравствуйте. стоит задача опрашивать контроллер 160 с нескольких мастеров. в конфигурации котнроллера добавлен slave tcp с портом 502. если добавить второй slave TCP в конфигурации ,то какой порт ему необходимо назначить? какой список диапазонов разрешенных портов?

Страница 988 из 1049 ПерваяПервая ... 4888889389789869879889899909981038 ... ПоследняяПоследняя

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

Ваши права

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