Скоростной счетчик в s7-200 cpu224

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Post Reply
flavio
Posts: 3
Joined: Mon Aug 20, 2007 10:07 am
Location: Казань

Скоростной счетчик в s7-200 cpu224

Post by flavio » Mon Aug 20, 2007 10:18 am

1) Можно ли запрограммировать скоростной счетчик (hsc2, например) так, чтобы при достижении текущим значением предустановленного значения он (счетчик) сбрасывался в 0 автоматически?
Если счетчик сбрасывать из обработчика прерывания по совпадению текущего и предустановленного значений, то может быть, такое, что это событие (совпадение) произойдет, когда прерывания запрещены, а счетные импульсы тем не менее идут, и счетчик "насчитает" и эти импульсы и соответсвенно его текущее значение превысит предустановленное

2) Что происходит со счетчиком, когда его текущее значение достигает максимального (положительного) значения, а счетные импульсы на вход по-прежнему поступают: он (счетчик) {1} останавливается, сохраняя достигнутое максимальное значение или {2} продолжает счет, как бы с 0, потому, как старший бит значения (не знаковый) теряется из-за переполнения, либо же {3} продолжает счет, как бы с минимального (отрицательного) значения, т. к. из-за переполнения в старший (знаковый) бит попадает 1?

errornet
Posts: 55
Joined: Mon Oct 30, 2006 8:54 am
Location: Russia

Post by errornet » Mon Aug 20, 2007 12:41 pm

Вот что думаю я по этому поводу:

1) Есть три основных режима : -без сбросов, -сброс по входу(конечник), -сброс по входу и установка по входу(два конечника). Для решения вашей задачи необходимо использовать операцию сравнения заданой величины со значением счетчика. Записать новое текущее значение счётчика можно в SMD38(для HC0) SMD58(для HC2) и битом SM37.6(для HC0) SM57.6(для HC2) сделать его актуальным, но это делается вроде бы только один раз до инициализации счета командой HSC. Впрочем можете поэкспериментировать. Сделать новые описания счётчика и снова инициализировать его. У меня кажется не получилось, но я уже точно не помню. Вроде только один выстрел.

2) вытекает из 1) значение счётчика SMD38 является знаковым целым числом, поэтому после переполнения (2147483647 +1) должно перейти (ошибка здесь) в -0 ( 80000000Hex) и дальше -1, -2.

Да, но это теория. Всё конечно надо проверить
Last edited by errornet on Wed Aug 22, 2007 5:39 am, edited 2 times in total.

flavio
Posts: 3
Joined: Mon Aug 20, 2007 10:07 am
Location: Казань

Post by flavio » Mon Aug 20, 2007 1:03 pm

Я был уверен, что значение счетчика - это число в дополнительном коде, т. е. -0 нет, а 0x80000000 - это -2147483648,
0x80000001 - -2147483647, и т. д.

errornet
Posts: 55
Joined: Mon Oct 30, 2006 8:54 am
Location: Russia

Post by errornet » Tue Aug 21, 2007 8:12 am

[quote="flavio"]Я был уверен, что значение счетчика - это число в дополнительном коде[/quote]

Да, моя ошибка. Давно я уже с этими числами не работал. Всё знаете биты попадаются.
Поэтому думаю что счётчик считает дальше. Возможно результат переполнения будет отражен в SM1.1

flavio
Posts: 3
Joined: Mon Aug 20, 2007 10:07 am
Location: Казань

Post by flavio » Tue Aug 21, 2007 12:29 pm

Придется и вправду все ковырять методом проб и ошибок, потому, как пока не смог найти, где бы этот вопрос конкретно отражался

errornet
Posts: 55
Joined: Mon Oct 30, 2006 8:54 am
Location: Russia

Post by errornet » Wed Aug 22, 2007 5:31 am

Семён видимо считает, что Tip&Tricks №4 вполне достаточно.

Сказать по правде, при точности поцизионирования в один импульс на 0.02 мм расстояние получается почти 43км. Реально собрать механику на точность 0.1мм уже достаточно сложно.

Post Reply