ET200S - ignore loss of IM-151

cjd1965

Lifetime Supporting Member
Join Date
Apr 2007
Location
UK
Posts
1,659
Hi
I have a CPU 3152PN/DP on which I have 3 IM-151 ET200S stations on profibus.

Each station is in a different panel, each panel is seperatley isolated.

When I was commissioning we powered down a station and the plc went to stop

I have OB82/83/86 in my program and the check box for operation at preset <> actual is ticked

How do I make the system tolerate a loss?
 
Come on cjd, you have been programming S7 for a few years now.

How do you find out the cause when a CPU stops ?
Spoiler:
Check the diagnostics buffer. I am guessing you lack OB85 or OB122.
 
Last edited:
jesper I know that..

Ctrl D.... and look into the stacks etc

I programmed and commissioned a system 2 yrs ago with 2 nodes. System works fine with nodes off (system wont run but plc stays in run)

Basically I had had to add a node(5) and 10 minutes to stop production, run around 2 remote nodes to change either dp address or termination resistors, rush back and download new hardware. The running around was 10 minutes on its own lol... but the plc was now in run etc with all nodes powered

The electrician forgot to reset one of the mcbs in node 5 for a DOL motor contactor so I had to turn off the node 5 local panel, reset the mcb, go back to the plc and then found it was in stop. No time to check because customer was under lots of pressure, so I simply reset the power to the PLC PSU and all was fine on restart

I set up the system maybe 2 yrs ago and I can turn off node 1 fine and have an hmi error code reporting loss of slave...

It is possible that the cpu into stop was something else of course.

I am back their in a about 8 days and wanted to put it to bed



Thanks
 
I have an IM151-8 & DP master system which goes into stop if one particular node is powered down. I have every fault OB known to man loaded onto the PLC but still it stops. It's on the end of the bus, so I suspect it is causing a profibus fault of some description as I know it can cause problems if the end node is not active.
 
You said you have OB82, OB83, and OB86.
As I wrote, it may be a case of missing OB85 or OB122.

Anyway, it should be customary to have all the possible error OBs, and add code to handle the errors. As a minimum you generate an HMI alarm so that you will have a message telling you what went wrong (and which error-OB was called). I also copy the content of the error OBs TEMP data (there is a lot of info why the OB was called) into a DB. Then I can investigate the error OB data at a later time.

Phill77, investigate the diagnostics buffer.
 
Hi Jesper
Of course your correct regarding the OBs I am missing

It doesn't explain how it works with the original node but I agree it is best to do what you said
 
Hi Jesper
What I meant was...

Original setup was 1 off CPU, 1 off MP277 and 1 off IM-151-1 Basic. When the panel with the IM-151 was powered down I used SFC51 to detect a loss of slave and put up a big banner on the HMI mimic, plus an alarm (The system cannot run without the slave and the customers are not the sharpest and said the alarm message was not obvious enough). The CPU remains in run.

Fast forward to last week. I added a IM151-1-HF as an additional node, which is also the last profibus drop. As said earlier when I powered down the new remote control panel the PLC went to stop which is approx. 30 minutes down time to restart and go through the startup sequence, hence I am trying to prevent the PLC stop.

Unfortunately I do not have the parts to duplicate the system for testing in my office.

I am interested in what you said about processing the OB data into a DB for interrogation and I will try and read up on that.

Thanks for the advice
 
Maybe you can use this.

