resolved merge conflicts

This commit is contained in:
aaronlong
2020-03-04 13:59:35 +00:00
7 changed files with 325 additions and 974 deletions

View File

@@ -1,11 +1,10 @@
image: python:3.7.3
options:
max-time: 1
pipelines:
default:
- step:
script:
- git submodule update --init
- git submodule
- python twincat_version_manager.py
- python check_fix_white_space.py
image: python:3.7.3
options:
max-time: 1
pipelines:
default:
- step:
script:
- git submodule update --init
- python twincat_version_manager.py
- python check_fix_white_space.py

View File

@@ -26,6 +26,8 @@ def fix_white_space(debug, fix_files):
for pathname in found_files:
dirty = False
had_TAB = False
had_trailing_WS = False
new_lines = []
if debug >= 1:
print("tab_with=%d pathname=%s" % (tab_width, pathname))
@@ -41,8 +43,16 @@ def fix_white_space(debug, fix_files):
had_crlf = 1 # LF
# Convert all TAB into SPACE
new_line = old_line.expandtabs(tabsize=tab_width)
# Strip of all trailing white space, including the CRLF
new_line = new_line.rstrip("\r\n ")
if new_line != old_line:
had_TAB = True
# Strip the CRLF
new_line = new_line.rstrip("\r\n")
# Strip trailing WS
tmp_line = new_line.rstrip(" ")
if tmp_line != new_line:
had_trailing_WS = True
new_line = tmp_line
if had_crlf == 2:
new_line = new_line + '\r\n'
elif had_crlf == 1:
@@ -61,7 +71,12 @@ def fix_white_space(debug, fix_files):
if debug >= 1:
print("pathname=%s dirty=%d" % (pathname, dirty))
if dirty:
incorrect_files[pathname] = True
if had_TAB and had_trailing_WS:
incorrect_files[pathname] = 'has white space damage'
elif had_TAB:
incorrect_files[pathname] = 'has TAB'
elif had_trailing_WS:
incorrect_files[pathname] = 'has trailing whitespace'
if fix_files:
file = open(pathname, 'w', newline='', encoding="iso-8859-1")
file.writelines(new_lines)
@@ -88,8 +103,10 @@ if __name__ == "__main__":
incorrect_files = fix_white_space(debug, fix_files)
if not fix_files:
for file in incorrect_files:
print("ERROR: '{}' has white space damage".format(file))
message = incorrect_files[file]
print("ERROR: '{}' {}".format(file,message))
if incorrect_files:
print('run %s --fix' % sys.argv[0])
exit(1)
except IOError as e:
print(e) # Likely no files found

View File

