[?+]: На STL реализован CASE цикл

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
lexl
Posts: 3
Joined: Sat Mar 26, 2011 10:39 am

[?+]: На STL реализован CASE цикл

Post by lexl »

На STL реализован CASE цикл. При данной реализации, все работает хорошо.
Но стоит метку, например SEG0, перенести в отдельный нетворк, как время цикла процессора (scan cycle time) выходит за максимальный допустимый диапазон
Как сделать так, чтобы была возможность вынести метку в другой нетворк?

Code: Select all

//Network 1
      L     #MODE_REQ
      L     1
      TAK   
      ==I   
      T     #STATUS
      JC    SEG0
      JU    CAS1

SEG0: JU    COM1

CAS1: L     2
      L     #STATUS
      ==I   
      JC    SEG1
      JU    CAS2

SEG1: JU    COM1

CAS2: L     3
      L     #STATUS
      ==I   
      JC    SEG2
      JU    COM1

SEG2: JU    COM1

COM1: NOP   0
lexl
Posts: 3
Joined: Sat Mar 26, 2011 10:39 am

Re: [?]: На STL реализован CASE цикл

Post by lexl »

Little_Cat wrote:Сам понял хоть что написал и что будет если перенести GOTO, которая указывает на первый нетворк в нетворк ниже первого?
Как вариант - прочитать документацию по программированию контроллеров.
1 GOTO - оператор безусловного перехода, я использую оператор условного перехода JС
2 JС я как раз таки хочу оставить в первом нетворке, а точку (метку) перехода, разместить во втором нетворке (ниже первого).
Если читать справку, то JС должна лежать в одном и том же блоке с меткой. Об ограниченииях в виде обязательного
размещения команды перехода и метки в одном нетворке в справке не говорится.
Прошу отвечать конструктивно. (not_allow)
kaa1979
Posts: 43
Joined: Sat Mar 27, 2010 8:14 am

Re: [?]: На STL реализован CASE цикл

Post by kaa1979 »

SEG0: JU COM1
а это не безусловный переход? :shock:
sania
Site Admin
Posts: 1387
Joined: Sat Aug 13, 2005 6:15 am

Re: [?]: На STL реализован CASE цикл

Post by sania »

а ответ и был конструктивный
если малость подумать,то при выполнении условия прога будет прыгать вверх,идти вниз,доходить до перехода и снова вверх,вот тебе и бесконечный цикл
kaa1979
Posts: 43
Joined: Sat Mar 27, 2010 8:14 am

Re: [?]: На STL реализован CASE цикл

Post by kaa1979 »

Да и CASE на STL организовывается так:
L MB0 //Load jump destination number into ACCU 1-L-L.
JL LSTX //Jump destination if ACCU 1-L-L > 3.
JU SEG0 //Jump destination if ACCU 1-L-L = 0.
JU SEG1 //Jump destination if ACCU 1-L-L = 1.
JU COMM //Jump destination if ACCU 1-L-L = 2.
JU SEG3 //Jump destination if ACCU 1-L-L = 3.
LSTX: JU COMM
SEG0: * //Permitted instruction
*
JU COMM
SEG1: * //Permitted instruction
*
JU COMM
SEG3: * //Permitted instruction.
*
JU COMM
COMM: *
lexl
Posts: 3
Joined: Sat Mar 26, 2011 10:39 am

Re: [?]: На STL реализован CASE цикл

Post by lexl »

Действительно, происходило зацикливание программы.
Достаточно было перенести "COM1: NOP 0" ниже нетворков с метками перехода и все заработало как надо.
(del)