STL source code for error-OB UDTs:
Code:
TYPE UDT_OB82   
  STRUCT
  OB82_EV_CLASS : BYTE ;	//16#39, Event class 3, Entering event state, Internal fault event
  OB82_FLT_ID : BYTE ;	//16#XX, Fault identifcation code
  OB82_PRIORITY : BYTE ;	//Priority of OB Execution
  OB82_OB_NUMBR : BYTE ;	//82 (Organization block 82, OB82)
  OB82_RESERVED_1 : BYTE ;	//Reserved for system
  OB82_IO_FLAG : BYTE ;	//Input (01010100), Output (01010101)
  OB82_MDL_ADDR : WORD ;	//Base address of module with fault
  OB82_MDL_DEFECT : BOOL ;	//Module defective
  OB82_INT_FAULT : BOOL ;	//Internal fault
  OB82_EXT_FAULT : BOOL ;	//External fault
  OB82_PNT_INFO : BOOL ;	//Point information
  OB82_EXT_VOLTAGE : BOOL ;	//External voltage low
  OB82_FLD_CONNCTR : BOOL ;	//Field wiring connector missing
  OB82_NO_CONFIG : BOOL ;	//Module has no configuration data
  OB82_CONFIG_ERR : BOOL ;	//Module has configuration error
  OB82_MDL_TYPE : BYTE ;	//Type of module
  OB82_SUB_MDL_ERR : BOOL ;	//Sub-Module is missing or has error
  OB82_COMM_FAULT : BOOL ;	//Communication fault
  OB82_MDL_STOP : BOOL ;	//Module is stopped
  OB82_WTCH_DOG_FLT : BOOL ;	//Watch dog timer stopped module
  OB82_INT_PS_FLT : BOOL ;	//Internal power supply fault
  OB82_PRIM_BATT_FLT : BOOL ;	//Primary battery is in fault
  OB82_BCKUP_BATT_FLT : BOOL ;	//Backup battery is in fault
  OB82_RESERVED_2 : BOOL ;	//Reserved for system
  OB82_RACK_FLT : BOOL ;	//Rack fault, only for bus interface module
  OB82_PROC_FLT : BOOL ;	//Processor fault
  OB82_EPROM_FLT : BOOL ;	//EPROM fault
  OB82_RAM_FLT : BOOL ;	//RAM fault
  OB82_ADU_FLT : BOOL ;	//ADU fault
  OB82_FUSE_FLT : BOOL ;	//Fuse fault
  OB82_HW_INTR_FLT : BOOL ;	//Hardware interupt input in fault
  OB82_RESERVED_3 : BOOL ;	//Reserved for system  
  OB82_DATE_TIME : DATE_AND_TIME ;	//Date and time OB82 started   
  END_STRUCT
END_TYPE

TYPE UDT_OB85   
  STRUCT
  OB85_EV_CLASS : BYTE ;	//16#35 Event class 3
  OB85_FLT_ID : BYTE ;	//16#XX, Fault identification code
  OB85_PRIORITY : BYTE ;	//Priority of OB Execution
  OB85_OB_NUMBR : BYTE ;	//85 (Organization block 85, OB85)
  OB85_RESERVED_1 : BYTE ;	//Reserved for system
  OB85_RESERVED_2 : BYTE ;	//Reserved for system
  OB85_RESERVED_3 : INT ;	//Reserved for system
  OB85_ERR_EV_CLASS : BYTE ;	//Class of event causing error
  OB85_ERR_EV_NUM : BYTE ;	//Number of event causing error
  OB85_OB_PRIOR : BYTE ;	//Priority of OB causing error
  OB85_OB_NUM : BYTE ;	//Number of OB causing error
  OB85_DATE_TIME : DATE_AND_TIME ;	//Date and time OB85 started   
  END_STRUCT
END_TYPE

TYPE UDT_OB86   
  STRUCT
  OB86_EV_CLASS : BYTE ;	//16#38/39 Event class 3
  OB86_FLT_ID : BYTE ;	//16#C1/C4/C5, Fault identifcation code
  OB86_PRIORITY : BYTE ;	//Priority of OB Execution
  OB86_OB_NUMBR : BYTE ;	//86 (Organization block 86, OB86)
  OB86_RESERVED_1 : BYTE ;	//Reserved for system
  OB86_RESERVED_2 : BYTE ;	//Reserved for system
  OB86_MDL_ADDR : WORD ;	//Base address of IM module in rack with fault
  OB86_RACKS_FLTD : ARRAY  [0 .. 31 ] OF BOOL ;	//Racks in fault
  OB86_DATE_TIME : DATE_AND_TIME ;	//Date and time OB86 started
  END_STRUCT
END_TYPE

