A- Schnittstelle bzw. Systemfunktionen

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen UNIT ASI_CP; INTERFACE PROGRAM backgro...
Author: Til Albert
11 downloads 0 Views 60KB Size
SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen UNIT ASI_CP; INTERFACE PROGRAM background; PROGRAM startup; PROGRAM shutdown; PROGRAM perifault; END_INTERFACE IMPLEMENTATION VAR_GLOBAL // Log_Adresse_ASI:INT; Command:INT; Slave_Address_old:USINT; Slave_Address_new:USINT; Read_Data:ARRAY [0..239] OF USINT; Write_Data:ARRAY [0..239] OF USINT; Command_number:USINT; rv_Write_record:DINT; rv_Read_record:DINT; Struct_Read_record:StructRetReadRecord; // Analoge Signale // Analog Signals Read_Analog:BOOL; Write_Analog:BOOL; Out_Kanal_1:INT; Out_Kanal_2:INT; In_Kanal_1:INT; In_Kanal_2:INT; In_Kanal_3:INT; In_Kanal_4:INT; rv_Write_record_ana:DINT; Write_Data_Analog:ARRAY [0..239] OF USINT; rv_Read_record_analog:DINT; Read_Data_analog:ARRAY [0..239] OF USINT; Struct_Read_record_analog:StructRetReadRecord; // Digitale Signale // Digital Signals Slave_2_In1:BOOL;Slave_2_In2:BOOL; Slave_3_In1:BOOL;Slave_3_In2:BOOL;Slave_3_In3:BOOL;Slave_3_In4:BOOL; Slave_4_In1:BOOL;Slave_4_In2:BOOL;Slave_4_In3:BOOL;Slave_4_In4:BOOL; Slave_5_In1:BOOL;Slave_5_In2:BOOL; Slave_6_In1:BOOL;Slave_6_In2:BOOL; Slave_11_In1:BOOL;Slave_11_In2:BOOL;

Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 1 / 8

Ausgabe 04.09.2003

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen

Slave_2_Out1:BOOL; Slave_3_Out1:BOOL;Slave_3_Out2:BOOL;Slave_3_Out3:BOOL;Slave_3_Out4:BOOL; Slave_5_Out1:BOOL;Slave_5_Out2:BOOL; Slave_6_Out1:BOOL;Slave_6_Out2:BOOL; Slave_7_Out1:BOOL;Slave_7_Out2:BOOL;Slave_7_Out3:BOOL;Slave_7_Out4:BOOL; Slave_11_Out1:BOOL; // Alarm TSI Infos StartTime:DT; InterruptID:UDINT:=0; AdressIn:DINT:=0; AdressOut:DINT:=0; AdressDiag:DINT:=0; Details:DWORD:=0; END_VAR PROGRAM background (* Logische Adresse des ASI Teilnehmers angeben (siehe HW Konfiguration) Logical Adress from ASI Slave (see HW Konfiguration) *) Log_Adresse_ASI:=40; // ================================================ (* Kommando Schnittstelle / Command Interface Command = 1 : Slave-Adresse ändern Slave_Address_old = jetzige Adresse Slave_Address_new = neue Adresse Command = 1 : Change Slave Address Slave_Address_old = Actuall Adress Slave_Address_new = new Adress -------------------------------------Command = 2 : Versionskennung_lesen Ergebnisse in read_data[0..n] Command = 2 : Read Version Results in read_data[0..n] -------------------------------------Command = 3 : Erweiterte_Gesamtkonfiguration lesen Ergebnisse in read_data[0..n] Command = 3 : Read konfiguration Results in read_data[0..n]

Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 2 / 8

