Master Robot Debugging
The following are the errors that occurred during debugging for the south robot as master
and the north robot as the slave:
There were several syntax errors where IF statements required a following THEN
statement.
THEN was added to the code where needed
The HELPFUL routine also had a small syntax error that was difficult to track down.
PAT was set equal to the letter “O”
Changed the “O” to a zero and then code worked fine.
Routine TALLPARTCHECK had too many characters in its name. Variables, routines
and arrays all must be 12 or less characters.
TALLPARTCHECK was changed to TALLCHECK. All the rest of the
names were short enough.
There were also several variables that were not initialized.
All variables were checked to insure that each was initialized
appropriately.
There were several communication errors in both the slave code and master code for the
go home routines
Each error was tracked down and fixed
Errors included wrong ports being watched
The master code used a then not DOUT[2] instead of then DOUT[2],
which caused the two robots to wait indefinitely.
The robot would try and pick a part too early.
The CONVEYOR routine was called too early, before INCREMENTER
was able to advance, causing the conveyor to lag the array.
CONVEYOR was moved after INCREMENTER
The most dramatic error during debugging was not code related. The robot attempted to
place one part on the table while one was already in that position. This caused the robot
to overload the servo motor and eventually stopped itself
The team forgot to move the part off the table and did not follow Dr.
Lindeke’s advice on covering both Emergency Stop buttons. The robot
had to be shut down and recalibrated in order to continue debugging.
If there were two parts in a row and the first part filled the slave’s pallet, it would signal
that it was full but after the master told it to get the next part. This caused the slave to
pick up the part.
Code was added to the slave program that would say they were full right
after they picked up the 8th part. This way the master would be aware of
the pallet being full before another part could reach the photo detector.
In the event of Case(2), where the top photo detector was on and the bottom photo
detector was off. The master robot would turn the red and orange light on. In order to
distinguish between two full pallets and a problem with the part Dr. Lindeke wanted the
lights to flash.
Code was modified in lines 142-149 which ran a repeat that turned the
orange and red light on and off a quarter of a second a time.
Concluding a successful run of the program, several output ports would remain activated,
which required the team having to manually deactivate each port.
In order to confirm that each of the output ports were turned off
automatically at the end of the program.
Dr. Lindeke asked that the team kept track of all parts palletized by slave robot
Code was added on line 202 and 222 to count the parts.
Slave Debugging
The following are the errors that occurred during debugging for the north robot as master
and the south robot as the slave:
At the start of the program, the robot would move to SF2 without asking for the amount
of items on the current pallet.
This was done by adding PALLETCOUNT to line 245 instead of only
calling it from line 270
The most problematic part of the debugging process was getting the robots to
communicate correctly. The first communication problem caused everything to stop. The
master robot was waiting indefinitely for a communication that never occurred.
Lines 237 to 243 were added for the initial handshake in the program.
The slave robot said that it was full too late causing the master to tell it to grab another
part, since the pallet was full the slave didn’t respond and the master was stuck in a loop
waiting for the slave to say it got the part.
In the picker routine an if statement was added in lines 51-54 that if the
robot was slave it would know that it was going to be a full pallet prior to
placing the part.
The most difficult problem to identify was after a pallet was filled and the operator
pushed the button. The controller would not accept the new input and had to be entered a
second time.
It was thought that the condition statements were calling
PALLETCOUNT. Code was added on lines 234-236 to disable all
conditions in the program. This did not fix the problem and it still
appeared that PALLETCOUNT was coming from the conditions.
Next, code was added in lines 244, 269, and 282-285 to display where
PALLETCOUNT was being called from. This would show on the display
exactly where PALLETCOUNT was being called from. This confirmed
that the reason the controller would ask twice for an input was that
PALLETCOUNT was called in from Condition[3] and then from line 270.
It turned out that PALLETCHECK enabled Condition[3] and would then
call the PALLETCOUNT from the condition. Code was added in line 73-
75 that only called PALLETCHECK only if the robot was master.
The team also had to do some physical debugging. There was a problem with the wiring
connected to slave DOUT[2]. When DOUT[2] was activated it caused interference that
caused the orange light relay to flicker.
Dr. Lindeke fixed it by crawling around and the floor and wiggling all the
wires, he also used the voltmeter to check the relay that turned the light
on.
There were also several variables that were not initialized.
All variables were checked to insure that they were initialized