Wednesday, October 24, 2012

Oct.24 15+Interviews Summarized

Here is a quick summary of all 17 Interviews ( 30-40 minutes)  on what is needed to teach IEC 61499 standard odistributed control and automation. Next: summarize by question/topic.


.


Wednesday, August 1, 2012

Aug.1 PLC Training

If PLC programmers and technicians will use the  IEC 61499  tutorials to extend their applications to include distributed control, then looking at PLC programming classes might be useful. This can help to know..

  • ...what they know to go from their known to their related unknown
    • ... what terms do they use, what standards methods do they follow, etc
Some PLC courses listed online:
These were found via ads, google, http://www.plctalk.net

  • http://www.ronbeaufort.com/main_frame_page.htm
  • http://www.ehow.com/how_6824747_learn-plc-programming.html
  • http://www.plctechnician.com/index.php
  • http://www.thelearningpit.com/lp/doc/index.htmlhttp://www.thelearningpit.com/lp/doc/index.html
  • http://www.koldwater.com
  • http://www2.tesc.edu/syllabus/current/CTR-212/syllabus_CTR-212.html
  • http://www.galilmc.com/learning/tutorials.php?type=plc
  • alternative PAC: http://www.opto22.com/site/learn.aspx

Wednesday, July 25, 2012

July 25 LMS USB distributed too

Mainly been working on a full set of FBs for the KIPR KISS CBC v2... 
So iRobotCreate FB tests are what comes next.


But now the new LMS USB communication is working and allows distributed applications.


FBDK with 2 Simulated LEDs. and checkbox. 
If the Box is checked the FBDK LED, and  LED 1 on 2 different LMSs turns on. 
Not yet working is LMS publishing results to other devices.


Here is a first try at an LMS distributed application::
Application on the resources FBDK, LMS1, LMS2 and a Routing Resouce 


Routing Resource Application


Wednesday, June 27, 2012

July 27 CBC forte implementation

Designing the interfaces for all CBC functions except for create functions (coming) produced interfaces amazingly similar to LMS FBs for similar sensors. Motors are quite different, but not the interface. So are general FB interfaces needed, where only the insides changes or are that can be used as templates?


Forte Specific questions:
Nothing major, but need to note 

  • WSTRING and STRING data inputs and String functions like strcmp. What type conversions are needed to get it to work.  [ask in fordiac forums]
  • RSP exported like a normal input event, but it isn't [forte issue - start outside of forums]
  • CBC shut_down_in(float delay)  Delay is a time, but is type float. 1499 uses "REAL" for float, (I thought), but get type problem. Plus really should use TIME for type even if have to translate it to float. [Assume seconds, but will test and work on translation]

Wednesday, May 30, 2012

May 29 4DIAC on CBC BotBall

Thanks to KIPR for providing the equipment to perform the following test IEC 61499 application mapped to 3 devices over WLAN while visiting.
Finally a truly distributed application for demonstrating a distributed standard.
CBC being Linux based made this simplier.


Test Case:
PC has START/STOP push buttons via  IN_EVENTs. When START is pressed, a touch sensor on CBC 1 is allowed to work. When touch sensor is pressed a motor  CBC1 runs and the action is mirrored on CBC2 by a motor also running. Release and both motor on CBC1 and CBC2 stop. If STOP on the PC is pressed then the touch sensor on CBC1 has no affect. Additionally a Servo motor moved on CBC 1.
Additional test: No PC: Download application and turn off PC. Touch turns on a motor on both CBC 1 and CBC2.



Saturday, May 5, 2012

May 5 Robotic Arm app

The real task is to:

  • Arm Down
  • Claw Close (pick-up cup or other object)
  • Arm Up
  • Turn 
  • Claw Open (drop object)
  • Turn back (reset)

Currently this application is divided into 3 parts corresponding the 3 motor functions:

  1. UP/ DOWN robotic arm until Touch pressed 
  2. OPEN / CLOSE claw
  3. Turn RT/LT 
Extra E_DELAYs are used to simulate when another motor would be active.

1. 
UP/ DOWN robotic arm until Touch pressed :

2. OPEN / CLOSE claw = 3. Turn RT/LT   except for motor and led port #s

Claw Close, Stop, wait until needed again, Open, Stop
Turn  Right, Stop, wait until needed again,  Left,  Stop

Currently looking into if this is best as Composite FB or Sub-system.
The generalized version has the problem that both motor plus and motor minus end with motor stop, from the last event output its not clear if its from forward or backward.

May 5 64-bit= technical difficulties

May labs will be done with a press simulation. Posts about planned lab apps were to be posted  after the lab, but no reason to wait now.


Lab computers are 64-bit Win7. We have a driver that works, basically the standard usbserial driver labeled as ecos. However for the usb ethserial communication we have not found the right combination. Lots of others have had problems, but none found match ours close enough to help. Even the students labtops are now 64-bit.


If anyone reading this knows how to get the RXTX dlls and jar file working under Win7  64-bita please post a comment here or answer my StackOverflow question.  It appears to be the right combination of path and 32-bit or 64 bit driver, java, RXTX files, which we have not yet found.


Additionally a USB ethserial version of PUBLISH / SUBSCRIBE FBs has been started using the new layered communication in FORTE.

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.

    Sunday, February 12, 2012

    Feb.8 Smaller Stacksize

    When the LMS regression test didn't have enough space, the Dec.30 Stacksize information was useful.
    The eCos stack was reduced from 4098(=800 in hex) to 1536(=600 in hex).
    Using the Dec.30 Stacksize info. that's space for :
    the 29 minimum eCos variables + 19 more INT spaces.


    The avr_ctl thread stacksize was reduced from 2048 to 1312:
    the 29 minimum eCos variables + 12 more INT spaces.


    The LMS regression test now works with touch sensor, 3 leds, a motor, 1 button test, and 3 buttons pressed in same test case.


    Patches submitted

    Tuesday, January 31, 2012

    Feb. 2 LMS in 4diac hg + Tutorials

    LMS FBs (forte C++ and FBs xml)) was pushed into the Fordiac mecurial hg for the upcoming 1.1 release. 
    Function Blocks: 
    Sensors: LC_LED, LC_LT, LC_TOUCH, LC_SOUND, LC_AD, 
         Other: L_M_PWR, L_BATTERY, L_BUTTON, L_OFF
        Utilitiy: FBs L_AD, L_LED, L_S_PORT  as well as L_avrctl 


    Tutorials: See  fordiac dev wiki 4DIAC Framework tutorials 
    Currently text and soon videos
    1. Supplied system - updated so the Publish/Subscribes are in the resource
    2. Flip-flop (on PC) - tutorial covers the IDE interface using different ways to implement the same application.
    3. Flip-flop (on LMS) - a first application with Lego NXT Brick, Sensors and motors


    Soon under LMS tutorials ...
    4. LMS Line Follower.  The tutorial text will be used as a script for a video version of the tutorials.


    Of course further FBs for more LMS HW is under development.