Ausgabe 04.09.2003

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen -------------------------------------Command = 4 : Erweiterte_Parameterliste_schreiben Slave 10 auf Bereich 0-600 Ohm parametrieren Command = 4 : Write_Extended_Parameterlist Change Slave 10 parameter to 0-600 Ohm -------------------------------------*) CASE Command OF // ================================================ 0:; // Kein Kommando // No action // ================================================ 1: // Asi_i_Slave-Adresse_Aendern // Change_AS-i-Slave_Address Command_number:=16#0D; Write_Data[0]:=Command_number; Write_Data[1]:=Slave_Address_old; Write_Data[2]:=Slave_Address_new; rv_write_record:=_writerecord( ioid:=Output, logaddress:=Log_Adresse_ASI, recordnumber:=2, offset:=0, datalength:=3, data:=Write_Data, nextcommand:=When_Command_done, commandid:=_getCommandId() ); Command:=0; // ================================================ 2: // Versionskennung_lesen // Read Version Command_number:=16#14; Write_Data[0]:=Command_number; rv_write_record:=_writerecord( ioid:=Output, logaddress:=Log_Adresse_ASI, recordnumber:=2, offset:=0, datalength:=1, data:=Write_Data, nextcommand:=When_Command_done, commandid:=_getCommandId() ); Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 3 / 8

Ausgabe 04.09.2003

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen Command:=0; IF rv_write_record=0 THEN Struct_read_record :=_readrecord( ioid:=INPUT, logaddress:=Log_Adresse_ASI, recordnumber:=2, offset:=0, datalength:=30, nextcommand:=When_Command_done, commandid:=_getCommandId() ); rv_Read_Record:=Struct_read_record.functionResult; read_data:=Struct_read_record.data; END_IF; // ================================================ 3: // Erweiterte_Gesamtkonfiguration_lesen // Read Configuration Command_number:=16#39; Write_Data[0]:=Command_number; rv_Write_record:=_writerecord( ioid:=Output, logaddress:=Log_Adresse_ASI, recordnumber:=2, offset:=0, datalength:=1, data:=Write_Data, nextcommand:=When_Command_done, commandid:=_getCommandId() ); IF rv_write_record=0 THEN Struct_read_record :=_readrecord( ioid:=INPUT, logaddress:=Log_Adresse_ASI, recordnumber:=2, offset:=0, datalength:=218, nextcommand:=When_Command_done, commandid:=_getCommandId() ); rv_Read_Record:=Struct_read_record.functionResult; read_data:=Struct_read_record.data; END_IF; Command:=0; Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 4 / 8

Ausgabe 04.09.2003

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen // ================================================ 4: // // // //

Erweiterte_Parameterliste_schreiben Slave 10 auf Bereich 0-600 Ohm parametrieren Write_Extended_Parameter list Change Slave 10 parameter to 0-600 Ohm

Command_number:=16#3C; Write_Data[0]:=Command_number; Write_Data[1]:=16#00; Write_Data[2]:=16#0F; //Slave 1 Write_Data[3]:=16#FF; //Slave 2 - Slave 3 Write_Data[4]:=16#FF; //Slave 4 - Slave 5 Write_Data[5]:=16#FF; //Slave 6 - Slave 7 Write_Data[6]:=16#FF; //Slave 8 - Slave 9 Write_Data[7]:=16#EF; //Slave 10 - Slave 11 rv_Write_record:=_writerecord( ioid:=Output, logaddress:=Log_Adresse_ASI, recordnumber:=2, offset:=0, datalength:=8, data:=Write_Data, nextcommand:=When_Command_done, commandid:=_getCommandId() ); Command:=0; END_CASE; // ================================================ (* Analoge E/AS ansteuern über DS141 (AS-i Slave Profil >= 7.3) Anfangsadresse Slave 8 = 24 (2AI) Anfangsadresse Slave 9 = 32 (2AO) Anfangsadresse Slave 10 = 40 (2AI) Analoge Signals with DS141(AS-i Slave Profil >= 7.3) Start adress Slave 8 = 24 (2AI) Start adress Slave 9 = 32 (2AO) Start adress Slave 10 = 40 (2AI) Mit Write_analog = 1 werden die analogen Sollwerte (Ausgänge) übertragen Mit Read_analog = 1 werden die analogen Istwerte (Eingänge) eingelesen With Write_analog = 1 the analog Setpoint (Outputs) are transferred With Read_analog = 1 the analog actual Values (Inputs) are transferred *)

Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 5 / 8

