现场SPS+PN画面里有PLC时间与HMI时间一致的控制按钮,可以通过这个进行定期更新改进.
年的更改
SetValueSmartTags("@StandardSPS_InfoGrund_DB.Stell_Datum_Uhrzeit_BCD.Jahr"), (Year (Date)1000)*4096 +((Year (Date) Mod 1000)100)*256 + ((Year (Date) Mod 100)10)*16 + Year (Date)Mod 10
月的更改
SetValueSmartTags("@StandardSPS_InfoGrund_DB.Stell_Datum_Uhrzeit_BCD.Monat"), (Month (Date)1000)*4096 +((Month (Date) Mod 1000)100)*256 + ((Month (Date) Mod 100)10)*16 + Month(Date) Mod 10
日的更改
SetValueSmartTags("@StandardSPS_InfoGrund_DB.Stell_Datum_Uhrzeit_BCD.Tag"), (Day (Date)1000)*4096 +((Day (Date) Mod 1000)100)*256 + ((Day (Date) Mod 100)10)*16 + Day (Date) Mod10
小时的更改
SetValueSmartTags("@StandardSPS_InfoGrund_DB.Stell_Datum_Uhrzeit_BCD.Stunde"), (Hour (Time)1000)*4096 +((Hour (Time) Mod 1000)100)*256 + ((Hour (Time) Mod 100)10)*16 + Hour (Time)Mod 10
分钟的更改
SetValueSmartTags("@StandardSPS_InfoGrund_DB.Stell_Datum_Uhrzeit_BCD.Minute"), (Minute (Time)1000)*4096 +((Minute (Time) Mod 1000)100)*256 + ((Minute (Time) Mod 100)10)*16 + Minute(Time) Mod 10
秒的更改
SetValueSmartTags("@StandardSPS_InfoGrund_DB.Stell_Datum_Uhrzeit_BCD.Sekunde"), ((Second(Time)+1)1000)*4096+ (((Second(Time)+1) Mod 1000)100)*256 + (((Second(Time)+1) Mod 100)10)*16 +(Second(Time)+1) Mod 10
SetBit SmartTags("@StandardSPS_InfoGrund_DB.Stellbits.OP_Stell")
_Stellbits := "DB_ARG".Stellbits;
IF Cfg.X1 AND Stellbits.X10 THEN
以下是时间的转换:
iDate := uiDate(DAY:=BCD_TO_INT("DB_ARG".Stell_Time_Tag),
MONTH:=BCD_TO_INT("DB_ARG".Stell_Time_Monat),
YEAR:= BCD_TO_INT(WORD_TO_BYTE("DB_ARG".Stell_Time_Jahr)) + 2000);
TMP_DT := D_TOD_DT(IN1 := DINT_TO_DATE(INT_TO_DINT(iDate)),IN2 := TOD#0000.000);
_DT.Stunde := "DB_ARG".Stell_Time_Stunde;
_DT.Minute := "DB_ARG".Stell_Time_Minute;
_DT.Sekunde := "DB_ARG".Stell_Time_Sekunde;
以下是PLC时间的设置:SFC0
RET_VAL_SFC :=SET_CLK(PDT := TMP_DT); SFC0
Stellbits.X10:= False;
END_IF;
SFC0设置PLC时间:
使用SFC 0 "SET_CLK" (设定系统时钟),可以设定CPU时钟的时间和日期。调用SFC 0会启动时钟。时钟将从设定时间和设定日期开始运行。如果这个时钟是主时钟,则在调用SFC 0的同时,CPU启动同步时间的功能。可使用STEP 7设定同步周期。
例如:
CALLSFC 0// SFC 0 "SET_CLK" (设置时间中断)
(PDT:= #IN_TIME_DATE,//当前日期和时间
RET_VAL:= MW 200);//包含错误代码(如果SFC处理发生故障)
全部0条评论
快来发表一下你的评论吧 !