TYPE UDT_OB121   
  STRUCT
  OB121_EV_CLASS : BYTE ;	//16#25, Event class 2, Entering event state, Internal fault event
  OB121_SW_FLT : BYTE ;	//16#XX Software programming fault
  OB121_PRIORITY : BYTE ;	//Priority of OB Execution
  OB121_OB_NUMBR : BYTE ;	//121 (Organization block 121, OB121)
  OB121_BLK_TYPE : BYTE ;	//16#88/8A/8B/8C/8E Type of block fault occured in
  OB121_RESERVED_1 : BYTE ;	//Reserved for system
  OB121_FLT_REG : WORD ;	//16#XX Specific register that caused fault
  OB121_BLK_NUM : WORD ;	//Number of block that programming fault occured in
  OB121_PRG_ADDR : WORD ;	//Address in block where programming fault occured
  OB121_DATE_TIME : DATE_AND_TIME ;	//Date and time OB121 started
  END_STRUCT
END_TYPE

TYPE UDT_OB122   
  STRUCT
  OB122_EV_CLASS : BYTE ;	//16#25, Event class 2, Entering event state, Internal fault event
  OB122_SW_FLT : BYTE ;	//16#XX Software error code
  OB122_PRIORITY : BYTE ;	//Priority of OB Execution
  OB122_OB_NUMBR : BYTE ;	//122 (Organization block 122, OB122)
  OB122_BLK_TYPE : BYTE ;	//16#88/8A/8B/8C/8E Type of block fault occured in
  OB122_MEM_AREA : BYTE ;	//Memory area where access error occured
  OB122_MEM_ADDR : WORD ;	//Memory address where access error occured
  OB122_BLK_NUM : WORD ;	//Block number in which error occured
  OB122_PRG_ADDR : WORD ;	//Program address where error occured
  OB122_DATE_TIME : DATE_AND_TIME ;	//Date and time OB1 started
  END_STRUCT
END_TYPE

SCL code for DB to save error-OB data, and for error OBs:
Code:
//block for saving the temp content of the error OBs.

DATA_BLOCK SAVE_OB
    STRUCT
    OB82vars : UDT_OB82 ;
    OB85vars : UDT_OB85 ;
    OB86vars : UDT_OB86 ;
    OB121vars : UDT_OB121 ;
    OB122vars : UDT_OB122 ;
    END_STRUCT
BEGIN
END_DATA_BLOCK

// standard error OBs that are available in an S7-300 CPU

ORGANIZATION_BLOCK OB82
    VAR_TEMP
        vars: UDT_OB82;
    END_VAR
    SAVE_OB.OB82vars := vars ;
END_ORGANIZATION_BLOCK

ORGANIZATION_BLOCK OB85
    VAR_TEMP
        vars: UDT_OB85;
    END_VAR
    SAVE_OB.OB85vars := vars ;
    "OB85_ProgSeqErr" := TRUE ;
END_ORGANIZATION_BLOCK

ORGANIZATION_BLOCK OB86
    VAR_TEMP
        vars: UDT_OB86;
    END_VAR
    SAVE_OB.OB86vars := vars ;
    "OB86_RackErr_SlaveErr" := TRUE ;
END_ORGANIZATION_BLOCK

ORGANIZATION_BLOCK OB121
    VAR_TEMP
        vars: UDT_OB121;
    END_VAR
    SAVE_OB.OB121vars := vars ;
    "OB121_ProgErr" := TRUE ;
END_ORGANIZATION_BLOCK

ORGANIZATION_BLOCK OB122
    VAR_TEMP
        vars: UDT_OB122;
    END_VAR
    SAVE_OB.OB122vars := vars ;
    "OB122_IOErr" := TRUE ;
END_ORGANIZATION_BLOCK
 

Similar Topics

I was trying to communicate between Siemens ET200S IM-151-8 PN/DP CPU to Rockwell Allen Bradley L73 through Hilscher Gateway NT100-RE-EN. Using...
Replies
0
Views
99
Hi all It’s been a while since I did any safety config with an S7-300 PLC and I think I must be missing something , I’ve added a 4F-DO output...
Replies
7
Views
3,779
PLC in the project that I am currently working on has following GSD file but I cant find it anywhere online. My PLC is ET200S and its CPU is...
Replies
7
Views
2,009
Got a new project using WinCC SCADA (V7.5 SP2) - the PLC is an ET200-SP, I've never had to communicate with one of these before (done plenty of...
Replies
3
Views
2,311
i m working on an old machine that has a layout of 1 cpu 6es7 315-6tg10-0ab0 (bus adresss 2) 1 et200s 6es7 151-1aa04-0abo (bus adress 4) 1 et200s...
Replies
7
Views
3,177
Back
Top Bottom