{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)793183e1-4619-4eb4-941b-262481b202a3","ParentGuid":"(Guid)74ccca2f-50e3-4d5a-9d7a-9fd420284f83","Name":"(string)atDistributorControl","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)9a3a0783-0c5e-46c3-8afd-032a970fe961"}]}}}}]},"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)//Give an actual location and a demand position, energize the required outputs to rotate to that position\n\n//Simulator\nIF simEn THEN\n\tlocAct := locSim;\nEND_IF\n\n\n//Get the highest drop position\ndropMax := DINT_TO_INT(UPPER_BOUND( settings.posSP,1));\nIF settings.posMax < dropMax THEN\n\tdropMax := settings.posMax;\nEND_IF\n\n//Calculate current drop position\nposAct :=0; //Default to position 0\nFOR i := 1 TO dropMax DO\n\tIF locAct >= settings.posSP[i] - settings.locDb AND locAct <= settings.posSP[i] + settings.locDb  THEN\n\t\tposAct := i;\n\tEND_IF\nEND_FOR\n\n//Energize motor to move to desired position\nIF posDem > 0 AND posDem <= dropMax THEN\n\n\tlocDem := settings.posSP[posDem];\n\tfwd := locAct < locDem - settings.locDb;\n\t\n\trev:= locAct > locDem + settings.locDb;\n\t\n\nEND_IF\n\n//Simulator\nIF simEn THEN\n\t//Rotate distributor\n\tIF fwd THEN\n \t\tlocSim := locSim +1;\n \tEND_IF\n\tIF rev THEN\n\t\tlocSim := locSim -1;\n\tEND_IF\n\t//Handle end limits\n\tIF locSim < 0 THEN //handles going below zero \n\t\tlocSim := 255;\n\tEND_IF\n\tIF locSim > 255 THEN\n\t\tlocSim := 0;\n\tEND_IF\n\nEND_IF\n\n","LineInfoPersistence":"(string)793183e1-4619-4eb4-941b-262481b202a3_Impl_LineIds"}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextBlobForSerialisation":"(string)FUNCTION_BLOCK atDistributorControl\nVAR_INPUT\n\t// Distributor settings\n\tsettings: atDistributorControlSP;\n\t// Distributor location in counts\n\tlocAct: INT;\n\t// Position demand\n\tposDem: INT;\n\tsimEn: BOOL;\nEND_VAR\nVAR_OUTPUT\n\t// Actual position\n\tposAct: INT;\n\t// Forward output\n\tfwd: BOOL;\n\t// Reverse output\n\trev: BOOL;\nEND_VAR\nVAR_TEMP\n\ti: INT;\n\tdropMax: INT;\n\tlocDem: INT;\nEND_VAR\nVAR\n\tlocSim: INT;\nEND_VAR\n","LineInfoPersistence":"(string)793183e1-4619-4eb4-941b-262481b202a3_Decl_LineIds"}}}},"UniqueIdGenerator":"(string)995","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"}