Shop OBEX P1 Docs P2 Docs Learn Events
bs2 PLC analog problems ? usb to serial noise ? - Page 2 — Parallax Forums

bs2 PLC analog problems ? usb to serial noise ?

2»

Comments

  • CheeseCheese Posts: 29
    edited 2008-03-02 06:19
    To all !!

    Thank you for all the input!!
    Have been contacted By Parallax and the test results are in.

    The PLC manufactured by Lawicel HB of Sweden may itself be the source of the noise!....
    I am in the process of communicating with them and will keep you updated on the results.
    Hopes are that it can be resolved because the PLC other than that, seems to work GREAT!!
    www.lawicel-shop.se/shop/

    Thanks again: Gene

    Added 3/03 : PS. "THE PLC IS NOT THE PROBLEM !!"
    See next post

    Post Edited (Cheese) : 3/4/2008 3:44:54 AM GMT
  • CheeseCheese Posts: 29
    edited 2008-03-04 03:34
    Great News !!

    It works....................................
    Chris and Pat you were correct on it being a code issue !
    I went as far as I could go with my limited code experience and the demo code supplied.

    I contacted an engineer at the manufacturer and he was sure footed as they come. On a Sunday "SUNDAY NO LESS" he popped into the office and saw the problem we have been working on, ran some test and was confident it was NOT THE PLC He then forwarded some code to test and it works Great !
    The demo code that is in the manual supplied with the PLC is unstable.
    Chris Thanks,I will forward the new code to you.

    There is only 1 quirk and that is the ADC inputs marked 1234 are actually 4321.
    The oscilloscope, multimeter and PLC output are within +- .2mV throughout the scale "outstanding!" Tested it with the sensor, "perfect!"
    MUCH better than I need for the current project.

    THE PLC from Parallax and Lawicel is rock steady.
  • PatMPatM Posts: 72
    edited 2008-03-04 12:44
    Cool! Post the code so we can see what they did.
  • CheeseCheese Posts: 29
    edited 2008-03-04 13:34
    Pat:

    Sorry for the delay on posting the code,I wanted permission from lawicel Before I did.
    They replied before I thought to ask and said feel free to post it, Wow! talk about forward thinking.
    It just leaves you with that warm fuzzy feeling.

    Thank you again Lars for the code.....


    '{$STAMP  BS2P}        'STAMP directive (specifies a BS2P)
    '{$PBASIC 2.5}
    '{$PORT COM1}
    '
    '
    ' (C) LAWICEL AB, www.lawicel.se, Lars Wictorsson
    '
    ' Editor Version 2.4
    '
    ' Testing the PLC-EZ1 module with BS2P24
    '
    '
    Led1    CON  8
    Led2    CON  9
    Led3    CON  10
    Led4    CON  11
    Led5    CON  12
    Led6    CON  13
    Led7    CON  14
    Led8    CON  15
    inload    CON  1      ' Input  1
    digin1    CON  6
    digin2    CON  7
    anacs           CON     3
    
    INPUT 6
    INPUT 7
    
    result    VAR  Byte
    adresult  VAR  Word
    bOut      VAR  Byte
    
    bOut = 1
    '
    ' Set the Chip Select High on ADC and the Load signal of HC165
    '
    HIGH inload
    HIGH anacs
    
    overagain:
    '
    ' This part clocks in 8 digital inputs and display result binary
    '
    LOW inload
    PAUSE 1
    HIGH inload
    PAUSE 1
    SHIFTIN 2,0, LSBPRE, [noparse][[/noparse]result]
    DEBUG HOME, ISBIN8 result
    '
    ' This part reads in one of the 2 inputs that goes directly
    '
    
    IF (IN6=1) THEN DEBUG "0" : ELSE DEBUG "1"
    IF (IN7=1) THEN DEBUG "0" : ELSE DEBUG "1"
    '
    ' This part reads one ADC channel and prints out result in mV
    '
    LOW anacs
    PAUSE 1
    SHIFTOUT 4,0, MSBFIRST, [noparse][[/noparse]192]
    PAUSE 1
    HIGH anacs
    PAUSE 1
    LOW anacs
    PAUSE 1
    SHIFTIN 5,0, MSBPRE, [noparse][[/noparse]adresult\12]
    PAUSE 1
    HIGH anacs
    adresult = adresult * 10 / 78 * 10
    DEBUG "   ADC1=",SDEC adresult, "mV    ",CR
    '
    ' Toggle one Output
    '
    IF bOut = 1 THEN
     LOW Led2
     PAUSE 100
     HIGH Led2
    ELSEIF bOut = 2 THEN
     LOW Led1
     PAUSE 100
     HIGH Led1
    ELSEIF bOut = 3 THEN
     LOW Led4
     PAUSE 100
     HIGH Led4
    ELSEIF bOut = 4 THEN
     LOW Led3
     PAUSE 100
     HIGH Led3
    ELSEIF bOut = 5 THEN
     LOW Led6
     PAUSE 100
     HIGH Led6
    ELSEIF bOut = 6 THEN
     LOW Led5
     PAUSE 100
     HIGH Led5
    ELSEIF bOut = 7 THEN
     LOW Led8
     PAUSE 100
     HIGH Led8
    ELSEIF bOut = 8 THEN
     LOW Led7
     PAUSE 100
     HIGH Led7
    ENDIF
    
    PAUSE 50
    
    bOut = bOut + 1
    
    IF bOut = 9 THEN bOut = 1
    
    GOTO overagain
    
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2008-03-04 16:34
    I will take steps to see that the code for the PLC is updated to correct for the issues and use the code provided. Thanks for the follow-up post.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Chris Savage
    Parallax Tech Support
  • PatMPatM Posts: 72
    edited 2008-03-05 00:16
    SHIFTOUT·4,0,·MSBFIRST,·[noparse][[/noparse]192]
    192 is 11000000

    According to the PLC manual (wow, thats changed already! You guys are fast) thats 1 for start bit, 1 for the MSB of the channel bits (apparently the ADC channels connected are not 0-3 but 4-7), 00 to select the analog channel (00 = channel 4). So you're connecting the sensor to channel 4?

    I also see internal timer is being used again but the pause·apparently gives it enough time to complete a conversion.

    ·
  • CheeseCheese Posts: 29
    edited 2008-03-05 02:59
    Pat:
    That's correct
    The debug reads DEBUG " ADC1=",SDEC adresult, "mV ",CR But the input # on the PLC is 4
    There is the same magic on the input and output #'s However there is a piece of code in the manual that corrects that, but it uses valuable space.

    Post Edited (Cheese) : 3/5/2008 4:03:37 AM GMT
Sign In or Register to comment.