﻿<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="16.03" TargetType="AddOnInstructionDefinition" ContainsContext="true" Owner="Shawn" ExportDate="Mon Jan 18 08:43:54 2010" ExportOptions="Context">
<Controller Use="Context" Name="P21175_DRIVER_STATION">
<AddOnInstructionDefinitions Use="Context">
<AddOnInstructionDefinition Use="Target" Name="SEQ_TIMER" Revision="1.1" Vendor="SHAWN HATTEY" ExecutePrescan="false" ExecutePostscan="false" ExecuteEnableInFalse="false" CreatedDate="2007-07-17T13:15:44.981Z" CreatedBy="Not Available" EditedDate="2010-01-18T13:42:08.214Z" EditedBy="PARAMOUNT\Shawn"
 SoftwareRevision="v16.03">
<Description>
<![CDATA[SEQUENCE TIMER]]>
</Description>
<RevisionNote>
<![CDATA[FIXED LAST TIMES CLONE OF CURRENT TIMES]]>
</RevisionNote>
<AdditionalHelpText>
<![CDATA[TRACKS SEQUENCE TIME IN MILLI, SEC, MIN, AND HOURS
INSTRUCTION ALSO MONITORS THE PAST TIMES ]]>
</AdditionalHelpText>
<Parameters>
<Parameter Name="INPUT_TRIGGER" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true">
<DefaultData>00</DefaultData>
</Parameter>
<Parameter Name="CYCLE_TIME_MILLISECONDS" DataType="DINT" Usage="Output" Radix="Decimal" Required="true" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
<Parameter Name="CYCLE_TIME_SECS" DataType="DINT" Usage="Output" Radix="Decimal" Required="true" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
<Parameter Name="CYCLE_TIME_MINS" DataType="DINT" Usage="Output" Radix="Decimal" Required="true" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
<Parameter Name="CYCLE_TIME_HOURS" DataType="DINT" Usage="Output" Radix="Decimal" Required="true" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
<Parameter Name="LAST_MILLISECONDS" DataType="DINT" Usage="Output" Radix="Decimal" Required="false" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
<Parameter Name="LAST_SECS" DataType="DINT" Usage="Output" Radix="Decimal" Required="false" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
<Parameter Name="LAST_MINS" DataType="DINT" Usage="Output" Radix="Decimal" Required="false" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
<Parameter Name="LAST_HOURS" DataType="DINT" Usage="Output" Radix="Decimal" Required="false" Visible="true">
<DefaultData>00 00 00 00</DefaultData>
</Parameter>
</Parameters>
<LocalTags>
<LocalTag Name="ONESHOTS" DataType="DINT" Radix="Decimal">
<DefaultData>00 00 00 00</DefaultData>
</LocalTag>
<LocalTag Name="START_TIMER_TON" DataType="TIMER">
<DefaultData>00 00 00 00 E8 03 00 00 00 00 00 00</DefaultData>
</LocalTag>
<LocalTag Name="START_ZERO_WRITE_COMPLETE" DataType="BOOL" Radix="Decimal">
<DefaultData>00</DefaultData>
</LocalTag>
<LocalTag Name="START_TIMER" DataType="BOOL" Radix="Decimal">
<DefaultData>00</DefaultData>
</LocalTag>
<LocalTag Name="TIMER_ENABLED" DataType="BOOL" Radix="Decimal">
<DefaultData>00</DefaultData>
</LocalTag>
</LocalTags>
<Routines>
<Routine Name="Logic" Type="RLL">
<RLLContent>
<Rung Number="0" Type="N">
<Comment>
<![CDATA[All information provided "AS IS" - No Warranty or implied merchantability. ]]>
</Comment>
<Text>
<![CDATA[XIC(INPUT_TRIGGER)OTE(TIMER_ENABLED);]]>
</Text>
</Rung>
<Rung Number="1" Type="N">
<Comment>
<![CDATA[WRITE ALL ZEROS ON START OF INSTRUCTION
MOVE PREVIOUS VALUES INTO LAST TIMES]]>
</Comment>
<Text>
<![CDATA[XIC(TIMER_ENABLED)XIO(START_ZERO_WRITE_COMPLETE)XIO(START_TIMER)ONS(ONESHOTS.0)[MOV(CYCLE_TIME_MILLISECONDS,LAST_MILLISECONDS) ,MOV(CYCLE_TIME_SECS,LAST_SECS) ,MOV(CYCLE_TIME_MINS,LAST_MINS) ,MOV(CYCLE_TIME_HOURS,LAST_HOURS) ,MOV(0,CYCLE_TIME_MILLISECONDS) ,MOV(0,CYCLE_TIME_SECS) ,MOV(0,CYCLE_TIME_MINS) ,MOV(0,CYCLE_TIME_HOURS) ,MOV(1000,START_TIMER_TON.PRE) ,OTL(START_ZERO_WRITE_COMPLETE) ];]]>
</Text>
</Rung>
<Rung Number="2" Type="N">
<Text>
<![CDATA[XIC(TIMER_ENABLED)[XIC(START_ZERO_WRITE_COMPLETE) ,XIC(START_TIMER) ][OTE(START_TIMER) ,OTU(START_ZERO_WRITE_COMPLETE) ];]]>
</Text>
</Rung>
<Rung Number="3" Type="N">
<Text>
<![CDATA[XIC(TIMER_ENABLED)XIC(START_TIMER)XIO(START_TIMER_TON.DN)[TON(START_TIMER_TON,?,?) ,MOV(START_TIMER_TON.ACC,CYCLE_TIME_MILLISECONDS) ];]]>
</Text>
</Rung>
<Rung Number="4" Type="N">
<Text>
<![CDATA[XIC(TIMER_ENABLED)XIC(START_TIMER_TON.DN)ONS(ONESHOTS.1)ADD(1,CYCLE_TIME_SECS,CYCLE_TIME_SECS);]]>
</Text>
</Rung>
<Rung Number="5" Type="N">
<Text>
<![CDATA[XIC(TIMER_ENABLED)GEQ(CYCLE_TIME_SECS,60)[ONS(ONESHOTS.2) ADD(1,CYCLE_TIME_MINS,CYCLE_TIME_MINS) ,MOV(0,CYCLE_TIME_SECS) ];]]>
</Text>
</Rung>
<Rung Number="6" Type="N">
<Text>
<![CDATA[XIC(TIMER_ENABLED)GEQ(CYCLE_TIME_MINS,60)[ONS(ONESHOTS.3) ADD(1,CYCLE_TIME_HOURS,CYCLE_TIME_HOURS) ,MOV(0,CYCLE_TIME_MINS) ];]]>
</Text>
</Rung>
<Rung Number="7" Type="N">
<Comment>
<![CDATA[OVERFLOW WRITE ZEROS]]>
</Comment>
<Text>
<![CDATA[XIC(TIMER_ENABLED)[GEQ(CYCLE_TIME_MILLISECONDS,32000) ,GEQ(CYCLE_TIME_SECS,32000) ,GEQ(CYCLE_TIME_MINS,32000) ,GEQ(CYCLE_TIME_HOURS,24) ][MOV(0,CYCLE_TIME_MILLISECONDS) ,MOV(0,CYCLE_TIME_SECS) ,MOV(0,CYCLE_TIME_MINS) ,MOV(0,CYCLE_TIME_HOURS) ];]]>
</Text>
</Rung>
</RLLContent>
</Routine>
</Routines>
</AddOnInstructionDefinition>
</AddOnInstructionDefinitions>
</Controller>
</RSLogix5000Content>
