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

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

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

Post by lexl » Thu May 17, 2012 1:29 pm

На 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 » Fri May 18, 2012 11:29 am

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

kaa1979
Posts: 42
Joined: Sat Mar 27, 2010 8:14 am

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

Post by kaa1979 » Fri May 18, 2012 12:35 pm

SEG0: JU COM1
а это не безусловный переход? :shock:

sania
Site Admin
Posts: 1371
Joined: Sat Aug 13, 2005 6:15 am
Contact:

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

Post by sania » Fri May 18, 2012 12:51 pm

а ответ и был конструктивный
если малость подумать,то при выполнении условия прога будет прыгать вверх,идти вниз,доходить до перехода и снова вверх,вот тебе и бесконечный цикл

kaa1979
Posts: 42
Joined: Sat Mar 27, 2010 8:14 am

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

Post by kaa1979 » Fri May 18, 2012 1:06 pm

Да и 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 » Fri May 18, 2012 1:57 pm

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

Post Reply