Вопрос по циклам
Сергей; 17.8.04

Господа, подскажите пожалуйста где можно достать примеры программ для Step7 с применением циклов. Желательно с комментариями. Ну и описание оператров циклов...

Re: Вопрос по циклам
Чистяков Дмитрий ОАО СеверСталь; 17.8.04

Операторы циклов в STL отсутствуют - их (циклы) делют командой условного перехода. Хотя циклами в программе Step7 не стоит особо увлекаться.

Для управления данными и большими массивами, удобно использовать SCL - это паскале подобный язык программирования
Re: Вопрос по циклам
Алексей Родионов, ЗАО "Искра-Энергетика"; 17.8.04

L #COUNT_CYCLE //Загружаем число циклов

CYC1: T #CUR_CYCLE //Текущий цикл
. . .
Тело цикла
. . .
L #CUR_CYCLE // Загружаем текущий цикл в ACCU1
LOOP CYC1 // повтор цикла, если ACCU1 > 0, при этом ACCU1 уменьшается на 1
Re: Вопрос по циклам
Игорь; 17.8.04

Заявление "Операторы циклов в STL отсутствуют - их (циклы) делют командой условного перехода. Хотя циклами в программе Step7 не стоит особо увлекаться." не соответствует действительности.

В STL есть оператор LOOP хххх, который декрементирует содержимое ACCU1 и делает переход к метке xxxx, если ACCU1>0. Циклы реализуются очень просто.
Описание и примеры использования есть во встроенном HELPe по STL.

Re: Вопрос по циклам
GorA; 17.8.04

Каких циклов?

Re: Вопрос по циклам
Сергей; 18.8.04

Господа, спасибо, благодарю за совет... С уважением, Сергей...

Re: Вопрос по циклам
Darwin; 19.8.04

По быстродействию что предпочтительнее из двух вариантов для реализации FIFO (сдвиг всех данных на одну смену вниз для записи данных по сменам) для блока данных объемом 1300байт:

1. Сдвиг с использованием циклов, общее количество 350 циклов.
2. Сдвиг с использованием SFC20(BLKMOV), но при этом еще необходимо использовать доп. промежуточный блок данных, т.к. использование SFC20 не допускает перекрытия областей данных.
Re: Вопрос по циклам
Сергей; 19.8.04

Darwin-у, вот если Вам не трудно поделиться информацией, то хотелось бы получить информацию по сдвигу с использованием SFC20(BLKMOV). Увидеть примерчик программы с хорошими комментариями. Я конечно имею скупенькую доку по SFC20, но этого описания мне не достаточно. В описании говориться какие данные она может считать и куда передать, а вот как их сформировать не сказано... Вобчем, если можно то поподробнее по данному случаю...

Re: Вопрос по циклам
Чистяков Дмитрий ОАО СеверСталь; 19.8.04

То Игорь

Команда STL LOOP не что иное, как условный переход по условию. ;-)
Под "операторами циклов" в программировании принято называть конструкции типа
"For ... next"
"Do WHile"
и т.п.
Данные конструкции позволяют устанавливать гибкие условия продолжения цикла.
Re: Вопрос по циклам
Игорь; 19.8.04

To Чистяков Дмитрий

Разумеется, я с Вами согласен.
Однако, товарища интересовал вопрос - как организовать цикл в Step7.
Согласитесь, что конструкции типа "For ... next" и "Do WHile" легко реализуются в STL с помощью "LOOP" и вложений. А если написать цикл в SCL, то после компиляции получится то-же самое.

Best regards!

!!!!!!! Вопрос по циклам !!!!!!!
Сергей; 20.8.04

Darwin-у, и если Вам не трудно то могёте кинуть примерчик мне на майл, ну это я про сдвиг с использованием SFC20(BLKMOV)... Потому как мне интересна пока именно эта функция. А про "LOOP" я уже знаю... С уважением, Сергей...

Re: Вопрос по циклам
Darwin; 20.8.04

CALL "BLKMOV"

SRCBLK :=P#DB14.DBX0.0 BYTE 36
RET_VAL:=MW166
DSTBLK :=P#DB3.DBX10.0 BYTE 36

CALL "BLKMOV"
SRCBLK :=P#DB2.DBX0.0 BYTE 5
RET_VAL:=MW166
DSTBLK :=P#DB3.DBX0.0 BYTE 5
//
//BYTE 36 это множитель, т.е. начиная с DB2.DBX0.0 копируется 36 байтов. Если например указать слово то слов. Word 5, это значит 5 слов. P#DB3.DBX0.0 это указатель на начало области.
SRCBLK источник
DSTBLK место назначения
как я говорил, перекрываться области не должны.
Re: Вопрос по циклам
Сергей; 20.8.04

Darwin-у, благодарю за совет, очень пригодился...


С уважением, Сергей...
Re: Вопрос по циклам
Сергей; 20.8.04

Да кстати, господа, никто не может пояснить:


LAR1 P##ANY
L W#16#200
T LW [AR1,P#0.0]
L 8
T LW [AR1,P#2.0]
ITD
SLD 3
T #Сikl
L 10
T LW [AR1,P#4.0]
L P#DBX 0.0
T LD [AR1,P#6.0]

Конткретно интересен формат записи:
"LW [AR1,P#0.0-P#2.0-P#4.0]"
и
"LD [AR1,P#6.0]"
Как я понял это формирование источника "SRCBLK", но мне бы попонятнее описать эти точки...

С уважением, Сергей...
Re: Вопрос по циклам
Сергей; 20.8.04

То есть далее идет:

call sfc 20
SRCBLK:=#ANY
и т.д. и т.п.

С уважением, Сергей...

Re: Вопрос по циклам
Сергей; 20.8.04

Ещё пунктик для дополнения картинки, переменная #ANY формируется для чтения данных из блока UDT...

Напомню, мне непонятен формат:
"LW [AR1,P#0.0-P#2.0-P#4.0]"
и
"LD [AR1,P#6.0]"

С уважением, Сергей...

Re: Вопрос по циклам
GorA; 20.8.04

Почитайте руководство по программированию на STL, конкретно по косвенной адресации через регистры AR1, AR2 и станет все понятно

Re: Вопрос по циклам
GorA; 20.8.04

А так

LW[AR1,P#0.0] - загрузить в аккумулятор число в формате word по адресу в AR1 со смещением 0.0
LD[AR1,P#6.0] - загрузить в аккумулятор число в формате dword по адресу в AR1 со смещением 6.0

<<br>