Цитата(sana1985 @ 1.3.2011, 11:17)

Так. Это был опыт №1. Что я понял? Ничего. Да, дурак. Но ругаться не надо. Получается,что в верхней ступеньке в момент пуска мы присваиваем внутреннему слову некое значение int (1000). При наличии I0.1 у нас выполняется уравнение
%mw6=%mw6+%kw (оно равно 1). Результат = 1001. Что мы из этого видим. Вы что-нибудь видите? Потому что я-ничего.
Получается, что слова нужны для того, чтобы выполнять какие-либо математические операции? Так что ли? Или нет? Тогда для чего? И почему нет какого-нить конфликта, ведь у нас два разных значения для %MW: вверху-1000, внизу- 1001. Это связано с тем что входы читаются сверху вниз?
в любом контроллере программа читается сверху вниз, то есть если в первой строчке текста написать а=1, а в сотой строчке а=2....то на выходе программы значение регистра в контроллере которое соответствует а будет равно 2.
отсюда вывод:не присваивать значение одной и той же переменной дважды/трижды и т.д......если программа достаточно сложная, то будет очень трудно увидеть такого рода косяк
вообще уравнением а=а+1 я вам хотел показать как работает контроллер и внутренние регистры данных, если наберете это уравнение без всяких условий запуска, то оно будет выполняться в каждом цикле, то есть число а будет увеличиваться на 1 в каждом чикле...и так пока не дойдет до границы типа данных, потом перейдет в минус
память контроллера поделена на биты и регистры с совершенно определенными адресами (см. инструкцию) и соответственно с ограниченным количеством:
%M-в эти регистры записоваются битовые переменные (тип bool);
%MW-в эти регистры записоваются числовые переменные (тип int, dint, real и прочие), то есть ЛЮБЫЕ ПЕРЕМЕННЫЕ, КОНСТАНТЫ, ПАРАМЕТРЫ, ДЛЯ ВНУТРЕННЕГО ИЛИ ВНЕШНЕГО ПОЛЬЗОВАНИЯ...все что хотите.....
пример (адреса взяты произвольные)
%MW1:=%MW1+1; (*пока запущенна программа идет отсчет*)
IF %MW1>1000 THEN (*в 999 цикле включится 1-ых выход контроллера*)
%Q1:=1;
END_IF;
IF %MW1>10000 THEN (*в 9999 цикле 1-ый выход выключится, отсчет начнется заново*)
%Q1:=0;
%MW1:=0;
END_IF;