{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)a568d3bc-499d-4828-a195-1afef4cd41f3","ParentGuid":"(Guid)74ccca2f-50e3-4d5a-9d7a-9fd420284f83","Name":"(string)atCurveTimeClock","Properties":{"@Type":"2c41fa04:IDictionary","@Value":[{"@Key":"(Guid)829a18f2-c514-4f6e-9634-1df173429203","@Value":{"@Type":"829a18f2","@Value":{"ParentObjects":{"@Type":"fa2ee218:IDictionary","@Value":[{"@Key":"(Guid)d9b2b2cc-ea99-4c3b-aa42-1e5c49e65b84","@Value":"(Guid)5f17b7ee-332a-4cd1-9df3-56ff0089d83a"}]}}}}]},"TypeGuid":"(Guid)6f9dac99-8de1-4efc-8465-68ac443b7d08","EmbeddedTypeGuids":{"@Type":"[Guid]","@Value":["(Guid)a9ed5b7e-75c5-4651-af16-d2c27e98cb94","(Guid)3b83b776-fb25-43b8-99f2-3c507c9143fc"]}}},"TypeInfos":{"2c41fa04":"{2c41fa04-1834-41c1-816e-303c7aa2c05b}","81297157":"{81297157-7ec9-45ce-845e-84cab2b88ade}","829a18f2":"{829a18f2-c514-4f6e-9634-1df173429203}","fa2ee218":"{fa2ee218-a39b-4b6d-b249-49dbddbd168a}","Guid":"System.Guid","string":"System.String"}},"object":{"Graph":{"@Type":"6f9dac99","@Value":{"SpecialFunc":{"@Type":"0db3d7bb:Enum","@Value":"None"},"Implementation":{"@Type":"3b83b776","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextBlobForSerialisation":"(string)\n//Set the timezone offset for all entries\nFOR i := 0 TO UPPER_BOUND(curve,1) DO\n\tcurve[i].timeStart(settings := TODSettings);\n\tcurve[i].timeStop(settings := TODSettings);\nEND_FOR\n\n\n//Get the curve value for the specified key \ngetIdx(keys := keys,in_key := in_key);\n\nIF in_resultType = atCurveOutType.stepped THEN\n\t//For stepped curve then use the idx low value\n\tout_value REF= curve[getIdx.out_idxLo];\nELSE\n\t//For smooth curve calculate the ratio\n\t\n\tsmoothOut.timeStart(settings := TODSettings);\n\tsmoothOut.timeStop(settings := TODSettings);\n\tout_value REF= smoothOut;\n\t//Start Time\n\tscaling(\n\t\tin_raw := REAL_TO_DINT(getIdx.out_ratio),\n\t\tin_euMin := curve[getIdx.out_idxLo].timeStart.localMs,\n\t\tin_euMax := curve[getidx.out_idxHi].timeStart.localMs\n\t\t);\n\t\tout_value.timeStart.localMs := scaling.out_eu;\n\t\t\n\t//Stop Time\n\tscaling(\n\t\tin_raw := REAL_TO_DINT(getIdx.out_ratio),\n\t\tin_euMin := curve[getIdx.out_idxLo].timeStop.localMs,\n\t\tin_euMax := curve[getidx.out_idxHi].timeStop.localMs\n\t\t);\n\t\tout_value.timeStop.localMs := scaling.out_eu;\nEND_IF","LineInfoPersistence":"(string)a568d3bc-499d-4828-a195-1afef4cd41f3_Impl_LineIds"}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextBlobForSerialisation":"(string){attribute 'no_assign'}\nFUNCTION_BLOCK atCurveTimeClock\n\nVAR_IN_OUT\n\tkeys: ARRAY[*] OF atCurveKey; //Keys for curve\n\tcurve: ARRAY[*] OF atCurveTimeClockData; //Data for curve\n\tTODSettings: atTODSettings; //Time zone settings \t\t\nEND_VAR\n\nVAR_INPUT\n\tin_key: REAL; //Desired key at which to get the curve values\n\tin_resultType: atCurveOutType := atCurveOutType.stepped; //Output type of the curve, stepped or smooth\n\tout_value: REFERENCE TO atCurveTimeClockData; //output value\nEND_VAR\n\nVAR\n\ti: DINT; //Loop variable\n\tgetIdx: atCurveGetKey;\n\tscaling: atScalingDINT;\n\tsmoothOut: atCurveTimeClockData; //empty container for calculated values\nEND_VAR\n","LineInfoPersistence":"(string)a568d3bc-499d-4828-a195-1afef4cd41f3_Decl_LineIds"}}}},"UniqueIdGenerator":"(string)105","POULevel":{"@Type":"8e575c5b:Enum","@Value":"Standard"},"ChildObjectGuids":{"@Type":"ArrayList:IList","@Value":[]},"AddAttributeSubsequent":"(bool)False"}},"TypeInfos":{"0db3d7bb":"{0db3d7bb-cde0-4416-9a7b-ce49a0124323}","3b83b776":"{3b83b776-fb25-43b8-99f2-3c507c9143fc}","6f9dac99":"{6f9dac99-8de1-4efc-8465-68ac443b7d08}","8e575c5b":"{8e575c5b-1d37-49c6-941b-5c0ec7874787}","a9ed5b7e":"{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}","ArrayList":"System.Collections.ArrayList","bool":"System.Boolean","f3878285":"{f3878285-8e4f-490b-bb1b-9acbb7eb04db}","string":"System.String"}}},"FormatVersion":"1.0"}