Вероятно, некорректно настроен обмен (сетевые настройки, адреса регистров и т.д.) или проблема с кабелем (не та распиновка или поврежден).
Вероятно, некорректно настроен обмен (сетевые настройки, адреса регистров и т.д.) или проблема с кабелем (не та распиновка или поврежден).
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
С обменом между панелью и ПЛК все в порядке. При нажатии кнопки на панели, в ПЛК состояние бита изменяется сразу, а на панели состояние кнопки изменяется с задержкой. Задержка есть и при переходе на панели к другому окну.
Добавьте на экран индикаторы с битами PSB50 и PSB51. Это биты статусы связи для Download- и PLC-порта. Если один из них (соответствующий вашему порту) будут мигать красным - то, очевидно, все же есть какая-то проблема с обменом.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Подскажите как в макросе можно словить фронт бита?
Требуется подать звуковой сигнал при смене состояния бита. Битов много.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
C зуммером понятно, сделать для каждого бита и радоваться. Но если по мимо звука надо открыть окно с сообщением или еще что сделать. То для каждого бита делать еще элемент "Функциональная область" или создавать окно тревоги. Битов очень много.
Много элементов получается, хотел как проще и меньше муторной работы. С кодом проще и быстрей работать, чем графику и настройки туда сюда гонять.
Насколько я знаю зуммер работает только если открыт тот экран на котором он расположен. У меня биты раскиданы по разным экранам.
Последний раз редактировалось spa; 08.06.2018 в 13:54.
Вот пример.Example_MacroRtrig.txp
Для каждого бита потребуется доп. бит, чтобы помнить о предыдущем состоянии.
Зуммер может быть глобальным - тогда будет работать независимо от открытого экрана.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Сложность еще в том что биты у меня храняться в PSW. Написал следующую функцию:
Работает если только один бит сработал, если при включенном бите сработает еще один, то тогда начинает пищать постоянно.Код:void AlarmEdge(WORD NumWord, WORD NumBit){ if( (PSW[NumWord]&(1<<NumBit)) && !(PSW[NumWord+50]&(1<<NumBit)) ) { Beep(); PSW[NumWord+50] = 1 | (1<<NumBit); } else if ((PSW[NumWord]&(1<<NumBit))!=0) { PSW[NumWord+50] = 0 | (1<<NumBit); } }
Последний раз редактировалось spa; 08.06.2018 в 17:00.
Если в одном регистре, можно так сделать... как вариант, для одного регистра
Панель должна пикнуть при установке любого бита PSW[111] в 1
Код с коленки, не тестировалсяКод:void AlarmEdge() { static WORD last_val; WORD cur_val; cur_val = PSW[111]; if ( (cur_val & ~last_val ) > 0 ) { Beep(); } last_val = cur_val; }
Последний раз редактировалось SokolovS; 08.06.2018 в 16:31.
В этом случае будет пиликать всегда, при появлении бита и пропадания, пока все биты не потухнут. Нужно чтобы сигнал шел только при переднем фронте.