diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/.Dev_Pump.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/.Dev_Pump.PVM.dock
new file mode 100644
index 0000000..e454f4c
--- /dev/null
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/.Dev_Pump.PVM.dock
@@ -0,0 +1,3 @@
+WATCH Ver=2.00 PLCName= CPUName= TaskName=
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=0 ASCIIString=0
+ name type force value level type len format place expand specs
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlOpc.Act_PanelMode.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlOpc.Act_PanelMode.PVM.dock
index 53a5628..7b7a2da 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlOpc.Act_PanelMode.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlOpc.Act_PanelMode.PVM.dock
@@ -1,15 +1,64 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=ControlOpc
-Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=7 ASCIIString=0
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=13 ASCIIString=0
name type force value level type len format place expand specs
Test_uint32 UDINT[0..1] 0 " *" 0 7 2 0 1 1 a,1,2
- Test_uint32[0] UDINT 0 " 519443585" 1 7 1 10 1 0
+ Test_uint32[0] UDINT 0 " 0" 1 7 1 10 1 0
Test_uint32[1] UDINT 0 " 0" 1 7 1 10 1 0
Test_int8 SINT[0..7] 0 " *" 0 2 8 0 1 1 a,1,8
- Test_int8[0] SINT 0 " -127" 1 2 1 10 1 0
- Test_int8[1] SINT 0 " 20" 1 2 1 10 1 0
- Test_int8[2] SINT 0 " -10" 1 2 1 10 1 0
- Test_int8[3] SINT 0 " 30" 1 2 1 10 1 0
- Test_int8[4] SINT 0 " -127" 1 2 1 10 1 0
- Test_int8[5] SINT 0 " 20" 1 2 1 10 1 0
- Test_int8[6] SINT 0 " -10" 1 2 1 10 1 0
- Test_int8[7] SINT 0 " 30" 1 2 1 10 1 0
+ Test_int8[0] SINT 0 " 0" 1 2 1 10 1 0
+ Test_int8[1] SINT 0 " 0" 1 2 1 10 1 0
+ Test_int8[2] SINT 0 " 0" 1 2 1 10 1 0
+ Test_int8[3] SINT 0 " 0" 1 2 1 10 1 0
+ Test_int8[4] SINT 0 " 0" 1 2 1 10 1 0
+ Test_int8[5] SINT 0 " 0" 1 2 1 10 1 0
+ Test_int8[6] SINT 0 " 0" 1 2 1 10 1 0
+ Test_int8[7] SINT 0 " 0" 1 2 1 10 1 0
+ PanelControlKey_1 UDINT 0 " 0" 0 7 1 10 0 0
+ PanelControlKey_2 UDINT 0 " 0" 0 7 1 10 0 0
+ PanelKey EJM_RemoteControl 0 " *" 0 24 1 0 0 1
+ WorkMode SINT 0 " 0" 1 2 1 10 0 0
+ EStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ PumpStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ PumpStop BOOL 0 " TRUE" 1 1 1 2 0 0
+ CutStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ CutStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ LoaderStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ LoaderStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportCorotation BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportReversal BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ StandbyStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ StandbyStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ Reset BOOL 0 " FALSE" 1 1 1 2 0 0
+ Track SINT 0 " 0" 1 2 1 10 0 0
+ TrackL SINT 0 " 0" 1 2 1 10 0 0
+ TrackR SINT 0 " 0" 1 2 1 10 0 0
+ Cut SINT 0 " 0" 1 2 1 10 0 0
+ Cutt SINT 0 " 0" 1 2 1 10 0 0
+ TransportLifterStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportLifterShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportSwingStr BOOL 0 " *" 1 1 1 2 0 0
+ TransportSwingShr BOOL 0 " *" 1 1 1 2 0 0
+ BoardLifterStr BOOL 0 " *" 1 1 1 2 0 0
+ BoardLifterShr BOOL 0 " *" 1 1 1 2 0 0
+ BoardExpansionStr BOOL 0 " *" 1 1 1 2 0 0
+ BoardExpansionShr BOOL 0 " *" 1 1 1 2 0 0
+ SupportLStr BOOL 0 " *" 1 1 1 2 0 0
+ SupportLShr BOOL 0 " *" 1 1 1 2 0 0
+ SupportRStr BOOL 0 " *" 1 1 1 2 0 0
+ SupportRShr BOOL 0 " *" 1 1 1 2 0 0
+ HydraulicStr BOOL 0 " *" 1 1 1 2 0 0
+ HydraulicShr BOOL 0 " *" 1 1 1 2 0 0
+ ECUStr BOOL 0 " *" 1 1 1 2 0 0
+ ECUShr BOOL 0 " *" 1 1 1 2 0 0
+ SupportTmpStr BOOL 0 " *" 1 1 1 2 0 0
+ SupportTmpShr BOOL 0 " *" 1 1 1 2 0 0
+ RollerStr BOOL 0 " *" 1 1 1 2 0 0
+ RollerShr BOOL 0 " *" 1 1 1 2 0 0
+ LubPump BOOL 0 " *" 1 1 1 2 0 0
+ BoostPump BOOL 0 " *" 1 1 1 2 0 0
+ TrackTension BOOL 0 " *" 1 1 1 2 0 0
+ TransportTension BOOL 0 " *" 1 1 1 2 0 0
+ DustFan BOOL 0 " *" 1 1 1 2 0 0
+ IN_CtrlMode EJM_CtrlMode 0 " *" 0 24 1 0 0 1
+ PanelMode BOOL 0 " *" 1 1 1 2 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlRem.Main.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlRem.Main.PVM.dock
index 1086c0d..b1e6f3c 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlRem.Main.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/ControlRem.Main.PVM.dock
@@ -1,3 +1,49 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=ControlRem
-Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=0 ASCIIString=0
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=17 ASCIIString=0
name type force value level type len format place expand specs
+ RemoteKey EJM_RemoteControl 0 " *" 0 24 1 0 0 1
+ WorkMode SINT 0 " 0" 1 2 1 10 0 0
+ EStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ PumpStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ PumpStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ CutStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ CutStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ LoaderStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ LoaderStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportCorotation BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportReversal BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ StandbyStart BOOL 0 " FALSE" 1 1 1 2 0 0
+ StandbyStop BOOL 0 " FALSE" 1 1 1 2 0 0
+ Reset BOOL 0 " FALSE" 1 1 1 2 0 0
+ Track SINT 0 " 0" 1 2 1 10 0 0
+ TrackL SINT 0 " 0" 1 2 1 10 0 0
+ TrackR SINT 0 " 0" 1 2 1 10 0 0
+ Cut SINT 0 " 0" 1 2 1 10 0 0
+ Cutt SINT 0 " 0" 1 2 1 10 0 0
+ TransportLifterStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportLifterShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportSwingStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportSwingShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ BoardLifterStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ BoardLifterShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ BoardExpansionStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ BoardExpansionShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ SupportLStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ SupportLShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ SupportRStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ SupportRShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ HydraulicStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ HydraulicShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ ECUStr BOOL 0 " FALSE" 1 1 1 2 0 0
+ ECUShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ SupportTmpStr BOOL 0 " *" 1 1 1 2 0 0
+ SupportTmpShr BOOL 0 " *" 1 1 1 2 0 0
+ RollerStr BOOL 0 " *" 1 1 1 2 0 0
+ RollerShr BOOL 0 " *" 1 1 1 2 0 0
+ LubPump BOOL 0 " *" 1 1 1 2 0 0
+ BoostPump BOOL 0 " *" 1 1 1 2 0 0
+ TrackTension BOOL 0 " *" 1 1 1 2 0 0
+ TransportTension BOOL 0 " *" 1 1 1 2 0 0
+ DustFan BOOL 0 " *" 1 1 1 2 0 0
+ HighSpeed BOOL 0 " *" 1 1 1 2 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Pump.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Pump.PVM.dock
index badeba8..5e09fe7 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Pump.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Pump.PVM.dock
@@ -1,5 +1,5 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=General
-Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=24 ASCIIString=0
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=8 ASCIIString=0
name type force value level type len format place expand specs
MS_Pump stMotorStatus 0 " *" 0 24 1 0 0 1
Starting RS 0 " *" 1 24 1 0 0 1
@@ -8,16 +8,16 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
Q1 BOOL 0 " FALSE" 2 1 1 2 0 0
Voiceing RS 0 " *" 1 24 1 0 0 1
SET BOOL 0 " FALSE" 2 1 1 2 0 0
- RESET1 BOOL 0 " TRUE" 2 1 1 2 0 0
+ RESET1 BOOL 0 " FALSE" 2 1 1 2 0 0
Q1 BOOL 0 " FALSE" 2 1 1 2 0 0
VoiceTON TON 0 " *" 1 24 1 0 0 1
IN BOOL 0 " FALSE" 2 1 1 2 0 0
PT TIME 0 " T#14s" 2 12 1 1 0 0
Q BOOL 0 " FALSE" 2 1 1 2 0 0
ET TIME 0 " T#0ms" 2 12 1 1 0 0
- StartTime TIME 0 " T#09h_49m_47s_750ms" 2 12 1 1 0 0
+ StartTime TIME 0 " T#05h_11m_56s_350ms" 2 12 1 1 0 0
M BOOL 0 " FALSE" 2 1 1 2 0 0
- Restart UDINT 0 " 13" 2 7 1 10 0 0
+ Restart UDINT 0 " 27" 2 7 1 10 0 0
Running BOOL 0 " FALSE" 1 1 1 2 0 0
Pausing BOOL 0 " FALSE" 1 1 1 2 0 0
StartCMD BOOL 0 " FALSE" 1 1 1 2 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Transport.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Transport.PVM.dock
index c67e1ac..9ac0c95 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Transport.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Dev_Transport.PVM.dock
@@ -19,9 +19,9 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
PT TIME 0 " T#14s" 2 12 1 1 0 0
Q BOOL 0 " FALSE" 2 1 1 2 0 0
ET TIME 0 " T#0ms" 2 12 1 1 0 0
- StartTime TIME 0 " T#10h_53m_46s_450ms" 2 12 1 1 0 0
+ StartTime TIME 0 " T#01h_07m_07s_050ms" 2 12 1 1 0 0
M BOOL 0 " FALSE" 2 1 1 2 0 0
- Restart UDINT 0 " 13" 2 7 1 10 0 0
+ Restart UDINT 0 " 27" 2 7 1 10 0 0
VoiceingRev RS 0 " *" 1 24 1 0 0 0
SET BOOL 0 " *" 2 1 1 2 0 0
RESET1 BOOL 0 " *" 2 1 1 2 0 0
@@ -31,19 +31,19 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
PT TIME 0 " T#14s" 2 12 1 1 0 0
Q BOOL 0 " FALSE" 2 1 1 2 0 0
ET TIME 0 " T#0ms" 2 12 1 1 0 0
- StartTime TIME 0 " T#10h_51m_39s_050ms" 2 12 1 1 0 0
+ StartTime TIME 0 " T#01h_07m_07s_050ms" 2 12 1 1 0 0
M BOOL 0 " FALSE" 2 1 1 2 0 0
- Restart UDINT 0 " 13" 2 7 1 10 0 0
+ Restart UDINT 0 " 27" 2 7 1 10 0 0
RunningCor BOOL 0 " FALSE" 1 1 1 2 0 0
RunningRev BOOL 0 " FALSE" 1 1 1 2 0 0
Running BOOL 0 " FALSE" 1 1 1 2 0 0
Pausing BOOL 0 " FALSE" 1 1 1 2 0 0
StartCorCMD BOOL 0 " FALSE" 1 1 1 2 0 0
StartRevCMD BOOL 0 " FALSE" 1 1 1 2 0 0
- StopCMD BOOL 0 " FALSE" 1 1 1 2 0 0
+ StopCMD BOOL 0 " TRUE" 1 1 1 2 0 0
Stop BOOL 0 " FALSE" 1 1 1 2 0 0
PanelKey EJM_RemoteControl 0 " *" 0 24 1 0 0 1
- TransportCorotation BOOL 0 " FALSE" 1 1 1 2 0 0
+ TransportCorotation BOOL 0 " TRUE" 1 1 1 2 0 0
TransportReversal BOOL 0 " FALSE" 1 1 1 2 0 0
TransportStop BOOL 0 " FALSE" 1 1 1 2 0 0
Q_MotorKM EJM_MotorKM 0 " *" 0 24 1 0 0 1
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Main.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Main.PVM.dock
index c858e2a..be77230 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Main.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/General.Main.PVM.dock
@@ -31,4 +31,4 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
Q_Overcurrent BOOL 0 " FALSE" 2 1 1 2 0 0
OutPWM USINT 0 " 0" 2 5 1 10 0 0
TmpPWM USINT 0 " 0" 2 5 1 10 0 0
- TmpCurrent REAL 0 " 1.23" 2 8 1 10 0 0
+ TmpCurrent REAL 0 " 0.0" 2 8 1 10 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/Hydraulic.Main.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/Hydraulic.Main.PVM.dock
index 44476ac..f9aef9f 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/Hydraulic.Main.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/Hydraulic.Main.PVM.dock
@@ -1,36 +1,11 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=Hydraulic
-Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=32 ASCIIString=0
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=0 ASCIIString=0
name type force value level type len format place expand specs
- Q_OilCylindShorten EJM_OilCylind 0 " *" 0 24 1 0 0 1
- TrackL fbSolenoidValve 0 " *" 1 24 1 0 0 1
- isPWM BOOL 0 " TRUE" 2 1 1 2 0 0
- InPWM USINT 0 " 0" 2 5 1 10 0 0
- InSwitch BOOL 0 " FALSE" 2 1 1 2 0 0
- Cur USINT 0 " 0" 2 5 1 10 0 0
- Status BOOL 0 " FALSE" 2 1 1 2 0 0
- Q_NotOpen BOOL 0 " FALSE" 2 1 1 2 0 0
- Q_Current REAL 0 " -16.0642567" 2 8 1 10 0 0
- Q_Status BOOL 0 " FALSE" 2 1 1 2 0 0
- Q_Overcurrent BOOL 0 " FALSE" 2 1 1 2 0 0
- OutPWM USINT 0 " 0" 2 5 1 10 0 0
- TmpPWM USINT 0 " 0" 2 5 1 10 0 0
- TmpCurrent REAL 0 " 1.23" 2 8 1 10 0 0
- Q_OilCylindExtend EJM_OilCylind 0 " *" 0 24 1 0 0 1
- TrackL fbSolenoidValve 0 " *" 1 24 1 0 0 1
- isPWM BOOL 0 " TRUE" 2 1 1 2 0 0
- InPWM USINT 0 " 39" 2 5 1 10 0 0
- InSwitch BOOL 0 " FALSE" 2 1 1 2 0 0
- Cur USINT 0 " 0" 2 5 1 10 0 0
- Status BOOL 0 " FALSE" 2 1 1 2 0 0
- Q_NotOpen BOOL 0 " FALSE" 2 1 1 2 0 0
- Q_Current REAL 0 " -16.0642567" 2 8 1 10 0 0
- Q_Status BOOL 0 " FALSE" 2 1 1 2 0 0
- Q_Overcurrent BOOL 0 " FALSE" 2 1 1 2 0 0
- OutPWM USINT 0 " 40" 2 5 1 10 0 0
- TmpPWM USINT 0 " 40" 2 5 1 10 0 0
- TmpCurrent REAL 0 " 1.23" 2 8 1 10 0 0
- RemoteKey EJM_RemoteControl 0 " *" 0 24 1 0 0 1
- TrackL SINT 0 " 50" 1 2 1 10 0 0
- TrackR SINT 0 " 0" 1 2 1 10 0 0
- RollerStr BOOL 0 " FALSE" 1 1 1 2 0 0
- RollerShr BOOL 0 " FALSE" 1 1 1 2 0 0
+ APriorityValve_TrackL fbAPriorityValve 0 " *" 0 24 1 0 1 1
+ KeyValue1 SINT 0 " 0" 1 2 1 10 0 0
+ KeyValue2 SINT 0 " 0" 1 2 1 10 0 0
+ KeyValue3 SINT 0 " 0" 1 2 1 10 0 0
+ PWM1 UDINT 0 " 102053240" 1 7 1 10 0 0
+ PWM2 UDINT 0 " 102065856" 1 7 1 10 0 0
+ TmpKey SINT 0 " 0" 1 2 1 10 0 0
+ TmpU8Key USINT 0 " 100" 1 5 1 10 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_Module_1.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_Module_1.PVM.dock
index 9cd5d2e..ff9d7e7 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_Module_1.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_Module_1.PVM.dock
@@ -1,3 +1,5 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=IOs
-Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=0 ASCIIString=0
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=1 ASCIIString=0
name type force value level type len format place expand specs
+ Q_MotorKM EJM_MotorKM 0 " *" 0 24 1 0 0 1
+ Pump BOOL 0 " FALSE" 1 1 1 2 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1B.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1B.PVM.dock
index 8d6f958..9c0a85c 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1B.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1B.PVM.dock
@@ -2,28 +2,28 @@ WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=IOs
Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=21 ASCIIString=0
name type force value level type len format place expand specs
IN_PhasePump fbEJM_Phase 0 " *" 0 24 1 0 0 1
- IU REAL 0 " 57.771" 1 8 1 10 0 0
- IV REAL 0 " 58.214" 1 8 1 10 0 0
- IW REAL 0 " 58.591" 1 8 1 10 0 0
- IT REAL 0 " 53.0922" 1 8 1 10 0 0
- U REAL 0 " 57.771" 1 8 1 10 0 0
- V REAL 0 " 58.214" 1 8 1 10 0 0
- W REAL 0 " 58.591" 1 8 1 10 0 0
- Temp REAL 0 " 53.0922" 1 8 1 10 0 0
- OutI_U INT 0 " 58" 1 3 1 10 0 0
- OutI_V INT 0 " 58" 1 3 1 10 0 0
- OutI_W INT 0 " 59" 1 3 1 10 0 0
+ IU REAL 0 " 0.0" 1 8 1 10 0 0
+ IV REAL 0 " 0.0" 1 8 1 10 0 0
+ IW REAL 0 " 0.0" 1 8 1 10 0 0
+ IT REAL 0 " 84.47" 1 8 1 10 0 0
+ U REAL 0 " 0.0" 1 8 1 10 0 0
+ V REAL 0 " 0.0" 1 8 1 10 0 0
+ W REAL 0 " 0.0" 1 8 1 10 0 0
+ Temp REAL 0 " 84.47" 1 8 1 10 0 0
+ OutI_U INT 0 " 0" 1 3 1 10 0 0
+ OutI_V INT 0 " 0" 1 3 1 10 0 0
+ OutI_W INT 0 " 0" 1 3 1 10 0 0
OutI_T INT 0 " 0" 1 3 1 10 0 0
- MaxValue REAL 0 " 58.591" 1 8 1 10 0 0
- MinValue REAL 0 " 57.771" 1 8 1 10 0 0
- AverageeValue REAL 0 " 58.192" 1 8 1 10 0 0
- Filtered5_U REAL 0 " 57.1008" 1 8 1 10 0 0
- Filtered5_V REAL 0 " 56.7196" 1 8 1 10 0 0
- Filtered5_W REAL 0 " 58.159" 1 8 1 10 0 0
- Filtered30_U REAL 0 " 57.5539" 1 8 1 10 0 0
- Filtered30_V REAL 0 " 56.8196678" 1 8 1 10 0 0
- Filtered30_W REAL 0 " 57.9493332" 1 8 1 10 0 0
- Filtered_Temp REAL 0 " 49.84861" 1 8 1 10 0 0
+ MaxValue REAL 0 " 0.0" 1 8 1 10 0 0
+ MinValue REAL 0 " 0.0" 1 8 1 10 0 0
+ AverageeValue REAL 0 " 0.0" 1 8 1 10 0 0
+ Filtered5_U REAL 0 " 0.0" 1 8 1 10 0 0
+ Filtered5_V REAL 0 " 0.0" 1 8 1 10 0 0
+ Filtered5_W REAL 0 " 0.0" 1 8 1 10 0 0
+ Filtered30_U REAL 0 " 0.0" 1 8 1 10 0 0
+ Filtered30_V REAL 0 " 0.0" 1 8 1 10 0 0
+ Filtered30_W REAL 0 " 0.0" 1 8 1 10 0 0
+ Filtered_Temp REAL 0 " 85.49195" 1 8 1 10 0 0
Filtered MTFilterMovingAverage[0..6] 0 " *" 1 24 7 0 0 0 a,1,7
Filtered[0] MTFilterMovingAverage 0 " *" 2 24 1 0 0 0
Enable BOOL 0 " *" 3 1 1 2 0 0
@@ -207,3 +207,4 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
UpdateOld BOOL 0 " *" 4 1 1 2 0 0
EnableOld BOOL 0 " *" 4 1 1 2 0 0
StatusTMP UINT 0 " *" 4 6 1 10 0 0
+ BaseValue REAL 0 " 50.0" 0 8 1 10 1 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1C.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1C.PVM.dock
index 9cd5d2e..59e484a 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1C.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Act_X1C.PVM.dock
@@ -1,3 +1,4 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=IOs
Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=0 ASCIIString=0
name type force value level type len format place expand specs
+ X1C_H2 BOOL 1 " FALSE" 0 1 1 2 1 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Main.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Main.PVM.dock
index 2bc316a..bf221c1 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Main.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/IOs.Main.PVM.dock
@@ -1,5 +1,5 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=IOs
-Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=416 ASCIIString=0
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=417 ASCIIString=0
name type force value level type len format place expand specs
IN_PhaseCut fbEJM_Phase 0 " *" 0 24 1 0 0 0
IU REAL 0 " *" 1 8 1 10 0 0
@@ -418,3 +418,8 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
Q BOOL 0 " FALSE" 1 1 1 2 0 0
M BOOL 0 " TRUE" 1 1 1 2 0 0
M_OperMode USINT 0 " 0" 0 5 1 10 0 0
+ But_Shield tShield 0 " *" 0 24 1 0 0 1
+ DataStatus1 UDINT 0 " 0" 1 7 1 10 0 0
+ DataStatus2 UDINT 0 " 0" 1 7 1 10 0 0
+ isShield1 UDINT 0 " 0" 1 7 1 10 0 0
+ isShield2 UDINT 0 " 0" 1 7 1 10 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_PageBools.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_PageBools.PVM.dock
index 106ecfa..7d14aad 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_PageBools.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_PageBools.PVM.dock
@@ -1,3 +1,20 @@
WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=PageMap
-Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=0 ASCIIString=0
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index=8 ASCIIString=0
name type force value level type len format place expand specs
+ MS_Pump stMotorStatus 0 " *" 0 24 1 0 0 1
+ Voiceing RS 0 " *" 1 24 1 0 0 1
+ Q1 BOOL 0 " FALSE" 2 1 1 2 0 0
+ PageBOOLS tsPageBOOLS 0 " *" 0 24 1 0 0 1
+ B0 UDINT 0 " 33734656" 1 7 1 10 0 0
+ B1 UDINT 0 " 0" 1 7 1 10 0 0
+ B2 UDINT 0 " 1" 1 7 1 10 0 0
+ B3 UDINT 0 " 0" 1 7 1 10 0 0
+ B4 UDINT 0 " 2#0000_0000_0000_0000_0000_0000_0000_0000" 1 7 1 2 0 0
+ B5 UDINT 0 " 0" 1 7 1 10 0 0
+ B6 UDINT 0 " 0" 1 7 1 10 0 0
+ B7 UDINT 0 " 0" 1 7 1 10 0 0
+ B8 UDINT 0 " 0" 1 7 1 10 0 0
+ B9 UDINT 0 " 0" 1 7 1 10 0 0
+ Q_OilCylindExtend EJM_OilCylind 0 " *" 0 24 1 0 0 1
+ TrackL fbSolenoidValve 0 " *" 1 24 1 0 0 1
+ InPWM USINT 0 " 0" 2 5 1 10 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_ProgressBar.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_ProgressBar.PVM.dock
index 54b1460..38f0e34 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_ProgressBar.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_ProgressBar.PVM.dock
@@ -739,10 +739,10 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
ColorIndex UINT 0 " *" 1 6 1 10 0 0
PageGroup UDINT 0 " *" 1 7 1 10 0 0
PB_Temp_Standby fbProgressBar 0 " *" 0 24 1 0 0 1
- Value REAL 0 " 50.3204422" 1 8 1 10 0 0
+ Value REAL 0 " 35.0537033" 1 8 1 10 0 0
Rated REAL 0 " 100.0" 1 8 1 10 0 0
NormalToWarning REAL 0 " 135.0" 1 8 1 10 0 0
WarningToFault REAL 0 " 145.0" 1 8 1 10 0 0
- Percentage UINT 0 " 503" 1 6 1 10 0 0
+ Percentage UINT 0 " 351" 1 6 1 10 0 0
ColorIndex UINT 0 " 1" 1 6 1 10 0 0
- PageGroup UDINT 0 " 32964609" 1 7 1 10 0 0
+ PageGroup UDINT 0 " 23003137" 1 7 1 10 0 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_Roller.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_Roller.PVM.dock
index f01785c..e914e06 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_Roller.PVM.dock
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.Act_Roller.PVM.dock
@@ -6,7 +6,7 @@ Position X=0 Y=0 Width=0 Height=0 TabWidth Name=150 Type=0 Scope=0 Force=0 Index
LengthHeight UDINT 0 " 16#0000_0000" 1 7 1 16 0 0
SideView UDINT 0 " 0" 1 7 1 10 0 0
FaceView UDINT 0 " 0" 1 7 1 10 0 0
- CenterHeight REAL 0 " 1.0" 1 8 1 10 0 0
+ CenterHeight REAL 0 " 0.0" 1 8 1 10 0 0
TransportPos UDINT 0 " 0" 1 7 1 10 0 0
ShowHaulSpeed UDINT 0 " 16#0000_0000" 1 7 1 16 0 0
Roller_SideX INT 0 " 0" 0 3 1 10 1 0
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.fbProgressBar.PB_PressurePump2.PVM.dock b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.fbProgressBar.PB_PressurePump2.PVM.dock
new file mode 100644
index 0000000..e6d2de0
--- /dev/null
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Diagnosis/JueMao/X90CP174_48_00/PageMap.fbProgressBar.PB_PressurePump2.PVM.dock
@@ -0,0 +1,3 @@
+WATCH Ver=2.00 PLCName=PLC1 CPUName=CPU TaskName=PageMap
+Position X=0 Y=0 Width=0 Height=0 TabWidth Name=200 Type=100 Scope=60 Force=60 Index=0 ASCIIString=0
+ name type force value level type len format place expand specs
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Package.vcp b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Package.vcp
index c4e5113..7c5841f 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Package.vcp
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Package.vcp
@@ -40,6 +40,7 @@
+
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Pages/P02_Remote1.page b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Pages/P02_Remote1.page
index 61d3722..cb9ef6b 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Pages/P02_Remote1.page
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Pages/P02_Remote1.page
@@ -45,43 +45,39 @@
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1132,6 +1128,15 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Textgroups/TextGroup_1.txtgrp b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Textgroups/TextGroup_1.txtgrp
new file mode 100644
index 0000000..0aab4a8
--- /dev/null
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/Textgroups/TextGroup_1.txtgrp
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/VirtualKeys.vcvk b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/VirtualKeys.vcvk
index a01837f..8d16f9b 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/VirtualKeys.vcvk
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/CurSor/VirtualKeys.vcvk
@@ -1931,8 +1931,4 @@
-
-
-
-
\ No newline at end of file
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Physical.fun b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Physical.fun
index 1e12f14..3684af1 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Physical.fun
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Physical.fun
@@ -127,6 +127,9 @@ FUNCTION_BLOCK fbAPriorityValve (* 模
TmpKey : SINT;
TmpU8Key : USINT;
END_VAR
+ VAR_OUTPUT
+ PWM_Value : SINT;
+ END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK fbDPriorityValve (* 模拟量电磁阀优先级控制器 *)
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Types.typ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Types.typ
index a6c1ef8..575e848 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Types.typ
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/Types.typ
@@ -167,6 +167,11 @@ TYPE
Flag : INT; (* 符号 *)
Offset : DINT; (* 差值 *)
END_STRUCT;
+ SSET_Info : STRUCT (* 圣斯尔电流传感器,设置信息*)
+ En : BOOL; (* 是否启用*)
+ NodeID : UDINT; (* 节点ID*)
+ Ipn : UINT; (* 模块量程*)
+ END_STRUCT;
EJM_MatrixKeyboard : STRUCT (* 矩阵键盘 *)
Number : ARRAY[0..9] OF BOOL; (* 按键值 *)
Num_1 : BOOL; (* 数字键1-状态 *)
@@ -255,6 +260,6 @@ TYPE
TrackTension : BOOL; (* 控制按钮-履带张紧 *)
TransportTension : BOOL; (* 控制按钮-运输机张紧 *)
DustFan : BOOL; (* 控制按钮-除尘风机打开 *)
-
+ HighSpeed : BOOL; (* 控制按钮-除尘风机打开 *)
END_STRUCT;
END_TYPE
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/fbAPriorityValve.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/fbAPriorityValve.st
index 3e146cf..8cd9e7f 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/fbAPriorityValve.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/Physical/fbAPriorityValve.st
@@ -22,11 +22,11 @@ FUNCTION_BLOCK fbAPriorityValve
ELSE
TmpKey := 0;
END_IF;
-
+ PWM_Value := TmpKey;
IF TmpKey < 0 THEN
TmpU8Key := 255-SINT_TO_USINT(TmpKey)+1;
PWM1 := TmpU8Key * 100 / 128;
- PWM2 := 0;
+ PWM2 := 0;
ELSIF TmpKey > 0 THEN
TmpU8Key := SINT_TO_USINT(TmpKey);
PWM1 := 0;
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/IEC.lby b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/IEC.lby
index 6290bc6..283caea 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/IEC.lby
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/IEC.lby
@@ -17,7 +17,6 @@
UINT_TO_HexStr.st
TooFreq.st
Blink.st
- UserLogin.st
ProtectGrade4.st
ProtectGrade2.st
ResizeNum_USINT.st
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/Types.typ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/Types.typ
index b31db4b..8adaeaf 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/Types.typ
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/Types.typ
@@ -12,255 +12,20 @@ TYPE
Pct_300 : INT; (* 300% *)
END_STRUCT;
ParSet : STRUCT (* 通用配置参数 *)
- isVirtualMode : BOOL; (*是否是虚拟PLC*)
- isDevelopment : BOOL; (*是否为开发者模式*)
- isDebugMode : BOOL; (*是否是调试模式*)
+ isVirtualMode : BOOL; (*是否是虚拟PLC*)
+ isDevelopment : BOOL; (*是否为开发者模式*)
+ isDebugMode : BOOL; (*是否是调试模式*)
+ Voltage : REAL := 3300.0; (* 全局变量:系统额定电压 *)
gRatedCur_Pump : REAL; (* 全局变量:额定电流 - 油泵电机 *)
gRatedCur_Cut : REAL; (* 全局变量:额定电流 - 截割电机 *)
gRatedCur_Loader : REAL; (* 全局变量:额定电流 - 加载电机 *)
gRatedCur_Transport : REAL; (* 全局变量:额定电流 - 运输电机 *)
gRatedCur_Standby : REAL; (* 全局变量:额定电流 - 备用电机 *)
Roller_Diameter_Img : UINT;(* 滚筒直径-像素大小 *)
- Roller_Diameter_MM : UINT;(* 滚筒直径-真实大小毫米 *)
- RemDecimal : BOOL; (* 遥控器屏幕显示的牵引速度可以显示小数点, 可以 = TRUE *)
- RemOperDelay : BOOL; (* 遥控器的操作指令带延时*)
- SecretKey : ARRAY[0..3]OF UINT; (* 程序加密参数, 密文 *)
- Voltage : REAL := 3300.0; (* 系统电压 *)
- VoltRange : INT; (* 系统电压上下限, 写15即为±15% *)
- EnInsul : BOOL; (* 开启漏电检测,开启 = TRUE,关闭 = FALSE *)
- MotorStartMode : INT; (*电机的启动方式, 0=常规方式,按住遥控器 2 秒后启动, 1=艾柯夫方式,按住不放才能启动, 中途松开即取消*)
- MaxSpeed_MPM : REAL; (* 煤机最大速度,单位:米/分*)
- MinSpeed_MPM : REAL; (* 煤机最小速度,单位:米/分*)
+ Roller_Diameter_MM : UINT;(* 滚筒直径-真实大小毫米 *)
+ SecretKey : ARRAY[0..3]OF UINT; (* 程序加密参数, 密文 *)
+ EnInsul : BOOL; (* 开启漏电检测,开启 = TRUE,关闭 = FALSE *)
Pssword : ARRAY[1..3]OF UDINT; (* 维修工程师、售后工程师、调试工程师的 6 位密码 *)
- CAN20_CCC : BOOL; (* 此项目集控是不是 CAN2.0 的, 是 = TRUE *)
- CAN20_Voice : BOOL; (* 此项目语音报警是不是 CAN2.0 的, 是 = TRUE *)
- Psw : ARRAY[1..3]OF UDINT; (* 维修工程师、售后工程师、调试工程师的 6 位密码 *)
- END_STRUCT;
- ConnStatus : STRUCT (*遥控器连接状态*)
- PreConn : BOOL; (*预连接*)
- OnLine : BOOL; (* 已连接 *)
- OffLine : BOOL; (* 未连接 *)
- Error : BOOL; (* 故障 *)
- END_STRUCT;
- RemAction : STRUCT (* 遥控器的各种动作 *)
- L_SafeKey : BOOL; (*左行走安全按键*)
- R_SafeKey : BOOL; (*右行走安全按键*)
- TrackFwd_L : BOOL; (*左履带前进*)
- TrackBack_L : BOOL; (*左履带后退*)
- TrackFwd_R : BOOL; (*右履带前进*)
- TrackBack_R : BOOL; (*右履带后退*)
- TrackFwd_Both : BOOL; (*双履带同时前进*)
- TrackBack_Both : BOOL; (*双履带同时后退*)
- TurnRound_Pos : BOOL; (*调头 - 顺时针*)
- TurnRound_Neg : BOOL; (*调头 - 逆时针*)
- SpeedSet_Mid : BOOL; (*速度选择中速*)
- SpeedSet_High : BOOL; (*速度选择高速*)
- Func_2nd : BOOL; (*第二功能*)
- Func_3nd : BOOL; (*第三功能*)
- Spray : BOOL; (*喷淋*)
- Light : BOOL; (*照明灯*)
- Start : BOOL; (*开机按键*)
- Reset : BOOL; (*复位按键*)
- Stop : BOOL; (*急停按键*)
- Off : BOOL; (*关机按键*)
- StableBoot_Rise : BOOL; (*稳定靴抬离地面*)
- StableBoot_Fall : BOOL; (*稳定靴伸向地面*)
- CutArm_Rise : BOOL; (*截割臂上升*)
- CutArm_Fall : BOOL; (*截割臂下降*)
- CollectPlate_Rise : BOOL; (*铲板上升*)
- CollectPlate_Fall : BOOL; (*铲板下降*)
- Conveyor_Rise : BOOL; (*运输机上升*)
- Conveyor_Fall : BOOL; (*运输机下降*)
- Conveyor_SwingL : BOOL; (*运输机下降*)
- Conveyor_SwingR : BOOL; (*运输机下降*)
- Crush_Off : BOOL; (*破碎关*)
- Duster_Off : BOOL; (*除尘风机电机关*)
- Shl_Off : BOOL; (*铲板电机关*)
- Pump_Off : BOOL; (*油泵电机关*)
- Cut_Off : BOOL; (*截割电机关*)
- Conveyor_Off : BOOL; (*运输机电机关*)
- Shl_N : BOOL; (*铲板反转, 单键无功能,仅单独按下此键显示使用*)
- Conv_N : BOOL; (*运输机反转,单键无功能,仅单独按下此键显示使用*)
- Conv_Left : BOOL; (*运输机向左,单键无功能,仅单独按下此键显示使用*)
- Conv_Right : BOOL; (*运输机向右,单键无功能,仅单独按下此键显示使用*)
- C_StartCrush : BOOL; (*破碎启动 START+破碎*)
- C_StartDuster : BOOL; (*除尘风机启动 START+风机*)
- C_Shl_P : BOOL; (*铲板正转 START+铲板*)
- C_StartPump : BOOL; (*油泵电机启动 START+油泵*)
- C_StartCut : BOOL; (*截割电机启动 START+截割*)
- C_Conv_P : BOOL; (*运输机正转 START+运输机*)
- C_Shl_N : BOOL; (*铲板电机反转 START+铲板反转*)
- C_Conv_N : BOOL; (*运输电机反转 START+运输机反转*)
- C_CollectPlateExtend : BOOL; (*铲板扩展 2ND+*)
- C_CollectPlateShrink : BOOL; (*铲板收缩 2ND+*)
- C_ShieldStretch_L_X : BOOL; (*左护盾伸X轴 2ND+F1*)
- C_ShieldShrink_L_X : BOOL; (*左护盾缩X轴 2ND+F2*)
- C_ShieldExtend_L_Y : BOOL; (*左护盾扩展Y轴 2ND+F5*)
- C_ShieldShrink_L_Y : BOOL; (*左护盾收缩Y轴 2ND+F7*)
- C_ShieldStretch_R_X : BOOL; (*右护盾伸X轴 3ND+F1*)
- C_ShieldShrink_R_X : BOOL; (*右护盾收缩X轴 3ND+F2*)
- C_ShieldExtend_R_Y : BOOL; (*右护盾扩展Y轴 3ND+F5*)
- C_ShieldShrink_R_Y : BOOL; (*右护盾收缩Y轴 3ND+F7*)
- C_DeduSolen : BOOL; (*除尘电磁阀3ND+灯*)
- C_Cursor_U : BOOL; (*画面光标上移 3ND+上*)
- C_Cursor_D : {REDUND_UNREPLICABLE} BOOL; (*画面光标下移 3ND+下*)
- C_Cursor_L : BOOL; (*画面光标左移 3ND+左*)
- C_Cursor_R : BOOL; (*画面光标右移 3ND+右*)
- C_Cursor_Afirm : BOOL; (*画面确认 3ND+EN*)
- C_Cursor_Return : BOOL; (*画面返回 3ND+BK*)
- C_CorEncoder : BOOL; (* 校准编码器值(Stop + Reset) *)
- C_Ladder_Up : BOOL; (*梯子上升 2ND+上*)
- C_Ladder_Down : BOOL; (*梯子下降 2ND+下*)
- C_ValueAdd : BOOL; (*数字增加 2ND+铲板上升*)
- C_ValueDec : BOOL; (*数字减少 2ND+铲板下降*)
- END_STRUCT;
- Remote : STRUCT (* 接收器 *)
- ModuleOK : BOOL; (* 连接状态 *)
- NodeStatus : UINT; (* 状态 *)
- Remote_Key : ARRAY[0..4]OF USINT; (* 无线遥控器键值 *)
- RemoteID : ARRAY[0..3]OF USINT; (* 遥控器ID *)
- EM_RemoteID : ARRAY[0..3]OF USINT; (* 授权遥控器ID *)
- ErrCode : ARRAY[0..2]OF USINT; (* 故障代码 *)
- RemoteID_UDINT : UDINT; (* 读取的遥控器ID UDINT型 *)
- EM_RemoteID_UDINT : UDINT; (* 授权的遥控器ID UDINT型 *)
- SpeedSet_MPM : JOINT; (* 手动给定速度 *)
- CablePres : JOINT; (* 卷揽压力 *)
- HaulCur_L : JOINT; (* 牵引电流 左 *)
- HaulCur_R : JOINT; (* 牵引电流 右 *)
- CollectCur_L : JOINT; (* 收集头电流 左 *)
- CollectCur_R : JOINT; (* 收集头电流 右 *)
- PumpCur : JOINT; (* 油泵电流 *)
- FanCur : JOINT; (* 风扇电流 *)
- ConveryorCur_L : JOINT; (* 运输机电流 左 *)
- ConveryorCur_R : JOINT; (* 运输机电流 右 *)
- CutCur_L : JOINT; (* 截割电流 左 *)
- CutCur_R : JOINT; (* 截割电流 右 *)
- EM_Status : USINT; (* 授权状态 *)
- Speed_Level : USINT; (* 速度选择 *)
- WorkHight : USINT; (* 截割高度 *)
- END_STRUCT;
- JOINT : STRUCT (* *)
- H : USINT;
- L : USINT;
END_STRUCT;
- OneKeyAct : STRUCT (* 一键启动 *)
- DusterStart : BOOL; (* 启动风机命令 *)
- PumpStart : BOOL; (* 启动油泵命令 *)
- CutStart : BOOL; (* 启动截割命令 *)
- Shl_P_Start : BOOL; (* 启动铲板正转命令 *)
- Shl_N_Start : BOOL; (* 启动铲板反转命令 *)
- Conv_P_Start : BOOL; (* 启动运输机正转命令 *)
- Conv_N_Start : BOOL; (* 启动运输机反转命令 *)
- Duster_N_Start : BOOL; (* 启动除尘风机命令 *)
- END_STRUCT;
- Args : STRUCT (* 可调参数阈值列表 *)
- Temp_Cut : ValueSet; (* 截割电机温度 *)
- Temp_Shl : ValueSet; (* 铲板电机温度 *)
- Temp_Conv : ValueSet; (* 运输机电机温度 *)
- Temp_Pump : ValueSet; (* 油泵电机电流 *)
- Temp_Duster : ValueSet; (* 除尘电机温度 *)
- Temp_Haul : ValueSet; (* 牵引电机温度 *)
- Temp_Case : ValueSet; (* 电控箱温度 *)
- Temp_Trans : ValueSet; (* 牵引变压器温度 *)
- Temp_GearBox_Cut : ValueSet; (* 截割减速箱温度 *)
- Temp_GearBox_Srp : ValueSet; (* 刮板减速箱温度 *)
- Temp_GearBox_Walk : ValueSet; (* 行走减速箱温度 *)
- Cur_Cut : PercentSet; (* 截割电机电流 *)
- Cur_Shl : PercentSet; (* 铲板电机电流 *)
- Cur_Conv : PercentSet; (* 运输机电机电流*)
- Cur_Pump : PercentSet; (* 油泵电机电流 *)
- Cur_Trans : PercentSet; (* 牵引变压器电流*)
- Cur_Duster : PercentSet; (* 除尘电机电流 *)
- Cur_Heater : PercentSet; (* 加热器电流 *)
- Cur_Haul : PercentSet; (* 牵引电机电流 *)
- END_STRUCT;
- ArgsFixed : STRUCT (* 不可调参数阈值列表 *)
- Temp_OilBox : ValueSet; (* 油箱温度 *)
- Temp_GearBox_Shl_High : ValueSet; (* 铲板减速箱高速区温度 *)
- Temp_GearBox_Shl_Low : ValueSet; (* 铲板减速箱低速区温度 *)
- Temp_Rectif : ValueSet; (* 整流温度 *)
- Temp_IGBT : ValueSet; (* IGBT 温度 *)
- Temp_LBDY : ValueSet; (* LBDY 温度 *)
- END_STRUCT;
- InsulAct : STRUCT (* 绝缘检测的动作和结果 *)
- Check : BOOL; (* 检测 *)
- Result : BOOL := TRUE; (* 结果,正常=TRUE,异常=FALSE *)
- END_STRUCT;
-
- CCC_Ctrl : STRUCT (* 集控控制 *)
- TrackFwd_L : BOOL; (* 履带控制-左履带前进 *)
- TrackBack_L : BOOL; (* 履带控制-左履带后退 *)
- TrackFwd_R : BOOL; (* 履带控制-右履带前进 *)
- TrackBack_R : BOOL; (* 履带控制-右履带后退 *)
- TrackFwd_Both : BOOL; (* 履带控制-双履带同时前进 *)
- TrackBack_Both : BOOL; (* 履带控制-双履带同时后退 *)
- TurnRound_Pos : BOOL; (* 掉头控制-掉头-顺时针 *)
- TurnRound_Neg : BOOL; (* 掉头控制-掉头-逆时针 *)
- speed_low : BOOL; (* 速度选择-低速 *)
- speed_medium : BOOL; (* 速度选择-中速 *)
- speed_high : BOOL; (* 速度选择-高速 *)
- traction_reserved : ARRAY[0..4]OF BOOL; (* 牵引备用 *)
- stabilizer_lift : BOOL; (* 稳定靴控制-抬离地面 *)
- stabilizer_extend : BOOL; (* 稳定靴控制-伸向地面 *)
- arm_lift : BOOL; (* 截割臂控制-上升 *)
- arm_lower : BOOL; (* 截割臂控制-下降 *)
- blade_lift : BOOL; (* 铲板控制-上升 *)
- blade_lower : BOOL; (* 铲板控制-下降 *)
- blade_extend : BOOL; (* 铲板控制-扩展 *)
- blade_retract : BOOL; (* 铲板控制-收缩 *)
- conveyor_up : BOOL; (* 运输机控制-上升 *)
- conveyor_down : BOOL; (* 运输机控制-下降 *)
- conveyor_left : BOOL; (* 运输机控制-左摆 *)
- conveyor_right : BOOL; (* 运输机控制-右摆 *)
- support_up : BOOL; (* 支撑控制-上升 *)
- support_down : BOOL; (* 支撑控制-下降 *)
- ladder_up : BOOL; (* 梯子控制-上升 *)
- ladder_down : BOOL; (* 梯子控制-下降 *)
- left_shield_extend : BOOL; (* 左护盾-伸 *)
- left_shield_retract : BOOL; (* 左护盾-缩 *)
- left_shield_expand : BOOL; (* 左护盾-扩展 *)
- left_shield_collapse : BOOL; (* 左护盾-收缩 *)
- right_shield_extend : BOOL; (* 右护盾-伸 *)
- right_shield_retract : BOOL; (* 右护盾-缩 *)
- right_shield_expand : BOOL; (* 右护盾-扩展 *)
- right_shield_collapse : BOOL; (* 右护盾-收缩 *)
- solenoid_valve_reserved : ARRAY[0..7]OF BOOL; (* 电磁阀备用 *)
- crusher_start : BOOL; (* 破碎机控制-启动 *)
- crusher_stop : BOOL; (* 破碎机控制-停止 *)
- fan_start : BOOL; (* 风机控制-启动 *)
- fan_stop : BOOL; (* 风机控制-停止 *)
- header_forward : BOOL; (* 收集头控制-正转 *)
- header_reverse : BOOL; (* 收集头控制-反转 *)
- header_stop : BOOL; (* 收集头控制-停止 *)
- pump_start : BOOL; (* 油泵控制-启动 *)
- pump_stop : BOOL; (* 油泵控制-停止 *)
- cutting_start : BOOL; (* 截割控制-启动 *)
- cutting_stop : BOOL; (* 截割控制-停止 *)
- conveyor_start : BOOL; (* 运输机控制-启动 *)
- conveyor_stop : BOOL; (* 运输机控制-停止 *)
- Estop : BOOL; (*急停*)
- motor_start_reserved : ARRAY[0..2]OF BOOL; (* 电机启动备用 *)
- reserved : ARRAY[0..79]OF BOOL; (* 备用 *)
- screen_cursor_up : BOOL; (* 画面光标控制-上移 *)
- screen_cursor_down : BOOL; (* 画面光标控制-下移 *)
- screen_cursor_left : BOOL; (* 画面光标控制-左移 *)
- screen_cursor_right : BOOL; (* 画面光标控制-右移 *)
- screen_back : BOOL; (* 画面光标控制-返回 *)
- screen_confirm : BOOL; (* 画面光标控制-确定 *)
- Var_Add : BOOL; (* 画面光标控制-返回 *)
- Var_Rec : BOOL; (* 画面光标控制-返回 *)
- screen_control_reserved : ARRAY[0..7]OF BOOL; (* 画面控制备用 *)
- heartbeat_signal : UINT; (* 心跳信号 *)
- END_STRUCT;
- tsAlarmList : STRUCT (*报警列表的光标*)
- isPithcOn : BOOL; (*当前是否被选中*)
- Time : DATE_AND_TIME; (*报警产生的时间*)
- AlarmCode : UINT; (*报警代码*)
- END_STRUCT;
- SSET_Info : STRUCT (* 圣斯尔电流传感器,设置信息*)
- En : BOOL; (* 是否启用*)
- NodeID : UDINT; (* 节点ID*)
- Ipn : UINT; (* 模块量程*)
- END_STRUCT;
END_TYPE
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/UserLogin.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/UserLogin.st
deleted file mode 100644
index 9a3e26e..0000000
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/UserLogin.st
+++ /dev/null
@@ -1,54 +0,0 @@
-(* author : 孙鹏飞 date : 20220422 *)
-(* modification : Amon date : 20230714 *)
-(* 用户登录,2 个数字组成 6 位数,有 2^6=64 种组合 *)
-FUNCTION_BLOCK UserLogin
-
- (* 判断按下了 2ND、3ND 以外的按钮 *)
- (* 遥控器一共38个按键,剩余6*6=36个 *)
-// M_Other := RemAct.L_SafeKey OR RemAct.R_SafeKey OR RemAct.TrackFwd_L OR RemAct.TrackBack_L OR RemAct.TrackFwd_R OR RemAct.TrackBack_R OR
-// RemAct.TrackFwd_Both OR RemAct.TrackBack_Both OR RemAct.TurnRound_Pos OR RemAct.TurnRound_Neg OR RemAct.SpeedSet_Mid OR RemAct.SpeedSet_High OR
-// RemAct.Spray OR RemAct.Light OR RemAct.Start OR RemAct.Reset OR RemAct.Stop OR RemAct.Off OR
-// RemAct.StableBoot_Rise OR RemAct.StableBoot_Fall OR RemAct.CutArm_Rise OR RemAct.CutArm_Fall OR RemAct.CollectPlate_Rise OR RemAct.CollectPlate_Fall OR
-// RemAct.Conveyor_Rise OR RemAct.Conveyor_Fall OR RemAct.Crush_Off OR RemAct.Duster_Off OR RemAct.Shl_Off OR RemAct.Pump_Off OR
-// RemAct.Cut_Off OR RemAct.Conveyor_Off OR RemAct.Shl_N OR RemAct.Conv_N OR RemAct.Conv_Left OR RemAct.Conv_Right;
- M_Other := RemAct.Reset OR RemAct.Stop OR RemAct.Off;
-
- (* 按下了 2ND、3ND 以外的按钮,则清空收到的密码 *)
- IF M_Other THEN M_RcvPsw := 0; END_IF;
-
- Login_TON(IN := Login, PT := T#5M);(* 生效5分钟 *)
- IF Login_TON.Q OR Logout THEN Login := FALSE; M_RcvPsw := 0;HMI_Accept_User_Password:=0; END_IF;
-
- IF HMI_Accept =1THEN
- Login2 := HMI_Accept_User_Password = Psw;(* 输入完毕后,比对预置密码 *)
- END_IF;
- Login := Login1 OR Login2;
-
-
- (* 每个按键只取一个变化沿操作 *)
- ExeOnce_RTRIG(CLK := RemAct.Func_2nd OR RemAct.Func_3nd );
- IF NOT ExeOnce_RTRIG.Q THEN RETURN; END_IF;
-
- (* 取十万位,即取第 1 个按下的按键 *)
- IF M_RcvPsw / 1 = 0 THEN
- IF RemAct.Func_2nd THEN M_RcvPsw := M_RcvPsw + 2;
- ELSIF RemAct.Func_3nd THEN M_RcvPsw := M_RcvPsw + 3; END_IF;
- ELSIF M_RcvPsw / 10 = 0 THEN
- IF RemAct.Func_2nd THEN M_RcvPsw := M_RcvPsw + 20;
- ELSIF RemAct.Func_3nd THEN M_RcvPsw := M_RcvPsw + 30; END_IF;
- ELSIF M_RcvPsw / 100 = 0 THEN
- IF RemAct.Func_2nd THEN M_RcvPsw := M_RcvPsw + 200;
- ELSIF RemAct.Func_3nd THEN M_RcvPsw := M_RcvPsw + 300; END_IF;
- ELSIF M_RcvPsw / 1000 = 0 THEN
- IF RemAct.Func_2nd THEN M_RcvPsw := M_RcvPsw + 2000;
- ELSIF RemAct.Func_3nd THEN M_RcvPsw := M_RcvPsw + 3000; END_IF;
- ELSIF M_RcvPsw / 10000 = 0 THEN
- IF RemAct.Func_2nd THEN M_RcvPsw := M_RcvPsw + 20000;
- ELSIF RemAct.Func_3nd THEN M_RcvPsw := M_RcvPsw + 30000; END_IF;
- ELSIF M_RcvPsw / 100000 = 0 THEN
- IF RemAct.Func_2nd THEN M_RcvPsw := M_RcvPsw + 200000;
- ELSIF RemAct.Func_3nd THEN M_RcvPsw := M_RcvPsw + 300000; END_IF;
- Login1 := M_RcvPsw = Psw;(* 输入完毕后,比对预置密码 *)
- END_IF;
-
-END_FUNCTION_BLOCK
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/ZMJ_Lib.fun b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/ZMJ_Lib.fun
index 77b0ec3..b8c713b 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/ZMJ_Lib.fun
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Libraries/ZMJ_Lib/ZMJ_Lib.fun
@@ -196,26 +196,7 @@ FUNCTION_BLOCK Blink (*
END_VAR
END_FUNCTION_BLOCK
-FUNCTION_BLOCK UserLogin (* 用户登录 *)
- VAR_INPUT
- RemAct : RemAction; (* 遥控动作 *)
- Psw : UDINT;
- Logout : BOOL; (* 退出登录 *)
- HMI_Accept_User_Password : UDINT;
- HMI_Accept : INT;
- END_VAR
- VAR_OUTPUT
- Login : BOOL; (* 输出值 *)
- END_VAR
- VAR
- M_Other : BOOL; (* 按了其他键 *)
- M_RcvPsw : UDINT; (* 收到的密码 *)
- Login_TON : TON;
- ExeOnce_RTRIG : R_TRIG;
- Login1 : BOOL; (* 输出值 *)
- Login2 : BOOL; (* 输出值 *)
- END_VAR
-END_FUNCTION_BLOCK
+
FUNCTION_BLOCK ProtectGrade1 (* 1档保护,用于压力\流量 *)
VAR_INPUT
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Cut.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Cut.st
index 87d3333..87152ac 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Cut.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Cut.st
@@ -18,10 +18,10 @@ ACTION Dev_Cut:
OR PanelKey.CutStart);
MS_Cut.Starting(SET:= MS_Cut.StartCMD,RESET1 := MS_Cut.Running OR MS_Cut.StopCMD);
- MS_Cut.Voiceing(SET:= MS_Cut.StartCMD,RESET1 := Voice_Over);
+ MS_Cut.Voiceing(SET:= MS_Cut.StartCMD,RESET1 := Voice_Over OR MS_Cut.Running OR MS_Cut.StopCMD);
MS_Cut.VoiceTON(IN:= MS_Cut.Starting.Q1,PT := T#14S);
- IF (NOT MS_Cut.Voiceing.Q1) OR MS_Cut.VoiceTON.Q THEN
+ IF MS_Cut.Starting.Q1 AND ((NOT MS_Cut.Voiceing.Q1) OR MS_Cut.VoiceTON.Q) THEN
Q_MotorKM.Cut := TRUE;
END_IF;
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Loader.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Loader.st
index 30c2688..f19030a 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Loader.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Loader.st
@@ -18,10 +18,10 @@ ACTION Dev_Loader:
OR PanelKey.LoaderStart);
MS_Loader.Starting(SET:= MS_Loader.StartCMD,RESET1 := MS_Loader.Running OR MS_Loader.StopCMD);
- MS_Loader.Voiceing(SET:= MS_Loader.StartCMD,RESET1 := Voice_Over);
+ MS_Loader.Voiceing(SET:= MS_Loader.StartCMD,RESET1 := Voice_Over OR MS_Loader.Running OR MS_Loader.StopCMD);
MS_Loader.VoiceTON(IN:= MS_Loader.Starting.Q1,PT := T#14S);
- IF (NOT MS_Loader.Voiceing.Q1) OR MS_Loader.VoiceTON.Q THEN
+ IF MS_Loader.Starting.Q1 AND ((NOT MS_Loader.Voiceing.Q1) OR MS_Loader.VoiceTON.Q) THEN
Q_MotorKM.Loader := TRUE;
END_IF;
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Pump.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Pump.st
index ec3f5f1..9b7df68 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Pump.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Pump.st
@@ -16,10 +16,10 @@ ACTION Dev_Pump:
OR PanelKey.PumpStart);
MS_Pump.Starting(SET:= MS_Pump.StartCMD,RESET1 := MS_Pump.Running OR MS_Pump.StopCMD);
- MS_Pump.Voiceing(SET:= MS_Pump.StartCMD,RESET1 := Voice_Over);
+ MS_Pump.Voiceing(SET:= MS_Pump.StartCMD,RESET1 := Voice_Over OR MS_Pump.Running OR MS_Pump.StopCMD);
MS_Pump.VoiceTON(IN:= MS_Pump.Starting.Q1,PT := T#14S);
- IF (NOT MS_Pump.Voiceing.Q1) OR MS_Pump.VoiceTON.Q THEN
+ IF MS_Pump.Starting.Q1 AND ((NOT MS_Pump.Voiceing.Q1) OR MS_Pump.VoiceTON.Q) THEN
Q_MotorKM.Pump := TRUE;
END_IF;
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Standby.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Standby.st
index e179941..b83b54b 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Standby.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Standby.st
@@ -17,10 +17,10 @@ ACTION Dev_Standby:
OR PanelKey.StandbyStart);
MS_Standby.Starting(SET:= MS_Standby.StartCMD,RESET1 := MS_Standby.Running OR MS_Standby.StopCMD);
- MS_Standby.Voiceing(SET:= MS_Standby.StartCMD,RESET1 := Voice_Over);
+ MS_Standby.Voiceing(SET:= MS_Standby.StartCMD,RESET1 := Voice_Over OR MS_Standby.Running OR MS_Standby.StopCMD);
MS_Standby.VoiceTON(IN:= MS_Standby.Starting.Q1,PT := T#14S);
- IF (NOT MS_Standby.Voiceing.Q1) OR MS_Standby.VoiceTON.Q THEN
+ IF MS_Standby.Starting.Q1 AND (NOT MS_Standby.Voiceing.Q1) OR MS_Standby.VoiceTON.Q THEN
Q_MotorKM.Standby := TRUE;
END_IF;
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Transport.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Transport.st
index 19b593a..5348907 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Transport.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Dev_Transport.st
@@ -38,16 +38,16 @@ ACTION Dev_Transport:
MS_Transport.StartingCor(SET:= MS_Transport.StartCorCMD,RESET1 := MS_Transport.RunningCor OR MS_Transport.StopCMD);
MS_Transport.StartingRev(SET:= MS_Transport.StartRevCMD,RESET1 := MS_Transport.RunningRev OR MS_Transport.StopCMD);
- MS_Transport.VoiceingCor(SET:= MS_Transport.StartingCor.Q1,RESET1 := Voice_Over);
+ MS_Transport.VoiceingCor(SET:= MS_Transport.StartingCor.Q1,RESET1 := Voice_Over OR MS_Transport.RunningCor OR MS_Transport.StopCMD);
MS_Transport.VoiceTONCor(IN:= MS_Transport.StartingCor.Q1,PT := T#14S);
- MS_Transport.VoiceingRev(SET:= MS_Transport.StartingRev.Q1,RESET1 := Voice_Over);
+ MS_Transport.VoiceingRev(SET:= MS_Transport.StartingRev.Q1,RESET1 := Voice_Over OR MS_Transport.RunningRev OR MS_Transport.StopCMD);
MS_Transport.VoiceTONRev(IN:= MS_Transport.StartingRev.Q1,PT := T#14S);
- IF ((NOT MS_Transport.VoiceingCor.Q1) OR MS_Transport.VoiceTONCor.Q) THEN
+ IF MS_Transport.StartingCor.Q1 AND ((NOT MS_Transport.VoiceingCor.Q1) OR MS_Transport.VoiceTONCor.Q) THEN
Q_MotorKM.TransportCorotation := NOT MS_Transport.Running;
END_IF;
- IF ((NOT MS_Transport.VoiceingRev.Q1) OR MS_Transport.VoiceTONRev.Q) THEN
+ IF MS_Transport.StartingRev.Q1 AND ((NOT MS_Transport.VoiceingRev.Q1) OR MS_Transport.VoiceTONRev.Q) THEN
Q_MotorKM.TransportReversal := NOT MS_Transport.Running;
END_IF;
IF MS_Transport.StopCMD THEN
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Main.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Main.st
index 9099f23..342bab9 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Main.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/General/Main.st
@@ -8,7 +8,7 @@ PROGRAM _CYCLIC
FirstOn_TP(IN := TRUE , PT := T#5S);
(* 开机播放语音,采煤机送电 *)
EnTurnOn_TP(IN := TRUE , PT := T#10S);
- TurnOn_RTRIG(CLK := EnTurnOn_TP.Q AND PS.CAN20_Voice AND DC.Audible); (* 语音播放时间 *)
+ TurnOn_RTRIG(CLK := EnTurnOn_TP.Q AND DC.Audible); (* 语音播放时间 *)
// IF TurnOn_RTRIG.Q THEN VoiceCmd := 0; END_IF; (* 语音报警器指令, 沈阳广角 KXB12 矿用本安型声光报警器, 0=停止放音, 8=连采机启动,工作人员注意 取消(*原因:第8条指令错误*)
ErrReset := (RemoteKey.Reset OR PanelKey.Reset OR CentralizedKey.Reset);
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/Hydraulic/Main.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/Hydraulic/Main.st
index e44e0a2..5e3a09e 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/Hydraulic/Main.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/Hydraulic/Main.st
@@ -27,14 +27,22 @@ PROGRAM _CYCLIC
//则可以通过如下方式进行转换
Test_US8 := USINT_TO_SINT(Test_Key-127); //遥控器键值,需要在初始时,直接减去127;
-
+ IF PanelKey.Track <> 0 AND PanelKey.TrackL = 0 AND PanelKey.TrackR = 0 THEN
+ PanelKey.TrackL := PanelKey.Track;
+ PanelKey.TrackR := PanelKey.Track;
+ END_IF;
+ IF CentralizedKey.Track <> 0 AND CentralizedKey.TrackL = 0 AND CentralizedKey.TrackR = 0 THEN
+ CentralizedKey.TrackL := CentralizedKey.Track;
+ CentralizedKey.TrackR := CentralizedKey.Track;
+ END_IF;
APriorityValve_TrackL (KeyValue1 := RemoteKey.TrackL, KeyValue2 := PanelKey.TrackL, KeyValue3 := CentralizedKey.TrackL, PWM1 := Q_OilCylindShorten.TrackL.InPWM, PWM2 := Q_OilCylindExtend.TrackL.InPWM ); (* 控制按钮-左履带前后 *)
APriorityValve_TrackR (KeyValue1 := RemoteKey.TrackR, KeyValue2 := PanelKey.TrackR, KeyValue3 := CentralizedKey.TrackR, PWM1 := Q_OilCylindShorten.TrackR.InPWM, PWM2 := Q_OilCylindExtend.TrackR.InPWM ); (* 控制按钮-右履带前后 *)
APriorityValve_CutL (KeyValue1 := RemoteKey.Cut, KeyValue2 := PanelKey.Cut, KeyValue3 := CentralizedKey.Cut, PWM1 := Q_OilCylindShorten.CutL.InPWM, PWM2 := Q_OilCylindExtend.CutL.InPWM ); (* 控制按钮-左截割伸缩 *)
APriorityValve_CutR (KeyValue1 := RemoteKey.Cut, KeyValue2 := PanelKey.Cut, KeyValue3 := CentralizedKey.Cut, PWM1 := Q_OilCylindShorten.CutR.InPWM, PWM2 := Q_OilCylindExtend.CutR.InPWM ); (* 控制按钮-右截割伸缩 *)
APriorityValve_Cutt (KeyValue1 := RemoteKey.Cutt, KeyValue2 := PanelKey.Cutt, KeyValue3 := CentralizedKey.Cutt, PWM1 := Q_OilCylindShorten.Cutt.InPWM, PWM2 := Q_OilCylindExtend.Cutt.InPWM ); (* 控制按钮-掏槽伸缩 *)
-
+ PWM_StatusTrackL := APriorityValve_TrackL.PWM_Value;
+ PWM_StatusTrackR := APriorityValve_TrackR.PWM_Value;
DPV[1]((* 油缸伸缩-滚筒 *)
KStr1:= RemoteKey.RollerStr, KStr2:= PanelKey.RollerStr, KStr3:= CentralizedKey.RollerStr, Q_Str:= Q_OilCylindExtend.Roller.InSwitch,
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/MachineBase.var b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/MachineBase.var
index 7e798eb..54ec30f 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/MachineBase.var
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_MachineBase/MachineBase.var
@@ -18,7 +18,8 @@ VAR
MS_Transport : stMotorStatus_CorRev;(* 电机状态及指令-运输机接触器 *)
MS_Loader : stMotorStatus;(* 电机状态及指令-装载接触器 *)
MS_Standby : stMotorStatus;(* 电机状态及指令-备用接触器 *)
-
+ PWM_StatusTrackL : SINT;
+ PWM_StatusTrackR : SINT;
END_VAR
VAR CONSTANT
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Main.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Main.st
index e42b370..13f79f1 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Main.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Main.st
@@ -24,6 +24,13 @@ PROGRAM _CYCLIC
PageContol.CursorControl.15 := I_CursorControl.Right;
+ //HMI_Speed_L := 0;HMI_Speed_R := 0;
+ //HMI_AK[1] := 0;HMI_AK[2] := 0;HMI_AK[3] := 0;HMI_AK[4] := 0;
+
+ memcpy(ADR(HMI_DK),ADR(DK),SIZEOF(DK));
+
+
+
PageContol.RemoteAKey1 := INT_TO_UDINT((I_RemoteIO.Speed_R) * 256 * 256) + INT_TO_UDINT(I_RemoteIO.Speed_L);
PageContol.RemoteAKey2 := INT_TO_UDINT((I_RemoteIO.AK[2]) * 256 * 256) + INT_TO_UDINT(I_RemoteIO.AK[1]);
PageContol.RemoteDKey1.0 := DK[1,0];
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Variables.var b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Variables.var
index df997a6..b5f205f 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Variables.var
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageControl/Variables.var
@@ -3,5 +3,5 @@ VAR
Speed_R : SINT;
AK : ARRAY[1..4] OF SINT;
DK : ARRAY[1..2,0..31] OF BOOL;
-
+ Mode : USINT;
END_VAR
\ No newline at end of file
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageMap/Act_PageBools.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageMap/Act_PageBools.st
index 4c8c5e6..41d639b 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageMap/Act_PageBools.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Pages/PageMap/Act_PageBools.st
@@ -145,5 +145,39 @@ ACTION Act_PageBools:
PageBOOLS.B3.30 := FALSE;
PageBOOLS.B3.31 := FALSE;
-
+ PageBOOLS.B4.0 := MS_Pump.Voiceing.Q1;
+ PageBOOLS.B4.1 := MS_Cut.Voiceing.Q1;
+ PageBOOLS.B4.2 := MS_Loader.Voiceing.Q1;
+ PageBOOLS.B4.3 := MS_Transport.VoiceingCor.Q1;
+ PageBOOLS.B4.4 := MS_Transport.VoiceingRev.Q1;
+ PageBOOLS.B4.5 := MS_Standby.Voiceing.Q1;
+ PageBOOLS.B4.6 := PWM_StatusTrackL > 0 AND PWM_StatusTrackR = 0;(* 左进---左前进,右停止 *)
+ PageBOOLS.B4.7 := PWM_StatusTrackL < 0 AND PWM_StatusTrackR = 0;(* 左退---左后退,右停止 *)
+
+ PageBOOLS.B4.8 := PWM_StatusTrackL = 0 AND PWM_StatusTrackR > 0;(* 右进---右前进,左停止 *)
+ PageBOOLS.B4.9 := PWM_StatusTrackL = 0 AND PWM_StatusTrackR < 0;(* 右退---右后退,左停止 *)
+ PageBOOLS.B4.10 := PWM_StatusTrackL > 0 AND PWM_StatusTrackR > 0;(* 双进---左前进,右前进 *)
+ PageBOOLS.B4.11 := PWM_StatusTrackL < 0 AND PWM_StatusTrackR < 0;(* 双退---左后退,右后退 *)
+ PageBOOLS.B4.12 := PWM_StatusTrackL > 0 AND PWM_StatusTrackR < 0;(* 顺时转---左前进,右后退 *)
+ PageBOOLS.B4.13 := PWM_StatusTrackL < 0 AND PWM_StatusTrackR > 0;(* 逆时转---右前进,左后退 *)
+ PageBOOLS.B4.14 := Q_OilCylindExtend.CutL.InPWM > 0 AND Q_OilCylindExtend.CutR.InPWM > 0;(* 摇臂升---左升,右升 *)
+ PageBOOLS.B4.15 := Q_OilCylindShorten.CutL.InPWM > 0 AND Q_OilCylindShorten.CutR.InPWM > 0;(* 摇臂降---左降,右降 *)
+
+ PageBOOLS.B4.16 := Q_OilCylindExtend.Cutt.InPWM > 0;(* 掏槽伸出 *)
+ PageBOOLS.B4.17 := Q_OilCylindShorten.Cutt.InPWM > 0;(* 掏槽缩回 *)
+ PageBOOLS.B4.18 :=
+ PageBOOLS.B4.19 :=
+ PageBOOLS.B4.20 := FALSE;
+ PageBOOLS.B4.21 := FALSE;
+ PageBOOLS.B4.22 := FALSE;
+ PageBOOLS.B4.23 := FALSE;
+
+ PageBOOLS.B4.24 := FALSE;
+ PageBOOLS.B4.25 := FALSE;
+ PageBOOLS.B4.26 := FALSE;
+ PageBOOLS.B4.27 := FALSE;
+ PageBOOLS.B4.28 := FALSE;
+ PageBOOLS.B4.29 := FALSE;
+ PageBOOLS.B4.30 := FALSE;
+ PageBOOLS.B4.31 := FALSE;
END_ACTION
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_CAN/SSET/Main.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_CAN/SSET/Main.st
index d9a5633..b7ded54 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_CAN/SSET/Main.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_CAN/SSET/Main.st
@@ -21,23 +21,70 @@ PROGRAM _CYCLIC
DC.SSET_AT[6] := SSET_LoaderR.Online;
DC.SSET_AT[7] := SSET_Standby.Online;
- IF PS.isDevelopment THEN
- IN_PhaseCut (IU := BaseValue + RandRangeReal(5,10), IV := BaseValue + RandRangeReal(4,10), IW := BaseValue + RandRangeReal(6,10) ); (* 三相电流信息-截割电机 *)
- IN_PhasePump (IU := BaseValue + RandRangeReal(5,10), IV := BaseValue + RandRangeReal(4,10), IW := BaseValue + RandRangeReal(6,10) ); (* 三相电流信息-泵电机 *)
- IN_PhaseTransportL (IU := BaseValue + RandRangeReal(5,10), IV := BaseValue + RandRangeReal(4,10), IW := BaseValue + RandRangeReal(6,10) ); (* 三相电流信息-左运输电机 *)
- IN_PhaseTransportR (IU := BaseValue + RandRangeReal(5,10), IV := BaseValue + RandRangeReal(4,10), IW := BaseValue + RandRangeReal(6,10) ); (* 三相电流信息-右运输电机 *)
- IN_PhaseLoaderL (IU := BaseValue + RandRangeReal(5,10), IV := BaseValue + RandRangeReal(4,10), IW := BaseValue + RandRangeReal(6,10) ); (* 三相电流信息-左装载电机 *)
- IN_PhaseLoaderR (IU := BaseValue + RandRangeReal(5,10), IV := BaseValue + RandRangeReal(4,10), IW := BaseValue + RandRangeReal(6,10) ); (* 三相电流信息-右装载电机 *)
- IN_PhaseStandby (IU := BaseValue + RandRangeReal(5,10), IV := BaseValue + RandRangeReal(4,10), IW := BaseValue + RandRangeReal(6,10) ); (* 三相电流信息-备用电机 *)
- ELSE
- IF PS.isVirtualMode THEN RETURN;END_IF;
- IN_PhaseCut (IU := SSET_Cut.U, IV := SSET_Cut.V, IW := SSET_Cut.W ); (* 三相电流信息-截割电机 *)
- IN_PhasePump (IU := SSET_Pump.U, IV := SSET_Pump.V, IW := SSET_Pump.W ); (* 三相电流信息-泵电机 *)
- IN_PhaseTransportL (IU := SSET_TransportL.U, IV := SSET_TransportL.V, IW := SSET_TransportL.W ); (* 三相电流信息-左运输电机 *)
- IN_PhaseTransportR (IU := SSET_TransportR.U, IV := SSET_TransportR.V, IW := SSET_TransportR.W ); (* 三相电流信息-右运输电机 *)
- IN_PhaseLoaderL (IU := SSET_LoaderL.U, IV := SSET_LoaderL.V, IW := SSET_LoaderL.W ); (* 三相电流信息-左装载电机 *)
- IN_PhaseLoaderR (IU := SSET_LoaderR.U, IV := SSET_LoaderR.V, IW := SSET_LoaderR.W ); (* 三相电流信息-右装载电机 *)
- IN_PhaseStandby (IU := SSET_Standby.U, IV := SSET_Standby.V, IW := SSET_Standby.W ); (* 三相电流信息-备用电机 *)
+ IN_PhaseCut (IU := SSET_Cut.U, IV := SSET_Cut.V, IW := SSET_Cut.W ); (* 三相电流信息-截割电机 *)
+ IN_PhasePump (IU := SSET_Pump.U, IV := SSET_Pump.V, IW := SSET_Pump.W ); (* 三相电流信息-泵电机 *)
+ IN_PhaseTransportL (IU := SSET_TransportL.U, IV := SSET_TransportL.V, IW := SSET_TransportL.W ); (* 三相电流信息-左运输电机 *)
+ IN_PhaseTransportR (IU := SSET_TransportR.U, IV := SSET_TransportR.V, IW := SSET_TransportR.W ); (* 三相电流信息-右运输电机 *)
+ IN_PhaseLoaderL (IU := SSET_LoaderL.U, IV := SSET_LoaderL.V, IW := SSET_LoaderL.W ); (* 三相电流信息-左装载电机 *)
+ IN_PhaseLoaderR (IU := SSET_LoaderR.U, IV := SSET_LoaderR.V, IW := SSET_LoaderR.W ); (* 三相电流信息-右装载电机 *)
+ IN_PhaseStandby (IU := SSET_Standby.U, IV := SSET_Standby.V, IW := SSET_Standby.W ); (* 三相电流信息-备用电机 *)
+
+ IF PS.isDevelopment AND NOT PS.isDebugMode THEN (* 是否为开发模式 *)
+ IF Q_MotorKM.Cut THEN
+ IN_PhaseCut (
+ IU := RandRangeReal(PS.gRatedCur_Cut * 0.9,PS.gRatedCur_Cut * 1.1),
+ IV := RandRangeReal(PS.gRatedCur_Cut * 0.9,PS.gRatedCur_Cut * 1.1),
+ IW := RandRangeReal(PS.gRatedCur_Cut * 0.9,PS.gRatedCur_Cut * 1.1) ); (* 三相电流信息-截割电机 *)
+ ELSE
+ IN_PhaseCut (IU := 0.0, IV := 0.0, IW := 0.0 ); (* 三相电流信息-截割电机 *)
+ END_IF;
+
+ IF Q_MotorKM.Pump THEN
+ IN_PhasePump (
+ IU := RandRangeReal(PS.gRatedCur_Pump * 0.9,PS.gRatedCur_Pump * 1.1),
+ IV := RandRangeReal(PS.gRatedCur_Pump * 0.9,PS.gRatedCur_Pump * 1.1),
+ IW := RandRangeReal(PS.gRatedCur_Pump * 0.9,PS.gRatedCur_Pump * 1.1) ); (* 三相电流信息-截割电机 *)
+ ELSE
+ IN_PhasePump (IU := 0.0, IV := 0.0, IW := 0.0 ); (* 三相电流信息-截割电机 *)
+ END_IF;
+
+ IF Q_MotorKM.TransportCorotation OR Q_MotorKM.TransportReversal THEN
+ IN_PhaseTransportL (
+ IU := RandRangeReal(PS.gRatedCur_Transport * 0.9,PS.gRatedCur_Transport * 1.1),
+ IV := RandRangeReal(PS.gRatedCur_Transport * 0.9,PS.gRatedCur_Transport * 1.1),
+ IW := RandRangeReal(PS.gRatedCur_Transport * 0.9,PS.gRatedCur_Transport * 1.1) ); (* 三相电流信息-左运输电机 *)
+
+ IN_PhaseTransportR (
+ IU := RandRangeReal(PS.gRatedCur_Transport * 0.9,PS.gRatedCur_Transport * 1.1),
+ IV := RandRangeReal(PS.gRatedCur_Transport * 0.9,PS.gRatedCur_Transport * 1.1),
+ IW := RandRangeReal(PS.gRatedCur_Transport * 0.9,PS.gRatedCur_Transport * 1.1) ); (* 三相电流信息-右运输电机 *)
+ ELSE
+ IN_PhaseTransportL (IU := 0.0, IV := 0.0, IW := 0.0 ); (* 三相电流信息-左运输电机 *)
+ IN_PhaseTransportR (IU := 0.0, IV := 0.0, IW := 0.0 ); (* 三相电流信息-右运输电机 *)
+ END_IF;
+
+ IF Q_MotorKM.Loader THEN
+ IN_PhaseLoaderL (
+ IU := RandRangeReal(PS.gRatedCur_Loader * 0.9,PS.gRatedCur_Loader * 1.1),
+ IV := RandRangeReal(PS.gRatedCur_Loader * 0.9,PS.gRatedCur_Loader * 1.1),
+ IW := RandRangeReal(PS.gRatedCur_Loader * 0.9,PS.gRatedCur_Loader * 1.1) ); (* 三相电流信息-左装载电机 *)
+ IN_PhaseLoaderR (
+ IU := RandRangeReal(PS.gRatedCur_Loader * 0.9,PS.gRatedCur_Loader * 1.1),
+ IV := RandRangeReal(PS.gRatedCur_Loader * 0.9,PS.gRatedCur_Loader * 1.1),
+ IW := RandRangeReal(PS.gRatedCur_Loader * 0.9,PS.gRatedCur_Loader * 1.1) ); (* 三相电流信息-右装载电机 *)
+ ELSE
+ IN_PhaseLoaderL (IU := 0.0, IV := 0.0, IW := 0.0 ); (* 三相电流信息-左装载电机 *)
+ IN_PhaseLoaderR (IU := 0.0, IV := 0.0, IW := 0.0 ); (* 三相电流信息-右装载电机 *)
+ END_IF;
+
+ IF Q_MotorKM.Standby THEN
+ IN_PhaseStandby (
+ IU := RandRangeReal(PS.gRatedCur_Standby * 0.9,PS.gRatedCur_Standby * 1.1),
+ IV := RandRangeReal(PS.gRatedCur_Standby * 0.9,PS.gRatedCur_Standby * 1.1),
+ IW := RandRangeReal(PS.gRatedCur_Standby * 0.9,PS.gRatedCur_Standby * 1.1) ); (* 三相电流信息-截割电机 *)
+ ELSE
+ IN_PhaseStandby (IU := 0.0, IV := 0.0, IW := 0.0 ); (* 三相电流信息-截割电机 *)
+ END_IF;
END_IF;
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Control.var b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Control.var
index 5e77046..d7e345a 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Control.var
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Control.var
@@ -15,8 +15,12 @@ VAR
CentrControlKey_3 : UDINT;(* 集控控制键值 *)
CentrControlKey_4 : UDINT;(* 集控控制键值 *)
CentrTmpSINT : ARRAY[1..8] OF SINT;
-
+ HMI_Speed_L : SINT;
+ HMI_Speed_R : SINT;
+ HMI_AK : ARRAY[1..4] OF SINT;
+ HMI_DK : ARRAY[1..2,0..31] OF BOOL;
+ HMI_Mode : USINT;
END_VAR
VAR CONSTANT
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlMBTCP/Main.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlMBTCP/Main.st
index 5318d7d..f95cd10 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlMBTCP/Main.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlMBTCP/Main.st
@@ -62,6 +62,7 @@ PROGRAM _CYCLIC
CentralizedKey.TrackTension := holdingReg[11].2 ; (* 控制按钮-履带张紧 不用 *)
CentralizedKey.TransportTension := holdingReg[11].3 ; (* 控制按钮-运输机张紧 不用 *)
CentralizedKey.DustFan := holdingReg[11].4 ; (* 控制按钮-除尘风机打开 *)
+ CentralizedKey.HighSpeed := holdingReg[11].5 ; (* 控制按钮-高速 *)
END_IF;
END_PROGRAM
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_CentrMode.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_CentrMode.st
index 5a76c5a..393d16f 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_CentrMode.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_CentrMode.st
@@ -65,6 +65,7 @@ ACTION Act_CentrMode:
CentralizedKey.TrackTension := CentrControlKey_4.2 ; (* 控制按钮-履带张紧 *)
CentralizedKey.TransportTension := CentrControlKey_4.3 ; (* 控制按钮-运输机张紧 *)
CentralizedKey.DustFan := CentrControlKey_4.4 ; (* 控制按钮-除尘风机打开 *)
+ CentralizedKey.HighSpeed := CentrControlKey_4.5 ; (* 控制按钮-高速 *)
END_IF;
END_ACTION
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_PanelMode.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_PanelMode.st
index 1fec1a4..c3cef70 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_PanelMode.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlOpcUa/Act_PanelMode.st
@@ -63,6 +63,7 @@ ACTION Act_PanelMode:
PanelKey.TrackTension := PanelControlKey_4.2 ; (* 控制按钮-履带张紧 *)
PanelKey.TransportTension := PanelControlKey_4.3 ; (* 控制按钮-运输机张紧 *)
PanelKey.DustFan := PanelControlKey_4.4 ; (* 控制按钮-除尘风机打开 *)
+ PanelKey.HighSpeed := PanelControlKey_4.5 ; (* 控制按钮-高速 *)
END_IF;
END_ACTION
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlRem/Main.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlRem/Main.st
index 4afbb3c..04bb466 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlRem/Main.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/ControlRem/Main.st
@@ -1,16 +1,59 @@
PROGRAM _INIT
- (* Insert code here *)
-
+
END_PROGRAM
PROGRAM _CYCLIC
- (* Insert code here *)
-
+ RemoteKey.WorkMode := HMI_Mode; (* 工作模式 *)
+// RemoteKey.Track := PanelTmpSINT[2]; (* 控制按钮-双履带前后 *)
+// RemoteKey.TrackL := PanelTmpSINT[3]; (* 控制按钮-左履带前后 *)
+// RemoteKey.TrackR := PanelTmpSINT[4]; (* 控制按钮-右履带前后 *)
+// RemoteKey.Cut := PanelTmpSINT[5]; (* 控制按钮-截割伸缩 *)
+// RemoteKey.Cutt := PanelTmpSINT[6]; (* 控制按钮-掏槽伸缩 *)
+
+ RemoteKey.PumpStart := HMI_DK[1,0] ; (* 控制按钮-油泵启动 *)
+ RemoteKey.PumpStop := HMI_DK[1,1] ; (* 控制按钮-油泵停止 *)
+ RemoteKey.CutStart := HMI_DK[1,2] ; (* 控制按钮-截割启动 *)
+ RemoteKey.CutStop := HMI_DK[1,3] ; (* 控制按钮-截割停止 *)
+ RemoteKey.LoaderStart := HMI_DK[1,4] ; (* 控制按钮-装载启动 *)
+ RemoteKey.LoaderStop := HMI_DK[1,5] ; (* 控制按钮-装载停止 *)
+ RemoteKey.TransportCorotation := HMI_DK[1,6] ; (* 控制按钮-运输机正转 *)
+ RemoteKey.TransportReversal := HMI_DK[1,7] ; (* 控制按钮-运输机反转 *)
+ RemoteKey.TransportStop := HMI_DK[1,8] ; (* 控制按钮-运输机停止 *)
+ RemoteKey.StandbyStart := HMI_DK[1,9] ; (* 控制按钮-备用启动 *)
+ RemoteKey.StandbyStop := HMI_DK[1,10] ; (* 控制按钮-备用停止 *)
+ RemoteKey.Reset := HMI_DK[1,11] ; (* 控制按钮-复位 *)
+ RemoteKey.TransportLifterStr := HMI_DK[1,12] ; (* 控制按钮-运输机升降伸 *)
+ RemoteKey.TransportLifterShr := HMI_DK[1,13] ; (* 控制按钮-运输机升降缩 *)
+ RemoteKey.TransportSwingStr := HMI_DK[1,14] ; (* 控制按钮-运输机摆动伸 *)
+ RemoteKey.TransportSwingShr := HMI_DK[1,15] ; (* 控制按钮-运输机摆动缩 *)
+ RemoteKey.BoardLifterStr := HMI_DK[1,16] ; (* 控制按钮-铲板升降伸 *)
+ RemoteKey.BoardLifterShr := HMI_DK[1,17] ; (* 控制按钮-铲板升降缩 *)
+ RemoteKey.BoardExpansionStr := HMI_DK[1,18] ; (* 控制按钮-铲板扩展伸 *)
+ RemoteKey.BoardExpansionShr := HMI_DK[1,19] ; (* 控制按钮-铲板扩展缩 *)
+ RemoteKey.SupportLStr := HMI_DK[1,20] ; (* 控制按钮-左后支护伸 *)
+ RemoteKey.SupportLShr := HMI_DK[1,21] ; (* 控制按钮-左后支护缩 *)
+ RemoteKey.SupportRStr := HMI_DK[1,22] ; (* 控制按钮-右后支护伸 *)
+ RemoteKey.SupportRShr := HMI_DK[1,23] ; (* 控制按钮-右后支护缩 *)
+ RemoteKey.HydraulicStr := HMI_DK[1,24] ; (* 控制按钮-液压侧平台伸 *)
+ RemoteKey.HydraulicShr := HMI_DK[1,25] ; (* 控制按钮-液压侧平台缩 *)
+ RemoteKey.ECUStr := HMI_DK[1,26] ; (* 控制按钮-电控侧平台伸 *)
+ RemoteKey.ECUShr := HMI_DK[1,27] ; (* 控制按钮-电控侧平台缩 *)
+ RemoteKey.SupportTmpStr := HMI_DK[1,28] ; (* 控制按钮-临时支护伸 *)
+ RemoteKey.SupportTmpShr := HMI_DK[1,29] ; (* 控制按钮-临时支护缩 *)
+ RemoteKey.RollerStr := HMI_DK[1,30] ; (* 控制按钮-滚筒伸 *)
+ RemoteKey.RollerShr := HMI_DK[1,31] ; (* 控制按钮-滚筒缩 *)
+ RemoteKey.LubPump := HMI_DK[2,0] ; (* 控制按钮-集中润滑泵工作 *)
+ RemoteKey.BoostPump := HMI_DK[2,1] ; (* 控制按钮-增压水泵工作 *)
+ RemoteKey.TrackTension := HMI_DK[2,2] ; (* 控制按钮-履带张紧 *)
+ RemoteKey.TransportTension := HMI_DK[2,3] ; (* 控制按钮-运输机张紧 *)
+ RemoteKey.DustFan := HMI_DK[2,4] ; (* 控制按钮-除尘风机打开 *)
+ RemoteKey.HighSpeed := HMI_DK[2,5] ; (* 控制按钮-高速 *)
+
END_PROGRAM
PROGRAM _EXIT
- (* Insert code here *)
+
END_PROGRAM
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Package.pkg b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Package.pkg
index 37624a8..eb40e01 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Package.pkg
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_Control/Package.pkg
@@ -2,7 +2,7 @@
-
+
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_Module_1.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_Module_1.st
index f32571d..63f50e4 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_Module_1.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_Module_1.st
@@ -1,42 +1,83 @@
ACTION Act_Module_1:
- IF PS.isDevelopment THEN
- Filter_Sersor[1] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-油泵压力1 4~20mA 对应 040Mpa *)
- Filter_Sersor[2] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-油泵压力2 4~20mA 对应 040Mpa *)
- Filter_Sersor[3] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-油泵压力3 4~20mA 对应 040Mpa *)
- Filter_Sersor[4] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-截割压力 4~20mA 对应 040Mpa *)
- Filter_Sersor[5] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-掏槽压力 4~20mA 对应 040Mpa *)
- Filter_Sersor[6] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-截割喷淋压力 4~20mA 对应 10Mpa *)
- Filter_Sersor[7] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-截割缸左位移 4~20mA 对应930mm *)
- Filter_Sersor[8] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-截割缸右位移 4~20mA 对应930mm *)
- Filter_Sersor[9] (Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-掏槽缸位移 4~20mA 对应 2020mm *)
- Filter_Sersor[10](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-运输缸位移 4~20mA 对应 1035mm *)
- Filter_Sersor[11](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-支撑缸左位移 4~20mA 对应 40mm *)
- Filter_Sersor[12](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-支撑缸右位移 4~20mA 对应 40mm *)
- Filter_Sersor[13](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-油箱液位 4~20mA 对应 40% *)
- Filter_Sersor[14](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-油箱温度 4~20mA 对应 80℃ *)
- Filter_Sersor[15](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-截割喷雾流量 4~20mA 对应 16.6~166.0L/min *)
- Filter_Sersor[16](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* 传感器-铲板喷雾流量 4~20mA 对应 16.6~166.0L/min *)
- ELSE
- Filter_Sersor[1] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin2 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-油泵压力1 4~20mA 对应 040Mpa *)
- Filter_Sersor[2] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin3 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-油泵压力2 4~20mA 对应 040Mpa *)
- Filter_Sersor[3] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin4 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-油泵压力3 4~20mA 对应 040Mpa *)
- Filter_Sersor[4] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin5 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-截割压力 4~20mA 对应 040Mpa *)
- Filter_Sersor[5] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin6 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-掏槽压力 4~20mA 对应 040Mpa *)
- Filter_Sersor[6] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin7 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 10.0)); (* 传感器-截割喷淋压力 4~20mA 对应 10Mpa *)
- Filter_Sersor[7] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin8 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 930.0)); (* 传感器-截割缸左位移 4~20mA 对应930mm *)
- Filter_Sersor[8] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin9 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 930.0)); (* 传感器-截割缸右位移 4~20mA 对应930mm *)
- Filter_Sersor[9] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin10, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-掏槽缸位移 4~20mA 对应 2020mm *)
- Filter_Sersor[10](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin11, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 1035.0)); (* 传感器-运输缸位移 4~20mA 对应 1035mm *)
- Filter_Sersor[11](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin12, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-支撑缸左位移 4~20mA 对应 40mm *)
- Filter_Sersor[12](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin13, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-支撑缸右位移 4~20mA 对应 40mm *)
- Filter_Sersor[13](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin20, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 550.0)); (* 传感器-油箱液位 4~20mA 对应 550mm *)
- Filter_Sersor[14](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin21, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 80.0)); (* 传感器-油箱温度 4~20mA 对应 80℃ *)
- Filter_Sersor[15](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin22, ConsPLC_4mA, ConsPLC_20mA, 16.6 , 166.0)); (* 传感器-截割喷雾流量 4~20mA 对应 16.6~166.0L/min *)
- Filter_Sersor[16](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin24, ConsPLC_4mA, ConsPLC_20mA, 16.6 , 166.0)); (* 传感器-铲板喷雾流量 4~20mA 对应 16.6~166.0L/min *)
- END_IF;
- Filter_ArmAngle(Enable := TRUE, WindowLength := 10, In := Map( Dx1Pin25 ,ConsPLC_4mA, ConsPLC_20mA, 90.0, -90.0)); (* 传感器-截割角度 4~20mA 对应 90°~-90° *)
+
+ Filter_Sersor[1] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin2 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-油泵压力1 4~20mA 对应 040Mpa *)
+ Filter_Sersor[2] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin3 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-油泵压力2 4~20mA 对应 040Mpa *)
+ Filter_Sersor[3] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin4 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-油泵压力3 4~20mA 对应 040Mpa *)
+ Filter_Sersor[4] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin5 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-截割压力 4~20mA 对应 040Mpa *)
+ Filter_Sersor[5] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin6 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 40.0)); (* 传感器-掏槽压力 4~20mA 对应 040Mpa *)
+ Filter_Sersor[6] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin7 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 10.0)); (* 传感器-截割喷淋压力 4~20mA 对应 10Mpa *)
+ Filter_Sersor[7] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin8 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 930.0)); (* 传感器-截割缸左位移 4~20mA 对应930mm *)
+ Filter_Sersor[8] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin9 , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 930.0)); (* 传感器-截割缸右位移 4~20mA 对应930mm *)
+ Filter_Sersor[9] (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin10, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-掏槽缸位移 4~20mA 对应 2020mm *)
+ Filter_Sersor[10](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin11, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 1035.0)); (* 传感器-运输缸位移 4~20mA 对应 1035mm *)
+ Filter_Sersor[11](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin12, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-支撑缸左位移 4~20mA 对应 40mm *)
+ Filter_Sersor[12](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin13, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-支撑缸右位移 4~20mA 对应 40mm *)
+ Filter_Sersor[13](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin20, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 550.0)); (* 传感器-油箱液位 4~20mA 对应 550mm *)
+ Filter_Sersor[14](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin21, ConsPLC_4mA, ConsPLC_20mA, Cons_0, 80.0)); (* 传感器-油箱温度 4~20mA 对应 80℃ *)
+ Filter_Sersor[15](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin22, ConsPLC_4mA, ConsPLC_20mA, 16.6 , 166.0)); (* 传感器-截割喷雾流量 4~20mA 对应 16.6~166.0L/min *)
+ Filter_Sersor[16](Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin24, ConsPLC_4mA, ConsPLC_20mA, 16.6 , 166.0)); (* 传感器-铲板喷雾流量 4~20mA 对应 16.6~166.0L/min *)
+ Filter_ArmAngle (Enable := TRUE, WindowLength := 10, In := Map(Dx1Pin25 ,ConsPLC_4mA, ConsPLC_20mA, 90.0, -90.0)); (* 传感器-截割角度 4~20mA 对应 90°~-90° *)
+
+ IF PS.isDevelopment AND NOT PS.isDebugMode THEN (* 是否为开发模式 *)
+
+ IF Q_MotorKM.Pump THEN
+ Filter_Sersor[1] (Enable := TRUE, WindowLength := 10, In := RandRangeReal(20,30)); (* 传感器-油泵压力1 4~20mA 对应 040Mpa *)
+ Filter_Sersor[2] (Enable := TRUE, WindowLength := 10, In := RandRangeReal(20,30)); (* 传感器-油泵压力2 4~20mA 对应 040Mpa *)
+ Filter_Sersor[3] (Enable := TRUE, WindowLength := 10, In := RandRangeReal(20,30)); (* 传感器-油泵压力3 4~20mA 对应 040Mpa *)
+ Filter_Sersor[5] (Enable := TRUE, WindowLength := 10, In := RandRangeReal(-10,10)); (* 传感器-掏槽压力 4~20mA 对应 040Mpa *)
+ ELSE
+ Filter_Sersor[1] (Enable := TRUE, WindowLength := 10, In := 0); (* 传感器-油泵压力1 4~20mA 对应 040Mpa *)
+ Filter_Sersor[2] (Enable := TRUE, WindowLength := 10, In := 0); (* 传感器-油泵压力2 4~20mA 对应 040Mpa *)
+ Filter_Sersor[3] (Enable := TRUE, WindowLength := 10, In := 0); (* 传感器-油泵压力3 4~20mA 对应 040Mpa *)
+ Filter_Sersor[5] (Enable := TRUE, WindowLength := 10, In := 0); (* 传感器-掏槽压力 4~20mA 对应 040Mpa *)
+ END_IF;
+
+ IF IO_Ohter.Q_SprayCut THEN
+ Filter_Sersor[4] (Enable := TRUE, WindowLength := 10, In := RandRangeReal(20,30)); (* 传感器-截割压力 4~20mA 对应 040Mpa *)
+ Filter_Sersor[6] (Enable := TRUE, WindowLength := 10, In := RandRangeReal(5,8)); (* 传感器-截割喷淋压力 4~20mA 对应 10Mpa *)
+ Filter_Sersor[15](Enable := TRUE, WindowLength := 10, In := RandRangeReal(90,110)); (* 传感器-截割喷雾流量 4~20mA 对应 16.6~166.0L/min *)
+ ELSE
+ Filter_Sersor[4] (Enable := TRUE, WindowLength := 10, In := 0); (* 传感器-截割压力 4~20mA 对应 040Mpa *)
+ Filter_Sersor[6] (Enable := TRUE, WindowLength := 10, In := 0); (* 传感器-截割喷淋压力 4~20mA 对应 10Mpa *)
+ Filter_Sersor[15](Enable := TRUE, WindowLength := 10, In := 16.6); (* 传感器-截割喷雾流量 4~20mA 对应 16.6~166.0L/min *)
+ END_IF;
+
+ IF IO_Ohter.Q_SprayBoard THEN
+ Filter_Sersor[16](Enable := TRUE, WindowLength := 10, In := RandRangeReal(90,110)); (* 传感器-铲板喷雾流量 4~20mA 对应 16.6~166.0L/min *)
+ ELSE
+ Filter_Sersor[16](Enable := TRUE, WindowLength := 10, In := 16.6); (* 传感器-铲板喷雾流量 4~20mA 对应 16.6~166.0L/min *)
+ END_IF;
+
+ SimPinValue[1] := SimPinValue[1] + USINT_TO_INT(Q_OilCylindExtend.CutL.InPWM);
+ SimPinValue[2] := SimPinValue[2] + USINT_TO_INT(Q_OilCylindExtend.CutR.InPWM);
+ SimPinValue[3] := SimPinValue[3] + USINT_TO_INT(Q_OilCylindExtend.Cutt.InPWM);
+ Filter_Sersor[7] (Enable := TRUE, WindowLength := 10, In := Map(SimPinValue[1] , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 930.0)); (* 传感器-截割缸左位移 4~20mA 对应930mm *)
+ Filter_Sersor[8] (Enable := TRUE, WindowLength := 10, In := Map(SimPinValue[2] , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 930.0)); (* 传感器-截割缸右位移 4~20mA 对应930mm *)
+ Filter_ArmAngle (Enable := TRUE, WindowLength := 10, In := Map(MAX(SimPinValue[1],SimPinValue[2]) , ConsPLC_4mA, ConsPLC_20mA, 90.0, -90.0)); (* 传感器-截割角度 4~20mA 对应 90°~-90° *)
+ Filter_Sersor[9] (Enable := TRUE, WindowLength := 10, In := Map(SimPinValue[3] , ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-掏槽缸位移 4~20mA 对应 2020mm *)
+
+ IF Q_OilCylindExtend.TransportLifter.InSwitch THEN
+ SimPinValue[4] := SimPinValue[4] + ChengValue; SimPinValue[4] := MAX(SimPinValue[1],32767);
+ ELSIF Q_OilCylindShorten.TransportLifter.InSwitch THEN
+ SimPinValue[4] := SimPinValue[4] - ChengValue; SimPinValue[4] := MIN(SimPinValue[1],6554);
+ END_IF;
+
+ IF Q_OilCylindExtend.SupportTmp.InSwitch THEN
+ SimPinValue[5] := SimPinValue[5] + ChengValue; SimPinValue[5] := MAX(SimPinValue[1],32767);
+ ELSIF Q_OilCylindShorten.SupportTmp.InSwitch THEN
+ SimPinValue[5] := SimPinValue[5] - ChengValue; SimPinValue[5] := MIN(SimPinValue[1],6554);
+ END_IF;
+
+ Filter_Sersor[10](Enable := TRUE, WindowLength := 10, In := Map(SimPinValue[4], ConsPLC_4mA, ConsPLC_20mA, Cons_0, 1035.0)); (* 传感器-运输缸位移 4~20mA 对应 1035mm *)
+ Filter_Sersor[11](Enable := TRUE, WindowLength := 10, In := Map(SimPinValue[5], ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-左临时支撑缸位移 4~20mA 对应 40mm *)
+ Filter_Sersor[12](Enable := TRUE, WindowLength := 10, In := Map(SimPinValue[5], ConsPLC_4mA, ConsPLC_20mA, Cons_0, 2020.0)); (* 传感器-右临时支撑缸位移 4~20mA 对应 40mm *)
+
+ Filter_Sersor[13](Enable := TRUE, WindowLength := 10, In := RandRangeReal(450,500)); (* 传感器-油箱液位 4~20mA 对应 550mm *)
+ Filter_Sersor[14](Enable := TRUE, WindowLength := 10, In := RandRangeReal(50,65)); (* 传感器-油箱温度 4~20mA 对应 80℃ *)
+ END_IF;
+
IN_Sersor.Pressure_Pump1 := Filter_Sersor[1] .Out; (* 传感器-油泵压力1 4~20mA 对应 040Mpa *)
IN_Sersor.Pressure_Pump2 := Filter_Sersor[2] .Out; (* 传感器-油泵压力2 4~20mA 对应 040Mpa *)
IN_Sersor.Pressure_Pump3 := Filter_Sersor[3] .Out; (* 传感器-油泵压力3 4~20mA 对应 040Mpa *)
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1A.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1A.st
index 410de86..b76ed50 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1A.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1A.st
@@ -19,14 +19,24 @@ ACTION Act_X1A:
I_Leakage.Loader := X1A_G2; (* 漏电检测反馈-装载电机 *)
I_Leakage.Standby := X1A_J2; (* 漏电检测反馈-备用电机 *)
- IO_Ohter.I_MMX := X1A_H1; (* 继电器反馈-MMX *)
+ IO_Ohter.I_MMX := X1A_H1; (* 继电器反馈-MMX *)
I_ESR.ESR2 := X1A_H2; (* 继电器反馈-ESR2 *)
-
+
IN_SystemVal.IU := Map( X1A_D3 ,ConsPLC_0V, ConsPLC_5V, Cons_0, PS.Voltage*500.0/380.0); (* 系统电压输入-系统电压U *)
IN_SystemVal.IV := Map( X1A_E3 ,ConsPLC_0V, ConsPLC_5V, Cons_0, PS.Voltage*500.0/380.0); (* 系统电压输入-系统电压V *)
IN_SystemVal.IW := Map( X1A_F3 ,ConsPLC_0V, ConsPLC_5V, Cons_0, PS.Voltage*500.0/380.0); (* 系统电压输入-系统电压W *)
+
Filter_Swing(Enable := TRUE, WindowLength := 10, In := Map(X1A_H3,ConsPLC_0V, ConsPLC_5V, 30.0,-30.0));
Filter_Pitch(Enable := TRUE, WindowLength := 10, In := Map(X1A_J3,ConsPLC_0V, ConsPLC_5V, 30.0,-30.0));
- IN_Sersor.Angle_Swing := Filter_Swing.Out; (* 机身摇摆角 *)
+
+ IF PS.isDevelopment AND NOT PS.isDebugMode THEN (* 是否为开发模式 *)
+ Filter_Swing(Enable := TRUE, WindowLength := 10, In := RandRangeReal(-2,2));
+ Filter_Pitch(Enable := TRUE, WindowLength := 10, In := RandRangeReal(-2,2));
+
+ IN_SystemVal.IU := 3300.0 + RandRangeReal(-15.0,15.0); (* 系统电压输入-系统电压U *)
+ IN_SystemVal.IV := 3300.0 + RandRangeReal(-15.0,15.0); (* 系统电压输入-系统电压V *)
+ IN_SystemVal.IW := 3300.0 + RandRangeReal(-15.0,15.0); (* 系统电压输入-系统电压W *)
+ END_IF;
+ IN_Sersor.Angle_Swing := Filter_Swing.Out; (* 机身摇摆角 *)
IN_Sersor.Angle_Pitch := Filter_Pitch.Out; (* 机身俯仰角 *)
END_ACTION
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1B.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1B.st
index 1915ee1..374388a 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1B.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1B.st
@@ -19,15 +19,15 @@ ACTION Act_X1B:
IO_Ohter.I_CB2 := X1B_C4; (* 面板按钮输入-急停3 *)
IO_Ohter.I_CB3 := X1B_D4; (* 面板按钮输入-急停4 *)
- IF PS.isDevelopment THEN
- Filter_Temp[1](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-截割电机 *)
- Filter_Temp[2](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-油泵电机 *)
- Filter_Temp[3](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-左输送电机 *)
- Filter_Temp[4](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-右输送电机 *)
- Filter_Temp[5](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-左装载电机 *)
- Filter_Temp[6](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-右装载电机 *)
- Filter_Temp[7](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-备用电机 *)
- Filter_Temp[8](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(-10,10)); (* PT100温度传感器-备用 *)
+ IF PS.isDevelopment AND NOT PS.isDebugMode THEN (* 是否为开发模式 *)
+ Filter_Temp[1](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-截割电机 *)
+ Filter_Temp[2](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-油泵电机 *)
+ Filter_Temp[3](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-左输送电机 *)
+ Filter_Temp[4](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-右输送电机 *)
+ Filter_Temp[5](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-左装载电机 *)
+ Filter_Temp[6](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-右装载电机 *)
+ Filter_Temp[7](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-备用电机 *)
+ Filter_Temp[8](Enable := TRUE, WindowLength := 10, In := BaseValue + RandRangeReal(30,40)); (* PT100温度传感器-备用 *)
ELSE
Filter_Temp[1](Enable := TRUE, WindowLength := 10, In := Map(X1B_B2, ConsPLC_4mA, ConsPLC_20mA, ConsTemo_0C, ConsTemo_200C)); (* PT100温度传感器-截割电机 *)
Filter_Temp[2](Enable := TRUE, WindowLength := 10, In := Map(X1B_C2, ConsPLC_4mA, ConsPLC_20mA, ConsTemo_0C, ConsTemo_200C)); (* PT100温度传感器-油泵电机 *)
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1C.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1C.st
index 7ddf48f..67f463e 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1C.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Act_X1C.st
@@ -6,11 +6,21 @@ ACTION Act_X1C:
I_MotorKM.TransportReversal := X1C_D2; (* KM继电器反馈-右运输电机 *)
I_MotorKM.Loader := X1C_E2; (* KM继电器反馈-装载电机 *)
I_MotorKM.Standby := X1C_F2; (* KM继电器反馈-备用电机 *)
-
+
+ IF NOT PS.isDebugMode THEN
IN_CtrlMode.PanelMode := X1C_H2; (* 控制模式-面板模式 *)
IN_CtrlMode.RemoteMode := X1C_D3; (* 控制模式-遥控模式 *)
IN_CtrlMode.CentrMode := X1C_E3; (* 控制模式-集控模式 *)
-
+ END_IF;
+ IF PS.isDevelopment AND NOT PS.isDebugMode THEN (* 是否为开发模式 *)
+ IN_CtrlMode.PanelMode := TRUE;
+ I_MotorKM.Cut := Q_MotorKM.Cut; (* KM继电器反馈-截割电机 *)
+ I_MotorKM.Pump := Q_MotorKM.Pump; (* KM继电器反馈-油泵电机 *)
+ I_MotorKM.TransportCorotation := Q_MotorKM.TransportCorotation; (* KM继电器反馈-左运输电机 *)
+ I_MotorKM.TransportReversal := Q_MotorKM.TransportReversal; (* KM继电器反馈-右运输电机 *)
+ I_MotorKM.Loader := Q_MotorKM.Loader; (* KM继电器反馈-装载电机 *)
+ I_MotorKM.Standby := Q_MotorKM.Standby; (* KM继电器反馈-备用电机 *)
+ END_IF;
EStopBut.0 := X1C_F3; (* 门板按钮-油泵启动 *)
EStopBut.1 := X1C_D4; (* 门板按钮-油泵停止 *)
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Main.st b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Main.st
index 0c6e12b..1950db7 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Main.st
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Main.st
@@ -37,7 +37,7 @@ PROGRAM _CYCLIC
END_IF;
IN_SystemVal (); (* 三相信息-系统电压 *)
- IF NOT PS.isDevelopment THEN
+ IF NOT PS.isDebugMode THEN
IN_PhaseCut (); (* 三相信息-截割电机 *)
IN_PhasePump (); (* 三相信息-油泵电机 *)
IN_PhaseTransportL (); (* 三相信息-左运输电机 *)
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Variables.var b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Variables.var
index e422fc7..b664e26 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Variables.var
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/Main_Physical/Dev_IO/IOs/Variables.var
@@ -39,10 +39,14 @@ VAR
Filter_Temp : ARRAY[1..10] OF MTFilterMovingAverage;(* 温度滤波 *)
Filter_Sersor : ARRAY[1..30] OF MTFilterMovingAverage;(* 传感器滤波 *)
- BaseValue : REAL := 50;
+ BaseValue : REAL := 0;
UnknownMode_TON : TON ;
Old_OperMode : USINT;(* 0= 未知模式,1 = 工作模式,2=行走模式,3=探水钻模式,4=检修模式 *)
Old_CtrlMode : USINT;(* 控制模式编号 0=未知,1=面板,2=遥控,3=集控,4=紧急,5=备用遥控 *)
+END_VAR
+(* 为模拟硬件创建的变量,项目中无用 *)
+VAR RETAIN
+ SimPinValue : ARRAY[1..10] OF INT;
+ ChengValue : UINT := 1;
END_VAR
-
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/DataSources/DataSource.dso b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/DataSources/DataSource.dso
index d81cd8c..b6cc08a 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/DataSources/DataSource.dso
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/DataSources/DataSource.dso
@@ -294,7 +294,7 @@
-
+
@@ -584,14 +584,6 @@
-
-
-
-
-
-
-
-
@@ -637,6 +629,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/Package.vcp b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/Package.vcp
index 69b4447..71b7fe0 100644
--- a/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/Package.vcp
+++ b/PLC_Program/EJM560_JueMao_20250804_V0/Logical/VCShared/Package.vcp
@@ -3,7 +3,7 @@
-
+