meikelneit
Level-2
- Beiträge
- 172
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Schönen guten Morgen,
ich habe ein Problem beim schreiben von Parametersätzen mit dem im Titel besagten Ultraschallschweißgerät und ich würde moch sehr über Ideen und Anregegungen bzw. im besten Fall sogar über Lösungen Freuen.
Zunächst einmal verwende ich die Bausteine die Herrmann mitliefert und zum Schreiben den ABL2 (FB10).
Ich Poste einmal den Baustein mit dem ich das Senden antrigger.
Bei Rückfragen gerne mehr Erklärungen, es richtet sich jetzt erstmal an diejenigen die das Gerät kennen. Ich gehe hin und Konfoguriere mir ein Array Platz pro Parametersatz und Sende die dann in einer Schrittkette nacheinandner an den Controler, man könnte hier halt auch grundsätzlich den Schreiben FB als Multiinstanz aufrufen, das könnte gegebenfalls ein Untschied sein.
Nun das Problem, unregelmäßig, geradezu Zufällig schaltet sich das HMI des Geräts in den Modus "Bedienung gesperrt (Feldbus)". Der Technische Support konnte mir leider nicht weiterhelfen, sie sagten mir nur das es ein Eigens dafür vorgesehenes Signal gibt, um das HMI ab- oder zuzuschalten. Dieses Bit habe ich aber dauer gefalsed, und ab da konnten sie mir dann auch nicht weiter hellfen.
Selbst wenn ich dieses Bit dann mal Trigger kommt die Bedienung des HMI nicht zurück, einzig ein Neustart des Controlers Hilft da weiter.
Schönen dank schonmal im Vorraus
Meikelneit
PS: Ich würde auch gerne mal Tips zu SCL Schrittketten Strukturen haben, meine gefällt mir im Grunde nicht.
ich habe ein Problem beim schreiben von Parametersätzen mit dem im Titel besagten Ultraschallschweißgerät und ich würde moch sehr über Ideen und Anregegungen bzw. im besten Fall sogar über Lösungen Freuen.
Zunächst einmal verwende ich die Bausteine die Herrmann mitliefert und zum Schreiben den ABL2 (FB10).
Ich Poste einmal den Baustein mit dem ich das Senden antrigger.
Code:
REGION Generate Error
#General_Error := #Error_Write;
END_REGION
REGION Scalefactors
IF #Start_Writing_Data THEN
#DATA_DB.PARAMETERSET[0].SCAL_1_WRITE := #IDENTITY; //Set Operation mode to RPN distance
#DATA_DB.PARAMETERSET[0].SCAL_4_WRITE := #TIME; //Hold time
#DATA_DB.PARAMETERSET[1].SCAL_1_WRITE := #LENGTH; //Wleding stroke RPN
#DATA_DB.PARAMETERSET[2].SCAL_1_WRITE := #FORCE; //Preset force
#DATA_DB.PARAMETERSET[2].SCAL_2_WRITE := #FORCE; //Trigger force
#DATA_DB.PARAMETERSET[2].SCAL_3_WRITE := #FORCE; //Welding force F1
#DATA_DB.PARAMETERSET[2].SCAL_4_WRITE := #FORCE; //default
#DATA_DB.PARAMETERSET[2].SCAL_5_WRITE := #FORCE; //default
#DATA_DB.PARAMETERSET[2].SCAL_6_WRITE := #FORCE; //Holding Force
#DATA_DB.PARAMETERSET[3].SCAL_1_WRITE := #LENGTH; //Weldingstroke RPN max
#DATA_DB.PARAMETERSET[3].SCAL_2_WRITE := #LENGTH; //Weldingstroke RPN min
#DATA_DB.PARAMETERSET[4].SCAL_1_WRITE := 0.0000207320529355; //Amplitude
END_IF;
END_REGION
REGION Parameterset configuration
IF #Start_Writing_Data THEN
#DATA_DB.PARAMETERSET[0].ID_WRITE_READ := #HW_Adress_US;
#DATA_DB.PARAMETERSET[0].MEMORY_NO := #Memory_NO;
#DATA_DB.PARAMETERSET[0].PARAMETER_G_M_WRITE := TRUE;
#DATA_DB.PARAMETERSET[0].PARAMETERSET_WRITE := 1;
#DATA_DB.PARAMETERSET[0].PARAMETERNUMBER_WRITE := 2;
#DATA_DB.PARAMETERSET[0].NUMBERS_OF_PARAMETERS_WR := 4;
#DATA_DB.PARAMETERSET[0].PARAM_1_WRITE := 8.0; //Set Operation mode to RPN distance
#DATA_DB.PARAMETERSET[0].PARAM_4_WRITE := #actual_typeparameter.database."Process Parameter".Holding_time;
#DATA_DB.PARAMETERSET[1].ID_WRITE_READ := #HW_Adress_US;
#DATA_DB.PARAMETERSET[1].MEMORY_NO := #Memory_NO;
#DATA_DB.PARAMETERSET[1].PARAMETER_G_M_WRITE := TRUE;
#DATA_DB.PARAMETERSET[1].PARAMETERSET_WRITE := 2;
#DATA_DB.PARAMETERSET[1].PARAMETERNUMBER_WRITE := 4;
#DATA_DB.PARAMETERSET[1].NUMBERS_OF_PARAMETERS_WR := 1;
#DATA_DB.PARAMETERSET[1].PARAM_1_WRITE := #actual_typeparameter.database."Process Parameter"."Welding_Stroke_RPN_F1->F2";
#DATA_DB.PARAMETERSET[2].ID_WRITE_READ := #HW_Adress_US;
#DATA_DB.PARAMETERSET[2].MEMORY_NO := #Memory_NO;
#DATA_DB.PARAMETERSET[2].PARAMETER_G_M_WRITE := TRUE;
#DATA_DB.PARAMETERSET[2].PARAMETERSET_WRITE := 3;
#DATA_DB.PARAMETERSET[2].PARAMETERNUMBER_WRITE := 1;
#DATA_DB.PARAMETERSET[2].NUMBERS_OF_PARAMETERS_WR := 6;
#DATA_DB.PARAMETERSET[2].PARAM_1_WRITE := #actual_typeparameter.database."Process Parameter".Preset_force;
#DATA_DB.PARAMETERSET[2].PARAM_2_WRITE := #actual_typeparameter.database."Process Parameter".Trigger_force;
#DATA_DB.PARAMETERSET[2].PARAM_3_WRITE := #actual_typeparameter.database."Process Parameter".Force_F1;
#DATA_DB.PARAMETERSET[2].PARAM_4_WRITE := 20.0; //allowed default value
#DATA_DB.PARAMETERSET[2].PARAM_5_WRITE := 20.0; //allowed default value
#DATA_DB.PARAMETERSET[2].PARAM_6_WRITE := #actual_typeparameter.database."Process Parameter".Holding_force;
#DATA_DB.PARAMETERSET[3].ID_WRITE_READ := #HW_Adress_US;
#DATA_DB.PARAMETERSET[3].MEMORY_NO := #Memory_NO;
#DATA_DB.PARAMETERSET[3].PARAMETER_G_M_WRITE := TRUE;
#DATA_DB.PARAMETERSET[3].PARAMETERSET_WRITE := 8;
#DATA_DB.PARAMETERSET[3].PARAMETERNUMBER_WRITE := 35;
#DATA_DB.PARAMETERSET[3].NUMBERS_OF_PARAMETERS_WR := 2;
#DATA_DB.PARAMETERSET[3].PARAM_1_WRITE := #actual_typeparameter.database."Process Parameter".Welding_Stroke_RPN_max;
#DATA_DB.PARAMETERSET[3].PARAM_2_WRITE := #actual_typeparameter.database."Process Parameter".Welding_Stroke_RPN_min;
#DATA_DB.PARAMETERSET[4].ID_WRITE_READ := #HW_Adress_US;
#DATA_DB.PARAMETERSET[4].MEMORY_NO := #Memory_NO;
#DATA_DB.PARAMETERSET[4].PARAMETER_G_M_WRITE := TRUE;
#DATA_DB.PARAMETERSET[4].PARAMETERSET_WRITE := 9;
#DATA_DB.PARAMETERSET[4].PARAMETERNUMBER_WRITE := 1;
#DATA_DB.PARAMETERSET[4].NUMBERS_OF_PARAMETERS_WR := 1;
#DATA_DB.PARAMETERSET[4].PARAM_1_WRITE := #actual_typeparameter.database."Process Parameter"."Amplitude [%]";
END_IF;
END_REGION
REGION Build Flags
#R_TRIG_Write_Data(CLK := #Start_Writing_Data,
Q => #Start_SFC);
#R_TRIG_Write_Direct(CLK:=#Start_Writing_Direct,
Q=>#Start_SFC_Direct);
IF #Start_SFC THEN
#Start_Writing_Data := FALSE;
#Cycle_Count := 0;
END_IF;
#R_TRIG_Next_Step(CLK:=#Writing_Finished,
Q=>#Next_Step);
#R_TRIG_Next_Step_Direct(CLK := #Write_direct_finished,
Q => #Next_Step_direct);
END_REGION
REGION SEQUENCE Write Data
//Start Sequence
IF #Start_SFC AND NOT #General_Error THEN
#Cycle_Count := 1;
END_IF;
//Step 5
IF #Cycle_Count = 5 AND NOT #General_Error THEN
IF #Next_Step THEN
#Cycle_Count := 0;
#Start_Write := FALSE;
ELSE
#DATA_DB.Num_Paraset := 4;
#Start_Write := TRUE;
END_IF;
END_IF;
//Step 4
IF #Cycle_Count = 4 AND NOT #General_Error THEN
IF #Next_Step THEN
#Cycle_Count := 5;
#Start_Write := FALSE;
ELSE
#DATA_DB.Num_Paraset := 3;
#Start_Write := TRUE;
END_IF;
END_IF;
//Step 3
IF #Cycle_Count = 3 AND NOT #General_Error THEN
IF #Next_Step THEN
#Cycle_Count := 4;
#Start_Write := FALSE;
ELSE
#DATA_DB.Num_Paraset := 2;
#Start_Write := TRUE;
END_IF;
END_IF;
//Step 2
IF #Cycle_Count = 2 AND NOT #General_Error THEN
IF #Next_Step THEN
#Cycle_Count := 3;
#Start_Write := FALSE;
ELSE
#DATA_DB.Num_Paraset := 1;
#Start_Write := TRUE;
#Start_Write := TRUE;
END_IF;
END_IF;
//Step 1
IF #Cycle_Count = 1 AND NOT #General_Error THEN
IF #Next_Step THEN
#Cycle_Count := 2;
#Start_Write := FALSE;
ELSE
#DATA_DB.Num_Paraset := 0;
#Start_Write := TRUE;
END_IF;
END_IF;
END_REGION
REGION ERROR Reset
IF #General_Error AND #Reset THEN
#Start_Write := FALSE;
#Cycle_Count := 0;
#Cycle_Count_direct := 0;
END_IF;
END_REGION
Bei Rückfragen gerne mehr Erklärungen, es richtet sich jetzt erstmal an diejenigen die das Gerät kennen. Ich gehe hin und Konfoguriere mir ein Array Platz pro Parametersatz und Sende die dann in einer Schrittkette nacheinandner an den Controler, man könnte hier halt auch grundsätzlich den Schreiben FB als Multiinstanz aufrufen, das könnte gegebenfalls ein Untschied sein.
Nun das Problem, unregelmäßig, geradezu Zufällig schaltet sich das HMI des Geräts in den Modus "Bedienung gesperrt (Feldbus)". Der Technische Support konnte mir leider nicht weiterhelfen, sie sagten mir nur das es ein Eigens dafür vorgesehenes Signal gibt, um das HMI ab- oder zuzuschalten. Dieses Bit habe ich aber dauer gefalsed, und ab da konnten sie mir dann auch nicht weiter hellfen.
Selbst wenn ich dieses Bit dann mal Trigger kommt die Bedienung des HMI nicht zurück, einzig ein Neustart des Controlers Hilft da weiter.
Schönen dank schonmal im Vorraus
Meikelneit
PS: Ich würde auch gerne mal Tips zu SCL Schrittketten Strukturen haben, meine gefällt mir im Grunde nicht.