WINCC 时间同步按钮,脚本分析

描述

现场SPS+PN画面里有PLC时间与HMI时间一致的控制按钮,可以通过这个进行定期更新改进.

WinCC

年的更改

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")

WinCC

WinCC

_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处理发生故障)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分