EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: the hex instruction convert
From: <[email protected]>
To: <[email protected]>, <[email protected]>
Date: Tue, 16 Nov 2010 16:39:59 -0000

I think the stream device protocol converters %r and %<sum> will do what you want :

 

out “\x01\x01\x00\x01%4r%<sum>”;

 

But you would probably want to pass the address information as variables :

 

out $1 0x01 $2 $3 “%4r%<sum>”;

 

From: [email protected] [mailto:[email protected]] On Behalf Of Damek Yahto
Sent: 16 November 2010 03:06
To: [email protected]
Subject: the hex instruction convert

 

HI Tech-talk,I am trying to build an IOC to communicate with serial devices through the serial to Ethernet Device Server.

The serial device supports the streams of hex format.

The binary command format when using RS232 or RS485 is as follows:
Bytes    Meaning
1        Module address
1        Command number
1        Type number
1        Motor or Bank number
4        Value (MSB first!)
1        Checksum
total: 9 bytes

the checksum is calculated by adding up all bytes (including the module address byte) using
8-bit addition. Here is the examples to show how to do this:
    in C:
    unsigned char i, Checksum;
    unsigned char Command[9];

    //Set the “Command” array to the desired command
    Checksum = Command[0];
    for(i=1; i<8; i++)
        Checksum+=Command[i];
    Command[8]=Checksum; //insert checksum as last byte of the command
     //Now, send it to the module

I want to control the motor to rotate right  through the serial device.

Instruction:
Rotate right,   motor #1, velocity = 350
Binary:
Byte Index         0                1              2            3                  4               5                6                7               8
Function          Target-     Instruction   Type      Motor/         Operand     Operand      Operand     Operand      Checksum
                      address    Number                     Bank           Byte3        Byte2         Byte1          Byte0
Value (hex)        0x01       0x01          0x00       0x01            0x00         0x00            0x01           0x5e            0x62

By writing streamDevice protocol file(out'\x01\x01\x00\x01\x00\x00\x01\x5e\x62';),motor will rotate. Using "EDM" or "caput" to

input the variable,where do I do my processing (like calculating the Checksum and convert the velocity to four bytes long)? where

write my own parsing code in C?having other approaches. Could you give any example?

Thanks,

Yahto Dam
2010.11.16


--
Scanned by iCritical.



Replies:
Re: the hex instruction convert Dirk Zimoch
References:
the hex instruction convert Damek Yahto

Navigate by Date:
Prev: RE: the hex instruction convert Mark Rivers
Next: Cross-compilation missing library emmanuel_mayssat
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: the hex instruction convert Mark Rivers
Next: Re: the hex instruction convert Dirk Zimoch
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 16 Nov 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·