[?]: Определение в программе отключенного оборудования

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
AndreyUA
Posts: 11
Joined: Tue Sep 28, 2010 7:39 am

[?]: Определение в программе отключенного оборудования

Post by AndreyUA »

Попробовал спросить на iadt.siemens.ru , но так и не получил ответа. Попробую спросить здесь :)

Проблема в следующем: создал OB86 c текстом

Код:
SET
S M140.1

При выключении и включении оборудования, подключенного через DP-DP, меркер взводится, но если выключить оборудование, когда контроллер в стопе и перевести в run, то меркер остается не взведенным.
Для чего мне это нужно:
Хотелось бы отключать незадействованное в техпроцессе оборудование, однако сейчас при отключении срабатывает авария из-за обесточенной аварийной кнопки.
Возможно кто-нибудь подскажет другое решение, как детектить отключенное оборудование? Может у кого есть пример использования для подобных случаев sfc51 или fb125/126?
sania
Site Admin
Posts: 1387
Joined: Sat Aug 13, 2005 6:15 am

Re: Определение в программе отключенного оборудования

Post by sania »

OB122?

Code: Select all

OB122_MEM_AREA	BYTE	Memory area and access type:
·	Bits 7 to 4: Access type
-		0: Bit access
-		1: Byte access
-		2: Word access
-	   3: DWord access
·	Bits 3 to 0: memory area
-		0: I/O area
-		1: Process image of the inputs
-	   2: Process image of the outputs
OB122_MEM_ADDR	WORD	Memory address where the error occurred
AndreyUA
Posts: 11
Joined: Tue Sep 28, 2010 7:39 am

Re: Определение в программе отключенного оборудования

Post by AndreyUA »

Я уже думал об ов122, но как из него вытянуть адрес отключенного оборудования? А если отключено 2 и более модуля? Их бы опрашивать по очереди
ALEXZ
Posts: 41
Joined: Tue Aug 09, 2011 12:27 pm

Re: Определение в программе отключенного оборудования

Post by ALEXZ »

AndreyUA wrote:Попробовал спросить на iadt.siemens.ru , но так и не получил ответа. Попробую спросить здесь :)

Проблема в следующем: создал OB86 c текстом

Код:
SET
S M140.1

При выключении и включении оборудования, подключенного через DP-DP, меркер взводится, но если выключить оборудование, когда контроллер в стопе и перевести в run, то меркер остается не взведенным.
Для чего мне это нужно:
Хотелось бы отключать незадействованное в техпроцессе оборудование, однако сейчас при отключении срабатывает авария из-за обесточенной аварийной кнопки.
Возможно кто-нибудь подскажет другое решение, как детектить отключенное оборудование? Может у кого есть пример использования для подобных случаев sfc51 или fb125/126?
Я в начале после запуска программы вызываю SFC51 szl_id = W#16#292
AndreyUA
Posts: 11
Joined: Tue Sep 28, 2010 7:39 am

Re: Определение в программе отключенного оборудования

Post by AndreyUA »

А пример кода можно посмотреть?
ALEXZ
Posts: 41
Joined: Tue Aug 09, 2011 12:27 pm

Re: Определение в программе отключенного оборудования

Post by ALEXZ »

AndreyUA wrote:А пример кода можно посмотреть?
http://s017.radikal.ru/i400/1112/29/0da2a378769a.jpg
sample code
Show

Code: Select all

      A     #RDY_OUT
      JNB   M_1
      SET                               // ñáðîñèòü âûõîäà
      R     #MOD04_REMOVE
      R     #MOD05_REMOVE
      R     #MOD06_REMOVE
      R     #MOD07_REMOVE
      R     #MOD08_REMOVE
      R     #MOD09_REMOVE
      R     #MOD10_REMOVE
      R     #MOD11_REMOVE
      R     #MOD12_REMOVE
      R     #MOD13_REMOVE
      L     #SZL_HEADER.N_DR
      T     #CNT
      L     #CNT
      L     W#16#3
      >=I   
      JNB   M_1
      L     #DIAG_BUF[35]               // слот 4
      AW    W#16#FF
      L     W#16#4
      ==I   
      JNB   M_1
      L     #DIAG_BUF[46]               // статус модуля
      AW    W#16#4                      // модуль недоступен!!!
      L     W#16#4
      ==I   
      =     #MOD04_REMOVE
      L     #CNT
      L     W#16#4
      >=I   
      JNB   M_1
      L     #DIAG_BUF[51]               // слот 5
      AW    W#16#FF
      L     W#16#5
      ==I   
      JNB   M_1
      L     #DIAG_BUF[62]               // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD05_REMOVE
      L     #CNT
      L     W#16#5
      >=I   
      JNB   M_1
      L     #DIAG_BUF[67]               // ñëîò 6
      AW    W#16#FF
      L     W#16#6
      ==I   
      JNB   M_1
      L     #DIAG_BUF[78]               // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD06_REMOVE
      L     #CNT
      L     W#16#6
      >=I   
      JNB   M_1
      L     #DIAG_BUF[83]               // ñëîò 7
      AW    W#16#FF
      L     W#16#7
      ==I   
      JNB   M_1
      L     #DIAG_BUF[94]               // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD07_REMOVE
      L     #CNT
      L     W#16#7
      >=I   
      JNB   M_1
      L     #DIAG_BUF[99]               // ñëîò 8
      AW    W#16#FF
      L     W#16#8
      ==I   
      JNB   M_1
      L     #DIAG_BUF[110]              // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD08_REMOVE
      L     #CNT
      L     W#16#8
      >=I   
      JNB   M_1
      L     #DIAG_BUF[115]              // ñëîò 9
      AW    W#16#FF
      L     W#16#9
      ==I   
      JNB   M_1
      L     #DIAG_BUF[126]              // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD09_REMOVE
      L     #CNT
      L     W#16#9
      >=I   
      JNB   M_1
      L     #DIAG_BUF[131]              // ñëîò 10
      AW    W#16#FF
      L     W#16#A
      ==I   
      JNB   M_1
      L     #DIAG_BUF[142]              // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD10_REMOVE
      L     #CNT
      L     W#16#A
      >=I   
      JNB   M_1
      L     #DIAG_BUF[147]              // ñëîò 11
      AW    W#16#FF
      L     W#16#B
      ==I   
      JNB   M_1
      L     #DIAG_BUF[158]              // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD11_REMOVE
      L     #CNT
      L     W#16#B
      >=I   
      JNB   M_1
      L     #DIAG_BUF[163]              // ñëîò 12
      AW    W#16#FF
      L     W#16#C
      ==I   
      JNB   M_1
      L     #DIAG_BUF[174]              // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD12_REMOVE
      L     #CNT
      L     W#16#C
      >=I   
      JNB   M_1
      L     #DIAG_BUF[179]              // ñëîò 13
      AW    W#16#FF
      L     W#16#D
      ==I   
      JNB   M_1
      L     #DIAG_BUF[190]              // ñòàòóñ ìîäóëÿ
      AW    W#16#4                      // ìîäóëü íå äîñòóïåí
      L     W#16#4
      ==I   
      =     #MOD13_REMOVE
M_1:  NOP   0
      SET