Ausgabe 04.09.2003

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen // Analog Ausgänge // Analog Outputs Write_Data_Analog[32] :=BYTE_TO_USINT(WORD_TO_BYTE (SHR((INT_TO_WORD (Out_Kanal_1)),8))); Write_Data_Analog[33] :=BYTE_TO_USINT(WORD_TO_BYTE (INT_TO_WORD (Out_Kanal_1))); Write_Data_Analog[34] :=BYTE_TO_USINT(WORD_TO_BYTE (SHR((INT_TO_WORD (Out_Kanal_2)),8))); Write_Data_Analog[35] :=BYTE_TO_USINT(WORD_TO_BYTE (INT_TO_WORD (Out_Kanal_2))); IF Write_analog= 1 THEN rv_Write_record_Ana:=_writerecord( ioid:=Output, logaddress:=Log_Adresse_ASI, recordnumber:=141, offset:=0, datalength:=128, data:=Write_Data_Analog, nextcommand:=When_Command_done, commandid:=_getCommandId() ); Write_analog:=0; END_IF; // Analog Eingänge // Analog Inputs IF Read_analog= 1 THEN Struct_read_record_analog :=_readrecord( ioid:=INPUT, logaddress:=Log_Adresse_ASI, recordnumber:=141, offset:=0, datalength:=128, nextcommand:=When_Command_done, commandid:=_getCommandId() ); rv_Read_Record_analog:=Struct_read_record_analog.functionResult; read_data_analog:=Struct_read_record_Analog.data; Read_analog:=0; END_IF; In_Kanal_1:= WORD_TO_INT (SHL (BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[24])),8) OR BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[25]))); Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 6 / 8

Ausgabe 04.09.2003

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen In_Kanal_2:= WORD_TO_INT (SHL (BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[26])),8) OR BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[27])));

In_Kanal_3:= WORD_TO_INT (SHL (BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[40])),8) OR BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[41]))); In_Kanal_4:= WORD_TO_INT (SHL (BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[42])),8) OR BYTE_TO_WORD(USINT_TO_BYTE(Read_Data_Analog[43]))); // Digitale Ein und Ausgänge (über Prozessabbild) // Digital In and Outputs (through Process image) //====================================================== // Slave 2 = Bit 7-4, Slave 3 = Bit 3-0 %Q41.6:=Slave_2_Out1; Slave_2_In1:=%I41.4; Slave_2_In2:=%I41.5; %Q41.0:=Slave_3_Out1; %Q41.1:=Slave_3_Out2; %Q41.2:=Slave_3_Out3; %Q41.3:=Slave_3_Out4; Slave_3_In1:=%I41.0; Slave_3_In2:=%I41.1; Slave_3_In3:=%I41.2; Slave_3_In4:=%I41.3; // Slave 4 = = Bit 7-4, Slave 5 = Bit 3-0 Slave_4_In1:=%I42.4; Slave_4_In2:=%I42.5; Slave_4_In3:=%I42.6; Slave_4_In4:=%I42.7; Slave_5_In1:=%I42.0; Slave_5_In2:=%I42.1; %Q42.2:=Slave_5_Out1; %Q42.3:=Slave_5_Out2; // Slave 6 = = Bit 7-4, Slave 7 = Bit 3-0 Slave_6_In1:=%I43.4; Slave_6_In2:=%I43.5; %Q43.6:=Slave_6_Out1; %Q43.7:=Slave_6_Out2; %Q43.0:=Slave_7_Out1; %Q43.1:=Slave_7_Out2; %Q43.2:=Slave_7_Out3; %Q43.3:=Slave_7_Out4; Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 7 / 8

Ausgabe 04.09.2003

SIMOTION Anlage zu FAQ Einbindung AS Interface Slaves mit CP343-2 über E/A- Schnittstelle bzw. Systemfunktionen // Slave 11 %Q45.2:=Slave_11_Out1; Slave_11_In1:=%I45.0; Slave_11_In2:=%I45.1; END_PROGRAM PROGRAM startup ; END_PROGRAM PROGRAM shutdown ; END_PROGRAM PROGRAM perifault StartTime:=TSI#startTime; InterruptID:=TSI#interruptID; AdressIn:=TSI#logBaseAdrIn; AdressOut:=TSI#logBaseAdrOut; AdressDiag:=TSI#logDiagAdr; Details:=TSI#Details; END_PROGRAM

END_IMPLEMENTATION

Technische Aenderungen vorbehalten.  Siemens AG 2003 Programmbeispiel.doc

Seite 8 / 8

Ausgabe 04.09.2003