Tuesday, April 10, 2012

Apr.10 Building

The lab in May needs Lego constructions to be programmed using IEC 61499.
http://www.nxtprograms.com/ projects are a good starting place to look for models to program with IEC 61499.  A modified NXT Robot Arm will be used in the May lab. Today built, modified, and tried 2 more nxtprogram projects. The Peg Sorter will also work for a quick lab exercise.  Turning "Forklist"  needs modification and may not be ready for May lab.


NXT Forklist that turns like NXT Robot Arm
So today modified the NXT Forklist to turn in circle like the NXT Robot Arm and go up and down. Only still need to go in and out and putting on a "car" may be the easiest solution.


NXT Peg Sorter 
This construction uses a light sensor and 2 motors. 
Modified so the peg pusher can be returned to it beginning "open" position.
Possible problem, if the motor stops, so white pegs are not free to fall through.
Need to test. Possibly change construction slightly.

Monday, March 26, 2012

Mar.26 Mechanical arm and claws

Looks like the first lab exercise is changing from the line follower to a mechanical arm because another institute deals with moving robots and automation. At the moment it seems the need for  hysteresis controller is gone.


Main Task:  Using IEC61499 and the Lego robot claw arm grab an object and drop into boxes of various heights. 
Use step-wise refinement:  
1. Motor movements (up/ down; open/close; right/left)
2. Safety shut-off: Stop with touch indicates down
3. Do something: 
    3a. Grab ball
    3b. Go up with ball
    3c. Move to right or left with ball
    3d. Release ball in a box
4.  Do all steps in 3 together:
    4a. using switches
    4b. Automatically


Advanced task: (from  NXTprograms Robot Arm)  Exchange two balls.


The NXTprograms Robot Arm is used as the base design.
It used 3 motors:
  • circling (left/right)
  • up/down
  • open/close of a claw
A touch sensor is included as a switch.


Added for the lab:
  • LED for indicator  
  • Touch sensor on arm attached to the claw motor to know when the robot arm is down


claw with touch sensor for down

3 claws are being tested
  1. NXTprograms Robot Arm  4 prong claw with 2 prongs fixed
    • simple 
    • fixed in one position on one side
  2. 3 Prong Claw (not sure original author)
  3. 4 Prong Claw with full motion  (land version of our team's waterbotics claw in Jan.)
    • must be fixed  on the side, so doesn't move 
    • uses gear train



Monday, March 12, 2012

Mar.12 Intro to IEC61499 try 2

Installation distracts from explaining IEC61499

Installation:  Using the Quick set-up from the Fordiac DevWiki
  • German and English versions have different things, not just different order 
  • with cygwin - chose a fast mirror .... its slow and is the bottleneck
    • often sooo long it end, but faster second time
  • posix make doesn't work if they forgot cygwin\bin and/or cmake\bin in path
    • test in command window if bash and cmake work
  • forte import using hg seemed to confuse both more than expected.
    • German version is much different than English, although both ways work.
      • German assumes you are using the development version of everything
      • English assume you get a version of IDE and Forte somewhere and says what to do with it.
      • Probably a how to get and hg for beginners section or link is needed
  • Got through SystemTest start 
  • And forte compile - hopefully later today

Tuesday, March 6, 2012

March 6 State-of -art 1499 tutorials

Looked ISA books  - nothing recent  Vyatkin and Zoitl

Googled: teaching event programming:
Cleanroom programming  related to white-box / black box programming






Thursday, February 16, 2012

Feb.16 Tacho Motor Encoder

Need interrupts to count the degrees from the tachometer in the motor.
If I understand right this is typically done by quad-code, 
where the signal changes indicated how much the motor has turned. 
Following are just good references found for now. 
The links will be needed for references if really help:
googled "quad-code for beginners" since that what I am.
Reviewing existing motor code:
motorAvrSetPwrBrake(cyg_uint32 pa_nOutputPort, cyg_int32 pa_nPercent, int pa_nBrake)
  • pa_nPercent is:
    • passed in as 32 bits, but ...
    • assigned to a 8 bit variable
    • sizes should match
  • ditto for   pa_nBrake
  • Also check for motor power between -100 and 100 should be in avr code. If in FB code, a new FB code could forget the check and bad data be sent.

Wednesday, February 15, 2012

Feb.15 Flip-Flop Tutorial 1st trial

Time to start testing the tutorials (text only - video coming)
Round 1
0. Pre-test and Brief IEC61499 overview
Used combination of  James Christensen's (AZ has permission) and Alios Zoitl's foils  and book figures. 
1. Existing TestSystem supplied with the release version of 4DIAC
Not everything was installed, so finished on my laptop. Changes made to 4DIAC 1.1 version
(post-test 1)  Understood it was event driven and the key models /views.
2. Flip-Flop tutorial using various ways to apply IEC61499 concepts and 4DIAC features to create a flip-flop. (WIll be long because repeat application ~5 ways)
Today. Finished install of forte and updated the Quick set-up page
Made it through creating the Flip-Flop application with existing block, but did not start System Configuration (time after set-up 1 hour)
Details update notes below.


Next: 2b.Flip-Flop using LMS as the target.


1. Existing tutorial system 
Quick-set-up page has not been reviewed probably in a year:
Changed so building Posix and other targets are in different sections now.
It would be good if there were links to set-up for other targets as they are added.


Flip-Flop tutorial: 
Summary:
  • It easy to miss details a beginner doesn't know
  • Video will hopefully help it go a bit faster
  • IEC61499 concepts need to pointed out when used
Specific Observations / Changes needed
  • Didn't know to open into the System
    • nor how to open System view
      • Interesting since both  file > new system  and so is  file > new application are from the menu bar, didn't even know he was in the wrong place at first.
  • System creation is followed by Import
    • add intro text because beginner thinks they need to both create and import system.
    • When asked: 
      • yes a video would be faster 
      • yes reading can be so slow you want to take a nap.
    • IDE feedback when looking for existing FBs:.
      • Without a FB search how should a beginner be told to look for existing FBs without having to explain alot more!?
      •  need a FB search in FB palette 
        • Was previously told this was planned, but no feature request - so added one
    • What are the differences between using F_AND and E_SWITCH to make a Flip-flop?
      • Why would a Elec.Eng. think to use an E_SWITCH without being told, since they using gates?
      • E_SWITCH description is confusing
    • Needs a next or back at the bottom of a section -didn't know where to go at end of a section.
    • IEC61499   things seen: Answered: INIT/INITO  
    • Tried to connect E_SWITCH.OUT to  both QI and IN of the "LED" FB at first


    Feb.15 Adaptors explained well

    Today adaptors were explained to me and a real example with a mechanical BotBall Lego arm shown. Maybe oversimplified, but in summary:


    Adaptors are like:
    Interfaces because they are used within other FBs
    Connectors because they can be used on the input or mirrored on the output of a FB 


    Their example opened questions about whether the LMS FB interfaces are really 1499 enough?

    • When should REQ and data inputs be used to set state like dir(ection).
    • When should an event like FWD / BK be used to set the direction state internally.
    • In part when the event will cause a state change.
    • Is it 1499 like enough, if the Event Control Chart has to look at the event && data for transition?

    The LMS FBs are SIFBs so no ECCs, but light calibration and line follower application could be.