@@ -1,880 +1,8 @@
<?xml version="1.0"?>
<TcSmProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4023.119">
<DataTypes>
<DataType>
<Name GUID="{4C3FC5AC-D5AA-44C6-AC5A-159774BA0F6D}" Namespace="MC" TcBaseType="true" HideType="true" IecDeclaration="DWORD;">NCTOPLC_AXIS_REF_STATE</Name>
<BitSize>32</BitSize>
<SubItem>
<Name>Operational</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<SubItem>
<Name>Homed</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>1</BitOffs>
</SubItem>
<SubItem>
<Name>NotMoving</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>2</BitOffs>
</SubItem>
<SubItem>
<Name>InPositionArea</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>3</BitOffs>
</SubItem>
<SubItem>
<Name>InTargetPosition</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>4</BitOffs>
</SubItem>
<SubItem>
<Name>Protected</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>5</BitOffs>
</SubItem>
<SubItem>
<Name>ErrorPropagationDelayed</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>6</BitOffs>
</SubItem>
<SubItem>
<Name>HasBeenStopped</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>7</BitOffs>
</SubItem>
<SubItem>
<Name>HasJob</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>8</BitOffs>
</SubItem>
<SubItem>
<Name>PositiveDirection</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>9</BitOffs>
</SubItem>
<SubItem>
<Name>NegativeDirection</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>10</BitOffs>
</SubItem>
<SubItem>
<Name>HomingBusy</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>11</BitOffs>
</SubItem>
<SubItem>
<Name>ConstantVelocity</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>12</BitOffs>
</SubItem>
<SubItem>
<Name>Compensating</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>13</BitOffs>
</SubItem>
<SubItem>
<Name>ExtSetPointGenEnabled</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>14</BitOffs>
</SubItem>
<SubItem>
<Name>PhasingActive</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>15</BitOffs>
</SubItem>
<SubItem>
<Name>ExternalLatchValid</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>16</BitOffs>
</SubItem>
<SubItem>
<Name>NewTargetPos</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>17</BitOffs>
</SubItem>
<SubItem>
<Name>ContinuousMotion</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>19</BitOffs>
</SubItem>
<SubItem>
<Name>ControlLoopClosed</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>20</BitOffs>
</SubItem>
<SubItem>
<Name>CamTableQueued</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>21</BitOffs>
</SubItem>
<SubItem>
<Name>CamDataQueued</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>22</BitOffs>
</SubItem>
<SubItem>
<Name>CamScalingPending</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>23</BitOffs>
</SubItem>
<SubItem>
<Name>CmdBuffered</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>24</BitOffs>
</SubItem>
<SubItem>
<Name>PTPmode</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>25</BitOffs>
</SubItem>
<SubItem>
<Name>SoftLimitMinExceeded</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>26</BitOffs>
</SubItem>
<SubItem>
<Name>SoftLimitMaxExceeded</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>27</BitOffs>
</SubItem>
<SubItem>
<Name>DriveDeviceError</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>28</BitOffs>
</SubItem>
<SubItem>
<Name>MotionCommandsLocked</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>29</BitOffs>
</SubItem>
<SubItem>
<Name>IoDataInvalid</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>30</BitOffs>
</SubItem>
<SubItem>
<Name>Error</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>31</BitOffs>
</SubItem>
<Format Name="Short">
<Printf>%08x</Printf>
</Format>
<Format Name="Cpp">
<Printf>0x%08x</Printf>
</Format>
<Format Name="IEC">
<Printf>16#%08X</Printf>
</Format>
</DataType>
<DataType>
<Name GUID="{6EF49753-C72C-4F50-AA44-3C7498E76CFE}" Namespace="MC" TcBaseType="true" HideType="true" IecDeclaration="DWORD;">NCTOPLC_AXIS_REF_OPMODE</Name>
<BitSize>32</BitSize>
<SubItem>
<Name>OpModePosAreaMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeTargetPosMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>1</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeLoop</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>2</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeMotionMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>3</BitOffs>
</SubItem>
<SubItem>
<Name>OpModePEHTimeMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>4</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeBacklashCompensation</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>5</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeDelayedErrorReaction</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>6</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeModulo</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>7</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeSimulationAxis</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>8</BitOffs>
</SubItem>
<SubItem>
<Name>OpModePosLagMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>16</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeVeloLagMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>17</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeSoftLimitMinMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>18</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeSoftLimitMaxMonitoring</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>19</BitOffs>
</SubItem>
<SubItem>
<Name>OpModePosCorrection</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>20</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeAllowSlaveCommands</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>21</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeAllowExtSetAxisCommands</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>22</BitOffs>
</SubItem>
<SubItem>
<Name>ApplicationRequest</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>23</BitOffs>
</SubItem>
</DataType>
<DataType>
<Name GUID="{303D9411-849C-467F-8A4C-5C8CD0F3DD46}" Namespace="MC" TcBaseType="true" HideType="true">NCTOPLC_AXIS_REF_STATE2_FLAGS</Name>
<BitSize>32</BitSize>
<SubItem>
<Name>AvoidingCollision</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<Format Name="Short">
<Printf>%08x</Printf>
</Format>
<Format Name="Cpp">
<Printf>0x%08x</Printf>
</Format>
<Format Name="IEC">
<Printf>16#%08X</Printf>
</Format>
</DataType>
<DataType>
<Name GUID="{669F3788-48FD-42CF-8A59-2DA946853FB6}" Namespace="MC" TcBaseType="true" HideType="true">NCTOPLC_AXIS_REF_STATE2</Name>
<BitSize>32</BitSize>
<SubItem>
<Name>Value</Name>
<Type GUID="{18071995-0000-0000-0000-000000000007}">DWORD</Type>
<BitSize>32</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<SubItem>
<Name>Flags</Name>
<Type GUID="{303D9411-849C-467F-8A4C-5C8CD0F3DD46}" Namespace="MC">NCTOPLC_AXIS_REF_STATE2_FLAGS</Type>
<BitSize>32</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<Format Name="Short">
<Printf>%08x</Printf>
</Format>
<Format Name="Cpp">
<Printf>0x%08x</Printf>
</Format>
<Format Name="IEC">
<Printf>16#%08X</Printf>
</Format>
</DataType>
<DataType>
<Name GUID="{BA9D9D0F-1A4A-4A27-A19F-3032626A8491}" Namespace="MC" TcBaseType="true" HideType="true">NCTOPLC_AXIS_REF_CAMCOUPLINGSTATE</Name>
<BitSize>8</BitSize>
<SubItem>
<Name>CamActivationPending</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<SubItem>
<Name>CamDeactivationPending</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>1</BitOffs>
</SubItem>
<SubItem>
<Name>CamActive</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>2</BitOffs>
</SubItem>
<SubItem>
<Name>CamDataQueued</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>6</BitOffs>
</SubItem>
<SubItem>
<Name>CamScalingPending</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>7</BitOffs>
</SubItem>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-000000000039}" TcBaseType="true" HideType="true">UINTARR8</Name>
<BitSize>128</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000005}">UINT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>8</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{6A65C767-34E5-42BF-AD87-E1A503EAC7BE}" Namespace="MC" TcBaseType="true">NCTOPLC_AXIS_REF</Name>
<BitSize>2048</BitSize>
<SubItem>
<Name>StateDWord</Name>
<Type GUID="{4C3FC5AC-D5AA-44C6-AC5A-159774BA0F6D}" Namespace="MC">NCTOPLC_AXIS_REF_STATE</Type>
<BitSize>32</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<SubItem>
<Name>ErrorCode</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>32</BitOffs>
</SubItem>
<SubItem>
<Name>AxisState</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<Comment><![CDATA[Present State Of The Axis Movement (continuous axis):
0 = INACTIVE: axis has no job
1 = RUNNING: axis is executing a motion job
2 = OVERRIDE_ZERO: axis is executing a job but override is zero
3 = PHASE_VELOCONST: axis is moving at constant velocity
4 = PHASE_ACCPOS: axis is accelerating
5 = PHASE_ACCNEG: axis is decelerating
Slaves only:
11 = PREPHASE: slave axis is in a motion pre-phase
12 = SYNCHRONIZING: slave axis is synchronizing
13 = SYNCHRONOUS: slave axis is moving synchronously
External Setpoint Generation:
41 = EXTSETGEN_MODE1: external setpoint generation active
42 = EXTSETGEN_MODE2: internal and external setpoint gen. active
]]></Comment>
<BitSize>32</BitSize>
<BitOffs>64</BitOffs>
</SubItem>
<SubItem>
<Name>AxisModeConfirmation</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>96</BitOffs>
</SubItem>
<SubItem>
<Name>HomingState</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<Comment><![CDATA[Axis Homing Status:
0: idle
1: start homing
2: searching home switch
3: stopping on home switch
4: moving off home switch
5: searching sync pulse
6: stopping after homing
]]></Comment>
<BitSize>32</BitSize>
<BitOffs>128</BitOffs>
</SubItem>
<SubItem>
<Name>CoupleState</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<Comment><![CDATA[Axis Coupling Status:
0: axis is a single axis (not coupled)
1: axis is a master axis
2: axis is master and slave
3: axis is a slave axis
]]></Comment>
<BitSize>32</BitSize>
<BitOffs>160</BitOffs>
</SubItem>
<SubItem>
<Name>SvbEntries</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>192</BitOffs>
</SubItem>
<SubItem>
<Name>SafEntries</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>224</BitOffs>
</SubItem>
<SubItem>
<Name>AxisId</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>256</BitOffs>
</SubItem>
<SubItem>
<Name>OpModeDWord</Name>
<Type GUID="{6EF49753-C72C-4F50-AA44-3C7498E76CFE}" Namespace="MC">NCTOPLC_AXIS_REF_OPMODE</Type>
<BitSize>32</BitSize>
<BitOffs>288</BitOffs>
</SubItem>
<SubItem>
<Name>ActPos</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>320</BitOffs>
</SubItem>
<SubItem>
<Name>ModuloActPos</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>384</BitOffs>
</SubItem>
<SubItem>
<Name>ActiveControlLoopIndex</Name>
<Type GUID="{18071995-0000-0000-0000-000000000005}">UINT</Type>
<BitSize>16</BitSize>
<BitOffs>448</BitOffs>
</SubItem>
<SubItem>
<Name>ControlLoopIndex</Name>
<Type GUID="{18071995-0000-0000-0000-000000000005}">UINT</Type>
<BitSize>16</BitSize>
<BitOffs>464</BitOffs>
</SubItem>
<SubItem>
<Name>ModuloActTurns</Name>
<Type GUID="{18071995-0000-0000-0000-000000000009}">DINT</Type>
<BitSize>32</BitSize>
<BitOffs>480</BitOffs>
</SubItem>
<SubItem>
<Name>ActVelo</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>512</BitOffs>
</SubItem>
<SubItem>
<Name>PosDiff</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>576</BitOffs>
</SubItem>
<SubItem>
<Name>SetPos</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>640</BitOffs>
</SubItem>
<SubItem>
<Name>SetVelo</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>704</BitOffs>
</SubItem>
<SubItem>
<Name>SetAcc</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>768</BitOffs>
</SubItem>
<SubItem>
<Name>TargetPos</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>832</BitOffs>
</SubItem>
<SubItem>
<Name>ModuloSetPos</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>896</BitOffs>
</SubItem>
<SubItem>
<Name>ModuloSetTurns</Name>
<Type GUID="{18071995-0000-0000-0000-000000000009}">DINT</Type>
<BitSize>32</BitSize>
<BitOffs>960</BitOffs>
</SubItem>
<SubItem>
<Name>CmdNo</Name>
<Type GUID="{18071995-0000-0000-0000-000000000005}">UINT</Type>
<BitSize>16</BitSize>
<BitOffs>992</BitOffs>
</SubItem>
<SubItem>
<Name>CmdState</Name>
<Type GUID="{18071995-0000-0000-0000-000000000005}">UINT</Type>
<BitSize>16</BitSize>
<BitOffs>1008</BitOffs>
</SubItem>
<SubItem>
<Name>SetJerk</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>1024</BitOffs>
</SubItem>
<SubItem>
<Name>SetTorque</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>1088</BitOffs>
</SubItem>
<SubItem>
<Name>ActTorque</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>1152</BitOffs>
</SubItem>
<SubItem>
<Name>StateDWord2</Name>
<Type GUID="{669F3788-48FD-42CF-8A59-2DA946853FB6}" Namespace="MC">NCTOPLC_AXIS_REF_STATE2</Type>
<BitSize>32</BitSize>
<BitOffs>1216</BitOffs>
</SubItem>
<SubItem>
<Name>StateDWord3</Name>
<Type GUID="{18071995-0000-0000-0000-000000000007}">DWORD</Type>
<BitSize>32</BitSize>
<BitOffs>1248</BitOffs>
</SubItem>
<SubItem>
<Name>TouchProbeState</Name>
<Type GUID="{18071995-0000-0000-0000-000000000007}">DWORD</Type>
<BitSize>32</BitSize>
<BitOffs>1280</BitOffs>
</SubItem>
<SubItem>
<Name>TouchProbeCounter</Name>
<Type GUID="{18071995-0000-0000-0000-000000000007}">DWORD</Type>
<BitSize>32</BitSize>
<BitOffs>1312</BitOffs>
</SubItem>
<SubItem>
<Name>CamCouplingState</Name>
<Type GUID="{BA9D9D0F-1A4A-4A27-A19F-3032626A8491}" Namespace="MC">NCTOPLC_AXIS_REF_CAMCOUPLINGSTATE</Type>
<ArrayInfo>
<LBound>0</LBound>
<Elements>8</Elements>
</ArrayInfo>
<BitSize>64</BitSize>
<BitOffs>1344</BitOffs>
</SubItem>
<SubItem>
<Name>CamCouplingTableID</Name>
<Type GUID="{18071995-0000-0000-0000-000000000039}">UINTARR8</Type>
<BitSize>128</BitSize>
<BitOffs>1408</BitOffs>
</SubItem>
<SubItem>
<Name>ActTorqueDerivative</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>1536</BitOffs>
</SubItem>
<SubItem>
<Name>SetTorqueDerivative</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>1600</BitOffs>
</SubItem>
<SubItem>
<Name>ActPosWithoutPosCorrection</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>1792</BitOffs>
</SubItem>
<SubItem>
<Name>ActAcc</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>1856</BitOffs>
</SubItem>
<SubItem>
<Name>DcTimeStamp</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>1920</BitOffs>
</SubItem>
<Properties>
<Property>
<Name>NcStructType</Name>
<Value>2</Value>
</Property>
</Properties>
<Relations>
<Relation Priority="100">
<Type GUID="{429B767E-373B-40AE-BFA5-E1C08B444DF3}">NCAXLESTRUCT_TOPLC</Type>
</Relation>
<Relation Priority="100">
<Type GUID="{E8DA524A-605F-4879-82E6-B86EF6986572}">NCAXLESTRUCT_TOPLC2</Type>
</Relation>
<Relation Priority="100">
<Type GUID="{B507963E-69F3-4B64-BB8C-2BD7A560976D}">NCAXLESTRUCT_TOPLC3</Type>
</Relation>
<Relation Priority="100">
<Type GUID="{F794B740-82D7-4637-848E-4F74A711D038}">NCAXLESTRUCT_TOPLC4</Type>
</Relation>
<Relation Priority="100">
<Type GUID="{40BD39B0-C3EA-4F74-9F4F-5F1982786F7C}"></Type>
</Relation>
<Relation Priority="100">
<Type GUID="{40BD39B2-C3EA-4F74-9F4F-5F1982786F7C}"></Type>
</Relation>
<Relation Priority="100">
<Type GUID="{8CDE0C45-AB9D-42DB-BC94-1CF7521AB268}"></Type>
</Relation>
</Relations>
</DataType>
<DataType>
<Name GUID="{875D2B22-B7EB-497E-B933-0C004593CCF3}" Namespace="MC" TcBaseType="true" HideType="true" IecDeclaration="DWORD;">PLCTONC_AXIS_REF_CTRL</Name>
<BitSize>32</BitSize>
<SubItem>
<Name>Enable</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<SubItem>
<Name>FeedEnablePlus</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>1</BitOffs>
</SubItem>
<SubItem>
<Name>FeedEnableMinus</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>2</BitOffs>
</SubItem>
<SubItem>
<Name>HomingSensor</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>5</BitOffs>
</SubItem>
<SubItem>
<Name>AcceptBlockedDrive</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>8</BitOffs>
</SubItem>
<SubItem>
<Name>PlcDebugFlag</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>30</BitOffs>
</SubItem>
<SubItem>
<Name>NcDebugFlag</Name>
<Type GUID="{18071995-0000-0000-0000-000000000010}">BIT</Type>
<BitSize>1</BitSize>
<BitOffs>31</BitOffs>
</SubItem>
<Format Name="Short">
<Printf>%08x</Printf>
</Format>
<Format Name="Cpp">
<Printf>0x%08x</Printf>
</Format>
<Format Name="IEC">
<Printf>16#%08X</Printf>
</Format>
</DataType>
<DataType>
<Name GUID="{63A84524-72E3-41C8-BEAB-4CCE44690A13}" Namespace="MC" TcBaseType="true">PLCTONC_AXIS_REF</Name>
<BitSize>1024</BitSize>
<SubItem>
<Name>ControlDWord</Name>
<Type GUID="{875D2B22-B7EB-497E-B933-0C004593CCF3}" Namespace="MC">PLCTONC_AXIS_REF_CTRL</Type>
<BitSize>32</BitSize>
<BitOffs>0</BitOffs>
</SubItem>
<SubItem>
<Name>Override</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>32</BitOffs>
</SubItem>
<SubItem>
<Name>AxisModeRequest</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>64</BitOffs>
</SubItem>
<SubItem>
<Name>AxisModeDWord</Name>
<Type GUID="{18071995-0000-0000-0000-000000000008}">UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>96</BitOffs>
</SubItem>
<SubItem>
<Name>AxisModeLReal</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>128</BitOffs>
</SubItem>
<SubItem>
<Name>PositionCorrection</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>192</BitOffs>
</SubItem>
<SubItem>
<Name>ExtSetPos</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>256</BitOffs>
</SubItem>
<SubItem>
<Name>ExtSetVelo</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>320</BitOffs>
</SubItem>
<SubItem>
<Name>ExtSetAcc</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>384</BitOffs>
</SubItem>
<SubItem>
<Name>ExtSetDirection</Name>
<Type GUID="{18071995-0000-0000-0000-000000000009}">DINT</Type>
<BitSize>32</BitSize>
<BitOffs>448</BitOffs>
</SubItem>
<SubItem>
<Name>ExtControllerOutput</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>512</BitOffs>
</SubItem>
<SubItem>
<Name>GearRatio1</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>576</BitOffs>
</SubItem>
<SubItem>
<Name>GearRatio2</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>640</BitOffs>
</SubItem>
<SubItem>
<Name>GearRatio3</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>704</BitOffs>
</SubItem>
<SubItem>
<Name>GearRatio4</Name>
<Type GUID="{18071995-0000-0000-0000-00000000000E}">LREAL</Type>
<BitSize>64</BitSize>
<BitOffs>768</BitOffs>
</SubItem>
<SubItem>
<Name>MapState</Name>
<Type GUID="{18071995-0000-0000-0000-000000000030}">BOOL</Type>
<BitSize>8</BitSize>
<BitOffs>832</BitOffs>
</SubItem>
<SubItem>
<Name>PlcCycleControl</Name>
<Type GUID="{18071995-0000-0000-0000-000000000001}">BYTE</Type>
<BitSize>8</BitSize>
<BitOffs>840</BitOffs>
</SubItem>
<SubItem>
<Name>PlcCycleCount</Name>
<Type GUID="{18071995-0000-0000-0000-000000000001}">BYTE</Type>
<BitSize>8</BitSize>
<BitOffs>848</BitOffs>
</SubItem>
<Properties>
<Property>
<Name>NcStructType</Name>
<Value>1</Value>
</Property>
</Properties>
<Relations>
<Relation Priority="100">
<Type GUID="{60392271-8688-4F4C-B404-618DF106325D}">NCAXLESTRUCT_FROMPLC3</Type>
</Relation>
</Relations>
</DataType>
</DataTypes>
<Project ProjectGUID="{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}" Target64Bit="true" ShowHideConfigurations="#x106">
<System>
<Settings DontCheckTarget="130.246.50.191.1.1"/>
<Licenses>
<Target>
<ManualSelect>{3EBB9639-5FF3-42B6-8847-35C70DC013C8}</ManualSelect>
@@ -897,79 +25,7 @@ External Setpoint Generation:
<Instance Id="#x08502040" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcPath="tc_project_app\tc_project_app.tmc">
<Name>tc_project_app Instance</Name>
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
<Vars VarGrpType="1">
<Name>PlcTask Inputs</Name>
<Var>
<Name>GVL.axes[1].bLimitFwd</Name>
<Comment><![CDATA[////Axis Inputs///////]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>GVL.axes[1].bLimitBwd</Name>
<Comment><![CDATA[Backward limit switch]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>GVL.axes[1].bHomeSensor</Name>
<Comment><![CDATA[Reference siganl for homing]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>GVL.axes[1].bEncLAtch</Name>
<Comment><![CDATA[Reference index signal from inc. enconder]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>GVL.axes[1].Axis.NcToPlc</Name>
<Type GUID="{6A65C767-34E5-42BF-AD87-E1A503EAC7BE}" Namespace="MC">NCTOPLC_AXIS_REF</Type>
<SubVar>
<Name>AxisState</Name>
<Comment><![CDATA[Present State Of The Axis Movement (continuous axis):
0 = INACTIVE: axis has no job
1 = RUNNING: axis is executing a motion job
2 = OVERRIDE_ZERO: axis is executing a job but override is zero
3 = PHASE_VELOCONST: axis is moving at constant velocity
4 = PHASE_ACCPOS: axis is accelerating
5 = PHASE_ACCNEG: axis is decelerating
Slaves only:
11 = PREPHASE: slave axis is in a motion pre-phase
12 = SYNCHRONIZING: slave axis is synchronizing
13 = SYNCHRONOUS: slave axis is moving synchronously
External Setpoint Generation:
41 = EXTSETGEN_MODE1: external setpoint generation active
42 = EXTSETGEN_MODE2: internal and external setpoint gen. active
]]></Comment>
</SubVar>
<SubVar>
<Name>HomingState</Name>
<Comment><![CDATA[Axis Homing Status:
0: idle
1: start homing
2: searching home switch
3: stopping on home switch
4: moving off home switch
5: searching sync pulse
6: stopping after homing
]]></Comment>
</SubVar>
<SubVar>
<Name>CoupleState</Name>
<Comment><![CDATA[Axis Coupling Status:
0: axis is a single axis (not coupled)
1: axis is a master axis
2: axis is master and slave
3: axis is a slave axis
]]></Comment>
</SubVar>
</Var>
</Vars>
<Vars VarGrpType="2">
<Name>PlcTask Outputs</Name>
<Var>
<Name>GVL.axes[1].Axis.PlcToNc</Name>
<Type GUID="{63A84524-72E3-41C8-BEAB-4CCE44690A13}" Namespace="MC">PLCTONC_AXIS_REF</Type>
</Var>
</Vars>
<TaskPouOids>
<TaskPouOid Prio="20" OTCID="#x08502041"/>
</TaskPouOids>

View File

@@ -86,7 +86,6 @@ END_IF]]></ST>
<Implementation>
<ST><![CDATA[//
(* Program any sequence, safety or feature (if necessary) application specific in thsi section*)
//]]></ST>
</Implementation>
</Action>
@@ -240,7 +239,6 @@ END_FOR]]></ST>
<LineIds Name="MAIN.PROG">
<LineId Id="2" Count="0" />
<LineId Id="1" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="3" Count="0" />
</LineIds>
<LineIds Name="MAIN.RESTORE_POSITIONS">

View File

@@ -0,0 +1,248 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
<POU Name="FB_Axis_TEST" Id="{3bfca2b4-3b3f-48f2-9900-9d4cd3404e9e}" SpecialFunc="None">
<Declaration><![CDATA[// Test suite for the FB_Axis POU
{attribute 'call_after_init'}
FUNCTION_BLOCK FB_Axis_TEST EXTENDS tcUnit.FB_TestSuite
VAR
fbCommon: FB_tcUNIT_common;
iTargetAxis: INT := 1; // The <index> of the axis within GVL.axes[<index>] to test against.
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[// Declare methods defined in the FB_Axis_TEST POU to be included (executed) in the test suite
SetAxisControl_Enabled();
CheckAxisStatus_Moving();
SetAxisConfig_Acceleration();
CheckAxisStatus_NewPosition();
SetAxisControl_Velocity();
SetAxisInputs_bLimitFwd();]]></ST>
</Implementation>
<Method Name="CheckAxisStatus_Moving" Id="{f7dcf822-91ec-4555-918f-e2487353578a}">
<Declaration><![CDATA[METHOD CheckAxisStatus_Moving
VAR
Result: BOOL;
ExpectedResult: BOOL;
nCycle: UINT;
nMaxCycles: UINT := 30;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TEST('test_GIVEN_new_axis_position_WHEN_execute_move_THEN_axis_moves');
ExpectedResult := TRUE;
fbCommon.mPrepareDefaultMove(iTargetAxis);
fbCommon.mExecute(iTargetAxis);
Result := GVL.axes[iTargetAxis].status.bBusy;
IF nCycle > nMaxCycles OR ExpectedResult = Result THEN
AssertEquals(Expected := ExpectedResult,
Actual := Result,
Message := 'Axis is not moving.');
TEST_FINISHED();
ELSE
nCycle := nCycle + 1;
END_IF]]></ST>
</Implementation>
</Method>
<Method Name="CheckAxisStatus_NewPosition" Id="{604b9446-af57-41db-afac-f53f5b12cc2c}">
<Declaration><![CDATA[METHOD CheckAxisStatus_NewPosition
VAR
InitialValue: LREAL;
Result: LREAL;
ExpectedResult: LREAL;
nCycle: UINT;
nCycleMax: UINT := 100;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TEST('test_GIVEN_new_axis_position_set_WHEN_executed_THEN_axis_moves_to_new_position');
// Since the axis has state; a test might begin the position at some location set by
// a previous test. Therefore if we execute a move we should just check it's moved
// from the initial location not some initial default.
InitialValue := GVL.axes[iTargetAxis].config.fPosition;
ExpectedResult := InitialValue + 10;
GVL.axes[iTargetAxis].config.fPosition := ExpectedResult;
GVL.axes[iTargetAxis].control.eCommand := MotionFunctions.MoveAbsolute;
GVL.axes[iTargetAxis].control.bExecute := TRUE;
Result := GVL.axes[iTargetAxis].status.fActPosition;
IF nCycle > nCycleMax OR ExpectedResult = Result THEN
AssertEquals(Expected := ExpectedResult,
Actual := Result,
Message := 'fPosition of the axis is different.');
TEST_FINISHED();
ELSE
nCycle := nCycle + 1;
END_IF]]></ST>
</Implementation>
</Method>
<Method Name="SetAxisConfig_Acceleration" Id="{2efd2402-6ad3-455d-a703-347847c98522}">
<Declaration><![CDATA[METHOD SetAxisConfig_Acceleration
VAR
InitialValue: LREAL;
Result: LREAL;
ExpectedResult: LREAL;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TEST('test_GIVEN_new_axis_acceleration_set_WHEN_executed_THEN_new_axis_acceleration_set');
// example of direct GVL axis reference for assert.
ExpectedResult := tcUNIT_gvl.fDEFAULT_TARGET_ACCELERATION;
fbCommon.mPrepareDefaultMove(iTargetAxis);
Result := GVL.axes[1].config.fAcceleration;
AssertEquals(Expected := ExpectedResult,
Actual := Result,
Message := 'fAcceleration of the axis is different.');
TEST_FINISHED();]]></ST>
</Implementation>
</Method>
<Method Name="SetAxisControl_Enabled" Id="{749049e6-6152-4a23-ac76-75883bd089b7}">
<Declaration><![CDATA[METHOD SetAxisControl_Enabled
VAR
Result: BOOL;
ExpectedResult: BOOL;
nCycle: UINT;
nMaxCycles: UINT := 30;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TEST('test_GIVEN_prepare_default_move_WHEN_move_prepared_THEN_axis_enabled');
// example of test that requires multiple cycles to complete. Due to stateful behaviour of the axis structure.
ExpectedResult := TRUE;
GVL.axes[1].control.bEnable := ExpectedResult;
Result := GVL.axes[iTargetAxis].status.bEnabled;
IF nCycle > nMaxCycles OR ExpectedResult = Result THEN
AssertEquals(Expected := ExpectedResult,
Actual := Result,
Message := 'Axis is not enabled.');
TEST_FINISHED();
ELSE
nCycle := nCycle + 1;
END_IF
]]></ST>
</Implementation>
</Method>
<Method Name="SetAxisControl_Velocity" Id="{f87270b6-fb94-4214-bb13-17f22f6ab8f5}">
<Declaration><![CDATA[METHOD SetAxisControl_Velocity
VAR
InitialValue: LREAL;
Result: LREAL;
ExpectedResult: LREAL;
fDelta: REAL := 0.01;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TEST('test_GIVEN_new_axis_velocity_set_WHEN_executed_THEN_new_axis_velocity_set');
// Example of using a tcUNIT assert for a specific type (in this case LREAL).
InitialValue := GVL.axes[iTargetAxis].config.fVelocity;
ExpectedResult := InitialValue + 0.5;
GVL.Axes[iTargetAxis].config.fVelocity := ExpectedResult;
Result := GVL.axes[iTargetAxis].config.fVelocity;
AssertEquals_LREAL(Expected := ExpectedResult,
Actual := Result,
Delta := fDelta,
Message := 'fVelocity of the axis is different.');
TEST_FINISHED();
]]></ST>
</Implementation>
</Method>
<Method Name="SetAxisInputs_bLimitFwd" Id="{6304c3b1-9e72-403e-9ae2-a5609b1efe92}">
<Declaration><![CDATA[METHOD SetAxisInputs_bLimitFwd
VAR
Result: BOOL;
ExpectedResult: BOOL;
nCycle: UINT;
nMaxCycles: UINT := 30;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TEST('test_GIVEN_prepare_default_move_WHEN_bFwEnabled_prepared_enabled_THEN_bFwEnable_enabled');
ExpectedResult := TRUE;
GVL.axes[iTargetAxis].inputs.bLimitFwd := TRUE;
Result := GVL.axes[iTargetAxis].status.bFwEnabled;
IF nCycle > nMaxCycles OR ExpectedResult = Result THEN
AssertEquals(Expected := ExpectedResult,
Actual := Result,
Message := 'Axis bLimitFwd is not enabled.');
TEST_FINISHED();
ELSE
nCycle := nCycle + 1;
END_IF]]></ST>
</Implementation>
</Method>
<LineIds Name="FB_Axis_TEST">
<LineId Id="37" Count="0" />
<LineId Id="34" Count="0" />
<LineId Id="38" Count="1" />
<LineId Id="12" Count="0" />
<LineId Id="40" Count="0" />
<LineId Id="48" Count="0" />
</LineIds>
<LineIds Name="FB_Axis_TEST.CheckAxisStatus_Moving">
<LineId Id="127" Count="16" />
</LineIds>
<LineIds Name="FB_Axis_TEST.CheckAxisStatus_NewPosition">
<LineId Id="121" Count="21" />
<LineId Id="56" Count="0" />
</LineIds>
<LineIds Name="FB_Axis_TEST.SetAxisConfig_Acceleration">
<LineId Id="5" Count="0" />
<LineId Id="50" Count="1" />
<LineId Id="9" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="57" Count="0" />
<LineId Id="23" Count="0" />
<LineId Id="22" Count="0" />
<LineId Id="25" Count="4" />
<LineId Id="24" Count="0" />
</LineIds>
<LineIds Name="FB_Axis_TEST.SetAxisControl_Enabled">
<LineId Id="144" Count="16" />
<LineId Id="107" Count="0" />
</LineIds>
<LineIds Name="FB_Axis_TEST.SetAxisControl_Velocity">
<LineId Id="5" Count="0" />
<LineId Id="92" Count="1" />
<LineId Id="10" Count="0" />
<LineId Id="61" Count="2" />
<LineId Id="67" Count="0" />
<LineId Id="69" Count="0" />
<LineId Id="91" Count="0" />
<LineId Id="70" Count="1" />
<LineId Id="80" Count="0" />
<LineId Id="72" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="86" Count="0" />
</LineIds>
<LineIds Name="FB_Axis_TEST.SetAxisInputs_bLimitFwd">
<LineId Id="24" Count="0" />
<LineId Id="26" Count="0" />
<LineId Id="25" Count="0" />
<LineId Id="48" Count="2" />
<LineId Id="67" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="58" Count="6" />
<LineId Id="57" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
<POU Name="tcUNIT_STD_LIB_RUN" Id="{5e8cc903-e536-40be-a096-d6b305fbb618}" SpecialFunc="None">
<Declaration><![CDATA[// tcUNIT Standard Library tests: Add program to PLC task in order to run tcUNIT tests against the declared POU test suites
PROGRAM tcUNIT_STD_LIB_RUN
VAR
// Declare standard library POU tests to be run
fbFB_Axis: FB_Axis_TEST;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[TcUnit.RUN();]]></ST>
</Implementation>
<LineIds Name="tcUNIT_STD_LIB_RUN">
<LineId Id="45" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -29,6 +29,15 @@
<Compile Include="POUs\MAIN.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Test\app_tests\tcUNIT_APP_RUN.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Test\common\FB_tcUNIT_common.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Test\common\tcUNIT_GVL.TcGVL">
<SubType>Code</SubType>
</Compile>
<Compile Include="tc_mca_std_lib\DUTs\RestorePosition.TcDUT">
<SubType>Code</SubType>
</Compile>
@@ -118,6 +127,12 @@
<Compile Include="tc_mca_std_lib\POUs\VISUs\visuTextLinks.TcTLO">
<SubType>Code</SubType>
</Compile>
<Compile Include="Test\standard_library_tests\FB_Axis_TEST.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Test\standard_library_tests\tcUNIT_STD_LIB_RUN.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Test\app_tests\tcUNIT_APP_RUN.TcPOU">
<SubType>Code</SubType>
</Compile>
@@ -145,6 +160,7 @@
<Folder Include="tc_mca_std_lib\POUs\Hardware" />
<Folder Include="tc_mca_std_lib\POUs\Motion\Homing" />
<Folder Include="tc_mca_std_lib\POUs\VISUs" />
<Folder Include="Test\standard_library_tests" />
<Folder Include="Test\app_tests" />
<Folder Include="Test\common" />
<Folder Include="VISUs" />
@@ -247,8 +263,8 @@
<ProjectExtensions>
<PlcProjectOptions>
<XmlArchive>
<Data>
<o xml:space="preserve" t="OptionKey">
<Data>
<o xml:space="preserve" t="OptionKey">
<v n="Name">"&lt;ProjectRoot&gt;"</v>
<d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey">
<v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v>
@@ -299,15 +315,15 @@
</d>
<d n="Values" t="Hashtable" />
</o>
</Data>
<TypeList>
<Type n="Boolean">System.Boolean</Type>
<Type n="Hashtable">System.Collections.Hashtable</Type>
<Type n="Int32">System.Int32</Type>
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
<Type n="String">System.String</Type>
</TypeList>
</XmlArchive>
</Data>
<TypeList>
<Type n="Boolean">System.Boolean</Type>
<Type n="Hashtable">System.Collections.Hashtable</Type>
<Type n="Int32">System.Int32</Type>
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
<Type n="String">System.String</Type>
</TypeList>
</XmlArchive>
</PlcProjectOptions>
</ProjectExtensions>
</Project>