Avenging_Archangel
А что мешает поставить индуктивные датчики? На моем ЧПУ так. Правда у меня не на Овене, а на ЛинуксЦНЦ, но работает отлично.
Но даже на Овене можно вычислить гистерезис индуктивного датчика по переднему и заднему фронту сигнала.
Avenging_Archangel
А что мешает поставить индуктивные датчики? На моем ЧПУ так. Правда у меня не на Овене, а на ЛинуксЦНЦ, но работает отлично.
Но даже на Овене можно вычислить гистерезис индуктивного датчика по переднему и заднему фронту сигнала.
Ну я реализовал вот так (прикрепляю проект). Тестирую в железе на столе, пока вроде норм. Программы CNC_FINDING.CncMaxFinding и CNC_FINDING.CncMinFinding запускаются с ИП320, а дальше уже по прерываниям от концевиков. Комментарии в программах поиска максимума не все правильные, в поиске минимума вроде все поправил.
Ну больше дело в финансах. Восстановить станок больше моя прихоть, как такового задания мне не было, я вообще работаю главным конструктором и занимаюсь разработкой электрощитового оборудования, электроника как хобби, поэтому интересно с ПЛК повозиться. Я работаю на маленьком заводе (у нас работников меньше 50), директор и так нехило затратился на ПЛК, ИП320 и ПЧВ1, боюсь если я попрошу еще купить индукционные датчики, меня пошлют далеко и надолго Да и плюс концевики в моем мухосранске проще найти, чем индукционные датчики.
самое первое это см .вложение, дальше смысла нет рассматривать проект как рабочий, если нарушен порядок выполнения
второе, понятно что Вы не программист, но попробуйте где нибудь этот код написать в компьютерных языках программирования и "прогнать" по нему статический анализ, например действие CncMaxFinding
I) IF bFindMax=TRUE OR bFindMax=TRUE
II) внутри условия из первого пункта вновь проверка IF bFindMax=TRUE
III) и как продолжение есть еще и ELSE которое никогда не выполняется
третье, добавляйте в конфигуратор модуль Button обязательно
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
1. Про порядок знаю, просто сейчас занимаюсь с поиском нулей, и после внесения изменений в PLC_PRG порядок не наводил, но за напоминание спасибо. Хотя и в данный момент все в PLC_PRG работает в железе как ни странно.
2. Большое спасибо, тут реально ошибка, которую проглядел, в реальности первое условие должно быть IF bFindMax=TRUE OR bStartInit=TRUE, когда дошел бы до отладки начального поиска нуля, сильно бы удивился, что программа не вызывается, и зная себя, потратил бы полчаса на поиск ошибки
3. Про button читал, вроде это косяк овена, и иногда программа останавливается самопроизвольно. Добавил в проект. Еще раз спасибо.
На будущее:
Конструкции типа IF bFindMax=TRUE OR bStartInit=TRUE можно писать короче - IF bFindMax OR bStartInit
Т. е. в проверке условия КДС автоматически сравнивает с TRUE.
Если надо проверить на FALSE, то можно написать так:
IF NOT bFindMax OR NOT bStartInit THEN
Лично мое мнение - удобнее читать код.
Да, я знаю, для AVR, когда я начинал их изучать, я так и делал. А вот в Codesys мне почему-то удобнее когда видно, где какое значение. Не знаю с чем это связано, возможно потому что еще не все понимаю в этой среде программирования. Ну и иногда я использую типа дефайнов, например _vDirect:=vDirectToMax, где _vDirect - булевская переменная, а vDirectToMax - булевская константа, равная FALSE.
Есть такое. Конкретно пост #8
Вложение 44507
Подключил библиотеку SysLibStr.lib и вызвал в POU одну из функций.
Компиляция проходит без ошибок, но при попытке загрузить программу в ПЛК - выдается сообщение об ошибке
С чем это может быть связано?
ПЛК110-30М