aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-08-28 18:33:50 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-08-28 18:33:50 +0300
commit33a2d098936cad4e7a8ca0c16187023a78fc4e43 (patch)
treecb53af6d0fb6c94ba7037db4d2e74c716a18b550
parentfe589d0e841bf3a6d7c3206a7e48c8e7ae9a91a8 (diff)
parent75e08ffe9aaeeca4b110a7f0a6bd6e47eb79a943 (diff)
downloadTango-33a2d098936cad4e7a8ca0c16187023a78fc4e43.tar.gz
Tango-33a2d098936cad4e7a8ca0c16187023a78fc4e43.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.c12
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c18
-rw-r--r--Software/Stubs Collection/technician view files/Dispensers.tpf189
-rw-r--r--Software/Stubs Collection/technician view files/Head and Dryer Temps.tpf153
-rw-r--r--Software/Stubs Collection/technician view files/thread driving.tpf101
8 files changed, 468 insertions, 13 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.c b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.c
index f62b85d9d..62df18294 100644
--- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.c
+++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.c
@@ -75,7 +75,7 @@ uint32_t Read_Speed_Sensor () // //The speed sensor, RMB14SC12BC59N , is 12bit S
return SpeedSensorResponseS.Speed;
}
-uint32_t Calculate_Speed_Sensor_Velocity( void ) // Call the function every 10mSec (read at least once every
+float Calculate_Speed_Sensor_Velocity( void ) // Call the function every 10mSec (read at least once every
{
/*
@@ -91,7 +91,7 @@ uint32_t Calculate_Speed_Sensor_Velocity( void ) // Call the function every 10mS
uint32_t Enc_Position = Read_Speed_Sensor();
uint32_t number_of_pulses;
- uint32_t velocity;
+ float velocity;
float temp;
// for CCW Enc_Position < Prev_Enc_Position
@@ -115,7 +115,7 @@ uint32_t Calculate_Speed_Sensor_Velocity( void ) // Call the function every 10mS
//uint32_t sampling_period_mSec = 10;//10mSec
- uint32_t pulses_per_rotation = 0x0FFF;// ???
+ uint32_t pulses_per_rotation = 4096; // 12 bit
/*
temp = 2 * 3.14159265; // 2 *Phi
@@ -134,17 +134,17 @@ uint32_t Calculate_Speed_Sensor_Velocity( void ) // Call the function every 10mS
*/
//------------------
temp = number_of_pulses * 8.9;//8.9 cm per round
- temp*=100; // to send [(cm/sec)*100]
+ //temp*=100; // to send [(cm/sec)*100]
temp /=pulses_per_rotation;//bits for round
temp /=0.01;//10mSec - sampling period
- velocity = (uint32_t)temp;
+ velocity = temp;
//----------------------
Prev_Enc_Position = Enc_Position;
- return velocity; //[(cm/sec)*100]
+ return velocity; //[(cm/sec)]
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.h
index d3eae1129..5662cb6f8 100644
--- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.h
+++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.h
@@ -90,6 +90,6 @@ typedef union
*/
-uint32_t Calculate_Speed_Sensor_Velocity( void );
+float Calculate_Speed_Sensor_Velocity( void );
#endif /* DRIVERS_SSI_COMM_SPEED_SENSOR_H_ */
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 9f515062d..2c9467b51 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -72,7 +72,7 @@ typedef struct MillisecMessage{
//uint32_t MotorPosition_Data[NUM_OF_MOTORS] = {0};
//bool MotorBusy_Data[NUM_OF_MOTORS] = {true};
uint32_t Dancer_Data[NUM_OF_DANCERS] = {0};
-uint32_t Speed_Data = 0;
+float Speed_Data = 0;
bool watchdogCriticalAlarm = false;
@@ -454,7 +454,7 @@ void MillisecTask(UArg arg0, UArg arg1)
assert (DeviceId < MAX_ADC_DEVICES);
return ADC_Data[DeviceId];
}*/
-uint32_t getSensorSpeedData(void)
+float getSensorSpeedData(void)
{
return Speed_Data;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h
index 77c3a5ef8..f2f7e7e77 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h
@@ -27,7 +27,7 @@ uint32_t getMotorSpeedData(int MotorId);
uint32_t getTemperatureSensorData(int SensorId);
uint32_t getADCData(int DeviceId);
*/
-uint32_t getSensorSpeedData(void);
+float getSensorSpeedData(void);
void MillisecInit(void);
void MillisecStop(void);
void MillisecStart(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index 92fd9549e..f97082365 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -73,7 +73,7 @@ uint32_t Winder_Prepare(void)
//JobTicket* JobTicket = JobDetails;
//float process_speed = JobTicket->processparameters->dyeingspeed;
- double ScrewSpeed = 500;//(process_speed*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].pulleyradius); // we will use pulley radius of the screw for this purpose, as of now
+ double ScrewSpeed = 1000;//(process_speed*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].pulleyradius); // we will use pulley radius of the screw for this purpose, as of now
//REPORT_MSG(ScrewSpeed, "Winder_Prepare");
/*
* 1. move home to the limit switch (check that the cart is clear from the limit switch, start moving, with acceleration to maximal speed. enable interrupt on the limit switch, upon interrupt stop.
@@ -203,19 +203,30 @@ uint32_t CalculateNumberOfSteps (uint32_t Counter, bool direction)
return NumberOfSteps;
}
+uint32_t wtick=0,prevwtick = 0;
+uint32_t wgap[100];
+uint32_t wgap_counter=0;
uint32_t ScrewDirectionChange(uint32_t deviceID, uint32_t BusyFlag)
{
uint32_t Steps;
-
-
if (BusyfirstCall)
{
BusyfirstCall = false;
return OK;
}
+ wtick++;
//ScrewCurrentDirection: false moves out, true moves home
if (BusyFlag == NOTBUSY)
{
+ if (wtick-prevwtick>10)
+ {
+ wgap[wgap_counter++] = wtick-prevwtick;
+ prevwtick = wtick;
+ if (wgap_counter >=99)
+ wgap_counter = 0;
+ }
+ else
+ return;
CalculateNumberOfSteps (DirectionChangeCounter++, ScrewCurrentDirection);
Steps = ScrewNumberOfSteps;
if (ScrewCurrentDirection == false)
@@ -298,6 +309,7 @@ uint32_t Winder_Presegment(void *JobDetails, uint32_t SegmentId)
// * 5. register motor nBusy callback. this callback will flip between move(traverse length, hardstop) and goto(0), with handline og the coneshape and adjusting maxspeed
ScrewNumberOfSteps = InternalWinderCfg.segmentoffsetpulses*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].microstep;
MotorMove (HARDWARE_MOTOR_TYPE__MOTO_SCREW,ScrewCurrentDirection,ScrewNumberOfSteps); //process: set point 0, set max speed, move to the specified length, return back.
+ wtick = 0;prevwtick = 0;
ScrewControlId = AddControlCallback(ScrewDirectionChange, eOneMillisecond,MotorControlGetnBusyState,(IfTypeMotors*0x100+HARDWARE_MOTOR_TYPE__MOTO_SCREW), HARDWARE_MOTOR_TYPE__MOTO_SCREW, 0);
// MotorSetSpeedWithCallback (HARDWARE_MOTOR_TYPE__MOTO_SCREW, screw_horizontal_speed,WinderPresegmentReady);
diff --git a/Software/Stubs Collection/technician view files/Dispensers.tpf b/Software/Stubs Collection/technician view files/Dispensers.tpf
new file mode 100644
index 000000000..621bb10d3
--- /dev/null
+++ b/Software/Stubs Collection/technician view files/Dispensers.tpf
@@ -0,0 +1,189 @@
+<?xml version="1.0"?>
+<MachineTechViewProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Items>
+ <TechItem xsi:type="DispenserItem">
+ <ID>dce78f33-c966-4848-8c6e-a4a01dbc7577</ID>
+ <Left>1300</Left>
+ <Top>219.86283185839545</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>2CC8E461-E91F-4D4C-A402-922477F06C87</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 1</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>2d03fc19-0502-43e1-a3ff-4012a612112b</ID>
+ <Left>1124</Left>
+ <Top>213.33185840707085</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>C8D8FE90-0375-44A2-A6D1-E997789E065C</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 2</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>81958374-3fa3-48b3-a554-5653fe1934b1</ID>
+ <Left>947</Left>
+ <Top>215.09734513272917</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>08ED9044-CAD6-4492-94B2-C07206E0164B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 3</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>8fead411-7198-4428-a364-e32f3035ed94</ID>
+ <Left>774</Left>
+ <Top>215.02212389379685</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>179F34BB-3252-4D3A-965C-E6EB43D6FE7C</ItemGuid>
+ <ColorNumber>-5952</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 4</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>31bfa89f-e64d-4a3b-8585-c4a1b2e5a139</ID>
+ <Left>601</Left>
+ <Top>212.836283185831</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>716B35CF-46E0-47D5-AF85-5233D212568F</ItemGuid>
+ <ColorNumber>-254</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 5</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>c2bff5f3-6dc9-4b07-87ba-9e3a5814804e</ID>
+ <Left>429</Left>
+ <Top>212.7035398230052</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>99528449-4D76-4874-AB95-522951560E01</ItemGuid>
+ <ColorNumber>-65281</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 6</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>071281a5-3569-4a62-8b68-7bea850a3c07</ID>
+ <Left>256</Left>
+ <Top>213.87610619467711</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>E8ED07E2-7C36-459C-B9E5-6A23A1E24F03</ItemGuid>
+ <ColorNumber>-16711681</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 7</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>7b703b9a-a626-4ae5-8e31-fa1cfe5718f4</ID>
+ <Left>82</Left>
+ <Top>214.544247787597</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>8A957565-4165-49F7-854D-D21F95FFBE1B</ItemGuid>
+ <ColorNumber>-16777216</ColorNumber>
+ <Speed>0</Speed>
+ <DisplayName>Dispenser 8</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>caca40a2-310c-452e-adcf-c28ee38f6bdc</ID>
+ <Left>1305</Left>
+ <Top>31.606194690259713</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1F0F907A-EC16-4386-AFC8-B2B156F2A822</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>af52d36f-27a2-4a31-8ceb-9c43fedbed22</ID>
+ <Left>1127</Left>
+ <Top>32.535398230081626</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A499E5E0-A812-4032-8F96-B38C6762C4BD</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>d40eada8-d22a-4521-bd2a-d998ed93106f</ID>
+ <Left>955</Left>
+ <Top>32.61946902653176</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>b2d6364d-8b5c-43d2-8838-927c85b017b1</ID>
+ <Left>774</Left>
+ <Top>31.960176991142362</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>3980e685-73b3-4af1-9593-9235be147322</ID>
+ <Left>596</Left>
+ <Top>32.889380530964274</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>19645882-6587-4A50-BD85-AF06617DC654</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>51465293-58d5-40a4-8302-81856f8b4f47</ID>
+ <Left>424</Left>
+ <Top>32.973451327414409</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>AF3FD56C-95BF-4DE1-8EDC-8426B0DB2A26</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>c2a8c5b2-891b-4f9f-862c-c1c294366c78</ID>
+ <Left>252</Left>
+ <Top>31.703539823006281</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>60DA9EA3-C8A6-4D41-8AD8-3EB1BAA79CC9</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>9618e441-8973-4e16-a90b-06ce5798bd29</ID>
+ <Left>80</Left>
+ <Top>31.787610619456416</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>EF66F95A-E166-4FA2-B1AF-D6F55621817A</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ </Items>
+</MachineTechViewProject> \ No newline at end of file
diff --git a/Software/Stubs Collection/technician view files/Head and Dryer Temps.tpf b/Software/Stubs Collection/technician view files/Head and Dryer Temps.tpf
new file mode 100644
index 000000000..04d0778e3
--- /dev/null
+++ b/Software/Stubs Collection/technician view files/Head and Dryer Temps.tpf
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<MachineTechViewProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Items>
+ <TechItem xsi:type="MonitorItem">
+ <ID>50bae43f-8b1a-4279-9238-b976a0c72af3</ID>
+ <Left>1530</Left>
+ <Top>193.19911504424795</Top>
+ <Width>169</Width>
+ <Height>181.37610619469029</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A8DB1D27-6B25-4FB4-A3F5-46A29BA51955</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>f0aa7aaf-2e14-48a3-8d4b-b233b3bfcbce</ID>
+ <Left>1260</Left>
+ <Top>65.526548672566378</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>AFB7B6F7-8FFB-4A7F-B814-04F0C163CAA1</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>7343ad5c-4cee-4d0f-a104-5da6249fe8f1</ID>
+ <Left>363</Left>
+ <Top>67.5530973451327</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>C8AB34C4-F921-4329-817A-7698DDAD01C6</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>908a6d87-fe2e-4c14-879d-3856bb274206</ID>
+ <Left>117</Left>
+ <Top>65.526548672566435</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>48E8DD1B-46EC-4576-B513-7E734503B6DA</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>57bc5d4d-fb99-41c5-9af5-c731b0d03662</ID>
+ <Left>1283</Left>
+ <Top>356.71681415928953</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A8DB1D27-6B25-4FB4-A3F5-46A29BA51955</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>a22ed98d-0f17-4a69-8d34-6407776d3eb4</ID>
+ <Left>1050</Left>
+ <Top>356.91150442477857</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D7585119-4A42-4370-8F1E-F3E62553E588</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>e13859a1-7d47-4a3a-a992-ac4a3b8aa64d</ID>
+ <Left>814</Left>
+ <Top>356.146017699116</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>098F7CAB-030C-46B0-B2B8-A85AF2253032</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>47621aae-0ff7-4e44-b4a6-61525c77a87d</ID>
+ <Left>580</Left>
+ <Top>354.54867256636624</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6C0C1AB0-3EE9-40D7-8424-A79436FBC804</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>f825564a-dd0c-4ed3-a64b-2c654f0a7f93</ID>
+ <Left>345</Left>
+ <Top>355.80088495576365</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>246C2551-5EFD-48E9-94F6-6313C5E5018F</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>898d03f1-7d52-4101-8d28-bff66a4ad66e</ID>
+ <Left>113</Left>
+ <Top>355.54867256637647</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>DACEBF90-E2B4-4CC9-A973-B8B429AA0089</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>f8419d75-282c-442d-b075-54c9b067d307</ID>
+ <Left>1285</Left>
+ <Top>600.40265486725536</Top>
+ <Width>225</Width>
+ <Height>191.50884955752213</Height>
+ <Angle>0</Angle>
+ <ItemGuid>9A3877B2-9F98-4A5C-9A93-DECA2836FA8A</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>88d1ed8f-752b-4eb0-9dad-b47aee34d5db</ID>
+ <Left>677</Left>
+ <Top>64.513274336283189</Top>
+ <Width>575</Width>
+ <Height>201.64159292035407</Height>
+ <Angle>0</Angle>
+ <ItemGuid>AFB7B6F7-8FFB-4A7F-B814-04F0C163CAA1</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <Min>0</Min>
+ <Max>300</Max>
+ <UseAutoRange>false</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="ControllerItem">
+ <ID>ba743caa-95f2-4b20-8c32-8e5943ada3fc</ID>
+ <Left>209</Left>
+ <Top>619.787610619469</Top>
+ <Width>380</Width>
+ <Height>194.54867256637203</Height>
+ <Angle>0</Angle>
+ <ItemGuid>78482AA4-3DF6-421F-944C-64328D3C3EF2</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <OptimalRangeMinimum>0</OptimalRangeMinimum>
+ <OptimalRangeMaximum>70</OptimalRangeMaximum>
+ <IsSetToDefault>true</IsSetToDefault>
+ </TechItem>
+ </Items>
+</MachineTechViewProject> \ No newline at end of file
diff --git a/Software/Stubs Collection/technician view files/thread driving.tpf b/Software/Stubs Collection/technician view files/thread driving.tpf
new file mode 100644
index 000000000..4e8aa638b
--- /dev/null
+++ b/Software/Stubs Collection/technician view files/thread driving.tpf
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<MachineTechViewProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Items>
+ <TechItem xsi:type="MonitorItem">
+ <ID>50bae43f-8b1a-4279-9238-b976a0c72af3</ID>
+ <Left>1530</Left>
+ <Top>193.19911504424795</Top>
+ <Width>169</Width>
+ <Height>181.37610619469029</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A8DB1D27-6B25-4FB4-A3F5-46A29BA51955</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>68eef943-2151-4df5-be61-044c3865606e</ID>
+ <Left>1272</Left>
+ <Top>85.7920353982301</Top>
+ <Width>213</Width>
+ <Height>224.94690265486725</Height>
+ <Angle>0</Angle>
+ <ItemGuid>96B89605-F999-43FE-A1CD-2645BFB33A36</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>6be024c6-3d1b-4267-9b77-44473aba56b7</ID>
+ <Left>1027</Left>
+ <Top>86.8053097345134</Top>
+ <Width>213</Width>
+ <Height>224.94690265486725</Height>
+ <Angle>0</Angle>
+ <ItemGuid>FC60060A-3736-4910-B41A-FF6DABDF0E9E</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>7c720f3b-00e1-49dd-92f9-fdd1e9686623</ID>
+ <Left>773</Left>
+ <Top>85.792035398229984</Top>
+ <Width>213</Width>
+ <Height>224.94690265486725</Height>
+ <Angle>0</Angle>
+ <ItemGuid>4CE6A82E-D841-4D33-BBB2-11F0743A441C</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>3ebd6759-521b-4ed1-a353-ee1ad7801f28</ID>
+ <Left>1074</Left>
+ <Top>419.15929203539832</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D126DB23-784B-4F0C-8F88-D89A65A7549F</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <UseAutoRange>false</UseAutoRange>
+ <Min>0</Min>
+ <Max>16384</Max>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>984b4126-3dda-4624-a79f-0646eb0e1358</ID>
+ <Left>590</Left>
+ <Top>418.14601769911519</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>10102BC3-0EAE-47FF-A8E5-8640780CAA3D</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <UseAutoRange>false</UseAutoRange>
+ <Min>0</Min>
+ <Max>16384</Max>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>8ebc3ab7-a02d-4b12-93b3-2563443831d7</ID>
+ <Left>109</Left>
+ <Top>417.13274336283189</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <UseAutoRange>false</UseAutoRange>
+ <Min>0</Min>
+ <Max>16384</Max>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>acafb268-5e97-4277-8dc8-173250a9e3f8</ID>
+ <Left>114</Left>
+ <Top>54.380530973451357</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>9FBC5460-BA59-486B-8D85-BD7D8A959F98</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <UseAutoRange>false</UseAutoRange>
+ <Min>0</Min>
+ <Max>100</Max>
+ </TechItem>
+ </Items>
+</MachineTechViewProject> \ No newline at end of file