Thread: IDE for C embedded advanced editing

  1. #16
    Registered User jeffcobb's Avatar
    Join Date
    Dec 2009
    Location
    Henderson, NV
    Posts
    875
    Quote Originally Posted by cyberfish View Post
    MSVC support Windows CE, that's about it.

    I don't think you can do microcontroller programming with it.
    That's what I thought; at least that is all that is in my copy of VS 2008 Pro (and yes Mario I paid for it). I didn't know if the .NET stuff was actually becoming cross-platform in some fashion.
    C/C++ Environment: GNU CC/Emacs
    Make system: CMake
    Debuggers: Valgrind/GDB

  2. #17
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    Quote Originally Posted by jeffcobb View Post
    Mario: what embedded architectures does VS 2008 (or any version) support? ARM? Motorola 68K?
    The OP wasn't specific about the type of programming. Visual Studio 2008 supports C and C++. That should be enough for most purposes... unless he does program for a specific platform and wants to use features exclusive to that platform or is not programming in C or C++.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  3. #18
    Registered User jeffcobb's Avatar
    Join Date
    Dec 2009
    Location
    Henderson, NV
    Posts
    875
    Not really true. Unless it is doing cross-compiling, the C/C++ on Intel/Windows is rarely the same feature-set that is made available on embedded platforms. Granted when the OP mentioned "embedded" I jumped to the conclusion that the platform was non-Intel (most embedded platforms are != Intel) and unless he was using VS to simply edit code and something like GCC or other platform-specific compiler to build with, I did not see the value proposition of VS-anything. FWIW the last several embedded platforms I coded for had only partial C++ (std) and in some cases C lib support. None of the coders I worked with used IDEs either...nothing against them, they just didn't help in any meaningful way...
    C/C++ Environment: GNU CC/Emacs
    Make system: CMake
    Debuggers: Valgrind/GDB

  4. #19
    spurious conceit MK27's Avatar
    Join Date
    Jul 2008
    Location
    segmentation fault
    Posts
    8,300
    Quote Originally Posted by Mario F. View Post
    The OP wasn't specific about the type of programming. Visual Studio 2008 supports C and C++. That should be enough for most purposes...
    Yeah, using it's own own "windows-only" libraries, which should be good for most purposes, on a PC running MS windows.

    I'm no expert, but I don't think those are ever used on embedded devices. Or anything except, once again, a regular ol' windows PC.

    Quote Originally Posted by The OP
    Hello 'C friends', I'm Alessandro and I'm new in this board.

    I'm a software engineer from Italy and I'm an embedded developer.

    With embedded, the problem is that often you must change your developer IDE, and so I'm searching a good and flexible IDE.
    Not to mention the thread title:
    IDE for C embedded advanced editing

    I get the opinion he really just needs an editor, tho, not an editor-debugger-compiler-microwave-toaster, so maybe "IDE" is inappropriate.
    Last edited by MK27; 01-15-2010 at 03:17 PM.
    C programming resources:
    GNU C Function and Macro Index -- glibc reference manual
    The C Book -- nice online learner guide
    Current ISO draft standard
    CCAN -- new CPAN like open source library repository
    3 (different) GNU debugger tutorials: #1 -- #2 -- #3
    cpwiki -- our wiki on sourceforge

  5. #20
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    True enough. Visual Studio is not a good option.

    edit: Come to think of it, it wasn't my brightest moment.
    Last edited by Mario F.; 01-15-2010 at 03:29 PM.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  6. #21
    Registered User
    Join Date
    Jul 2007
    Posts
    131
    You can always use just IDE, you don't have to use compiler and linker distributed with it.

  7. #22
    Registered User
    Join Date
    Jul 2007
    Posts
    131
    You don't have to use compiler and linker distributed with Visual Studio. Just change configs and you're ready for your Motorola.

    EDIT: wtf is that previous version of my writing doing there?
    Last edited by fronty; 01-16-2010 at 04:03 PM.

  8. #23
    Registered User Codeplug's Avatar
    Join Date
    Mar 2003
    Posts
    4,981
    I've been using Visual Studio + Visual Assist for all my C/C++ development, for ~10 years now. Mostly for non-Microsoft platforms at work - building and debugging were done outside of the IDE.

    gg

  9. #24
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    You are all missing the point.

    Visual Studio is not a good option. You must say it.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  10. #25
    Registered User Codeplug's Avatar
    Join Date
    Mar 2003
    Posts
    4,981
    Why use something free or purchase a single product, when you could purchase two products and be as happy as I am!?

    (edit I think VS Express doesn't do plugins)

    gg

  11. #26
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    Nope. Why I suggested Professional. It could theoretically be the Standard edition, but nothing like access to the Visual Studio Shell to truly change the IDE to one's liking (and because most plugins target it, I guess).
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  12. #27
    Registered User
    Join Date
    Dec 2006
    Location
    Canada
    Posts
    3,229
    I didn't know if the .NET stuff was actually becoming cross-platform in some fashion.
    Cross all Microsoft platforms (Windows and Windows and Windows?) is what they are aiming at. But not even that. WinCE has only a subset. Why would you need a virtual machine for this is beyond me. It's like unportable Java.

    I guess the only problem with Java is it's not Microsoft.

  13. #28
    Registered User jeffcobb's Avatar
    Join Date
    Dec 2009
    Location
    Henderson, NV
    Posts
    875
    Quote Originally Posted by cyberfish View Post
    Cross all Microsoft platforms (Windows and Windows and Windows?) is what they are aiming at. But not even that. WinCE has only a subset. Why would you need a virtual machine for this is beyond me. It's like unportable Java.

    I guess the only problem with Java is it's not Microsoft.
    At the risk of drift, I have looked into Mono on occasion as my work sends me in a cross-platform direction from time to time but Mono always seems to be 2 versions behind the Microsoft offerings, through no fault of their own. So far, all non-MS platforms lag to the point of making .NET a non-viable alternative for me.
    C/C++ Environment: GNU CC/Emacs
    Make system: CMake
    Debuggers: Valgrind/GDB

  14. #29
    Registered User jeffcobb's Avatar
    Join Date
    Dec 2009
    Location
    Henderson, NV
    Posts
    875
    Quote Originally Posted by Codeplug View Post
    Why use something free or purchase a single product, when you could purchase two products and be as happy as I am!?

    (edit I think VS Express doesn't do plugins)

    gg
    Are you happy?
    C/C++ Environment: GNU CC/Emacs
    Make system: CMake
    Debuggers: Valgrind/GDB

  15. #30
    Registered User
    Join Date
    Jan 2010
    Posts
    4
    Quote Originally Posted by Mario F. View Post
    I didn't ask what it's good for. Everyone knows. I wanted to know why you need it in your IDE?

    I know of no type of programming that demands this as a feature you can't live with, as it seems to be the case. On all my years of programming, any need for column editing has been episodic at best. And easily dealt with an external editor and copy/paste. For this to be one of your most important requirements, must be you are doing some type of programming or using some type of programming language I never heard of before.
    I think, you have never work on embedded system for INDUSTRIAL AUTOMATION.

    For example this is the source code that I'm editing now:

    Code:
    #define MODULE MACHINE_IO_MODULE
    #include "axes.h"
    
    /* MASTER */
    input Axis_0_0_Upper_Max_Backward;
    input Axis_0_0_Upper_Collision_Axis_0_1;
    input Axis_0_0_Lower_Max_Backward;
    input Axis_0_0_Lower_Collision_Axis_0_1;
    input Axis_0_1_Upper_Collision_Axis_0_2;
    input Axis_0_1_Lower_Collision_Axis_0_2;
    input Axis_0_2_Upper_Collision_Axis_0_3;
    input Axis_0_2_Lower_Collision_Axis_0_3;
    
    input Axis_0_3_Upper_Collision_Axis_0_4;
    input Axis_0_3_Lower_Collision_Axis_0_4;
    input Axis_0_4_Upper_Max_Forward;
    input Axis_0_4_Lower_Max_Forward;
    input Axis_1_0_Upper_Max_Backward;
    input Axis_1_0_Upper_Collision_Axis_1_1;
    input Axis_1_0_Lower_Max_Backward;
    input Axis_1_0_Lower_Collision_Axis_1_1;
    
    input Axis_1_1_Upper_Collision_Axis_1_2;
    input Axis_1_1_Lower_Collision_Axis_1_2;
    input Axis_1_2_Upper_Collision_Axis_1_3;
    input Axis_1_2_Lower_Collision_Axis_1_3;
    input Axis_1_3_Upper_Collision_Axis_1_4;
    input Axis_1_3_Lower_Collision_Axis_1_4;
    input Axis_1_4_Upper_Max_Forward;
    input Axis_1_4_Lower_Max_Forward;
    
    input Axis_2_0_Upper_Max_Backward;
    input Axis_2_0_Upper_Collision_Axis_2_1;
    input Axis_2_0_Lower_Max_Backward;
    input Axis_2_0_Lower_Collision_Axis_2_1;
    input Axis_2_1_Upper_Collision_Axis_2_2;
    input Axis_2_1_Lower_Collision_Axis_2_2;
    input Axis_2_2_Upper_Collision_Axis_2_3;
    input Axis_2_2_Lower_Collision_Axis_2_3;
    
    /* SLAVE 0 */
    input Axis_2_3_Upper_Collision_Axis_2_4;
    input Axis_2_3_Lower_Collision_Axis_2_4;
    input Axis_2_4_Upper_Collision_Axis_2_5;
    input Axis_2_4_Lower_Collision_Axis_2_5;
    input Axis_2_5_Upper_Max_Forward;
    input Axis_2_5_Lower_Max_Forward;
    input Axis_3_0_Upper_Max_Backward;
    input Axis_3_0_Upper_Collision_Axis_3_1;
    
    input Axis_3_0_Lower_Max_Backward;
    input Axis_3_0_Lower_Collision_Axis_3_1;
    input Axis_3_1_Upper_Collision_Axis_3_2;
    input Axis_3_1_Lower_Collision_Axis_3_2;
    input Axis_3_2_Upper_Max_Forward;
    input Axis_3_2_Lower_Max_Forward;
    input Axis_0_0_Upper_Fuse;
    input Axis_0_0_Lower_Fuse;
    
    input Axis_0_1_Upper_Fuse;
    input Axis_0_1_Lower_Fuse;
    input Axis_0_2_Upper_Fuse;
    input Axis_0_2_Lower_Fuse;
    input Axis_0_3_Upper_Fuse;
    input Axis_0_3_Lower_Fuse;
    input Axis_0_4_Upper_Fuse;
    input Axis_0_4_Lower_Fuse;
    
    input Axis_1_0_Upper_Fuse;
    input Axis_1_0_Lower_Fuse;
    input Axis_1_1_Upper_Fuse;
    input Axis_1_1_Lower_Fuse;
    input Axis_1_2_Upper_Fuse;
    input Axis_1_2_Lower_Fuse;
    input Axis_1_3_Upper_Fuse;
    input Axis_1_3_Lower_Fuse;
    
    
    /* SLAVE 1 */
    input Axis_1_4_Upper_Fuse;
    input Axis_1_4_Lower_Fuse;
    input Axis_2_0_Upper_Fuse;
    input Axis_2_0_Lower_Fuse;
    input Axis_2_1_Upper_Fuse;
    input Axis_2_1_Lower_Fuse;
    input Axis_2_2_Upper_Fuse;
    input Axis_2_2_Lower_Fuse;
    
    input Axis_2_3_Upper_Fuse;
    input Axis_2_3_Lower_Fuse;
    input Axis_2_4_Upper_Fuse;
    input Axis_2_4_Lower_Fuse;
    input Axis_2_5_Upper_Fuse;
    input Axis_2_5_Lower_Fuse;
    input Axis_3_0_Upper_Fuse;
    input Axis_3_0_Lower_Fuse;
    
    input Axis_3_1_Upper_Fuse;
    input Axis_3_1_Lower_Fuse;
    input Axis_3_2_Upper_Fuse;
    input Axis_3_2_Lower_Fuse;
    input Creaser_0_0_Lower;
    input Puncher_0_0_Lower;
    input Creaser_0_1_Lower;
    input Puncher_0_1_Lower;
    
    input Creaser_0_2_Lower;
    input Puncher_0_2_Lower;
    input Creaser_0_3_Lower;
    input Puncher_0_3_Lower;
    input Creaser_0_4_Lower;
    input Puncher_0_4_Lower;
    input Creaser_1_0_Lower;
    input Puncher_1_0_Lower;
    
    /* SLAVE 2 */
    input Creaser_1_1_Lower;
    input Puncher_1_1_Lower;
    input Creaser_1_2_Lower;
    input Puncher_1_2_Lower;
    input Creaser_1_3_Lower;
    input Puncher_1_3_Lower;
    input Creaser_1_4_Lower;
    input Puncher_1_4_Lower;
    
    input Creaser_2_0_Lower;
    input Puncher_2_0_Lower;
    input Creaser_2_1_Lower;
    input Puncher_2_1_Lower;
    input Creaser_2_2_Lower;
    input Puncher_2_2_Lower;
    input Creaser_2_3_Lower;
    input Puncher_2_3_Lower;
    
    input Creaser_2_4_Lower;
    input Puncher_2_4_Lower;
    input Creaser_2_5_Lower;
    input Puncher_2_5_Lower;
    input Puncher_3_0_Forward;
    input Puncher_3_1_Forward;
    input Puncher_3_2_Forward;
    input Puncher_3_0_Backward;
    
    input Puncher_3_1_Backward;
    input Puncher_3_2_Backward;
    input Free_Input_3_26;
    input Free_Input_3_27;
    input Free_Input_3_28;
    input Free_Input_3_29;
    input Free_Input_3_30;
    input Free_Input_3_31;
    
    
    /* SLAVE 3 */
    input Main_Emergency;
    input DC_24_Motor_0_Line;
    input DC_24_Motor_1_Line;
    input DC_24_Motor_2_Line;
    input DC_24_Motor_3_Line;
    input Auxiliary;
    input Air_Pressure_Alarm;
    input Free_Input_4_07;
    
    /******************************************************************************/
    
    BOARD const Board[] =
    {
    	/*** MASTER ***/
        INPUT (Axis_0_0_Upper_Max_Backward,          "56SQ1",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_0_Upper_Collision_Axis_0_1,    "56SQ2",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_0_Lower_Max_Backward,          "56SQ3",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_0_Lower_Collision_Axis_0_1,    "56SQ4",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_1_Upper_Collision_Axis_0_2,    "56SQ5",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_1_Lower_Collision_Axis_0_2,    "56SQ6",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_2_Upper_Collision_Axis_0_3,    "56SQ7",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_2_Lower_Collision_Axis_0_3,    "56SQ8",             NORMALLY_CLOSED,                  0 ,                   0),
    
        INPUT (Axis_0_3_Upper_Collision_Axis_0_4,    "57SQ1",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_3_Lower_Collision_Axis_0_4,    "57SQ2",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_4_Upper_Max_Forward,           "57SQ3",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_4_Lower_Max_Forward,           "57SQ4",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_0_Upper_Max_Backward,          "57SQ5",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_0_Upper_Collision_Axis_1_1,    "57SQ6",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_0_Lower_Max_Backward,          "57SQ7",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_0_Lower_Collision_Axis_1_1,    "57SQ8",             NORMALLY_CLOSED,                  0 ,                   0),
    
        INPUT (Axis_1_1_Upper_Collision_Axis_1_2,    "58SQ1",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_1_Lower_Collision_Axis_1_2,    "58SQ2",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_2_Upper_Collision_Axis_1_3,    "58SQ3",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_2_Lower_Collision_Axis_1_3,    "58SQ4",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_3_Upper_Collision_Axis_1_4,    "58SQ5",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_3_Lower_Collision_Axis_1_4,    "58SQ6",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_4_Upper_Max_Forward,           "58SQ7",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_1_4_Lower_Max_Forward,           "58SQ8",             NORMALLY_CLOSED,                  0 ,                   0),
    
        INPUT (Axis_2_0_Upper_Max_Backward,          "59SQ1",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_0_Upper_Collision_Axis_2_1,    "59SQ2",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_0_Lower_Max_Backward,          "59SQ3",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_0_Lower_Collision_Axis_2_1,    "59SQ4",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_1_Upper_Collision_Axis_2_2,    "59SQ5",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_1_Lower_Collision_Axis_2_2,    "59SQ6",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_2_Upper_Collision_Axis_2_3,    "59SQ7",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_2_Lower_Collision_Axis_2_3,    "59SQ8",             NORMALLY_CLOSED,                  0 ,                   0),
    
        OUTPUT (AXIS_0_0_UPPER_FORWARD),
        OUTPUT (AXIS_0_0_UPPER_BACKWARD),
        OUTPUT (AXIS_0_0_UPPER_SPEED),
        OUTPUT (AXIS_0_0_LOWER_FORWARD),
        OUTPUT (AXIS_0_0_LOWER_BACKWARD),
        OUTPUT (AXIS_0_0_LOWER_SPEED),
        OUTPUT (AXIS_0_1_UPPER_FORWARD),
        OUTPUT (AXIS_0_1_UPPER_BACKWARD),
    
        OUTPUT (AXIS_0_1_UPPER_SPEED),
        OUTPUT (AXIS_0_1_LOWER_FORWARD),
        OUTPUT (AXIS_0_1_LOWER_BACKWARD),
        OUTPUT (AXIS_0_1_LOWER_SPEED),
        OUTPUT (AXIS_0_2_UPPER_FORWARD),
        OUTPUT (AXIS_0_2_UPPER_BACKWARD),
        OUTPUT (AXIS_0_2_UPPER_SPEED),
        OUTPUT (AXIS_0_2_LOWER_FORWARD),
    
        OUTPUT (AXIS_0_2_LOWER_BACKWARD),
        OUTPUT (AXIS_0_2_LOWER_SPEED),
        OUTPUT (AXIS_0_3_UPPER_FORWARD),
        OUTPUT (AXIS_0_3_UPPER_BACKWARD),
        OUTPUT (AXIS_0_3_UPPER_SPEED),
        OUTPUT (AXIS_0_3_LOWER_FORWARD),
        OUTPUT (AXIS_0_3_LOWER_BACKWARD),
        OUTPUT (AXIS_0_3_LOWER_SPEED),
    
        OUTPUT (AXIS_0_4_UPPER_FORWARD),
        OUTPUT (AXIS_0_4_UPPER_BACKWARD),
        OUTPUT (AXIS_0_4_UPPER_SPEED),
        OUTPUT (AXIS_0_4_LOWER_FORWARD),
        OUTPUT (AXIS_0_4_LOWER_BACKWARD),
        OUTPUT (AXIS_0_4_LOWER_SPEED),
        OUTPUT (AXIS_1_0_UPPER_FORWARD),
        OUTPUT (AXIS_1_0_UPPER_BACKWARD),
    
        ENCODER (IF("Asse 0.0 sup.", "Axe 0.0 superieur"),  "140X1",   207,   500, TRUE),
        ENCODER (IF("Asse 0.0 inf.", "Axe 0.0 inferieur"),  "140X2",   207,   500, TRUE),
        ENCODER (IF("Asse 0.1 sup.", "Axe 0.1 superieur"),  "140X3",   207,   500, TRUE),
        ENCODER (IF("Asse 0.1 inf.", "Axe 0.1 inferieur"),  "140X4",   207,   500, TRUE),
        ENCODER (IF("Asse 0.2 sup.", "Axe 0.2 superieur"),  "140X5",   207,   500, TRUE),
    
        /*** SLAVE 0 ***/
        INPUT (Axis_2_3_Upper_Collision_Axis_2_4,    "60SQ1",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_3_Lower_Collision_Axis_2_4,    "60SQ2",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_4_Upper_Collision_Axis_2_5,    "60SQ3",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_4_Lower_Collision_Axis_2_5,    "60SQ4",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_5_Upper_Max_Forward,           "60SQ5",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_2_5_Lower_Max_Forward,           "60SQ6",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_3_0_Upper_Max_Backward,          "60SQ7",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_3_0_Upper_Collision_Axis_3_1,    "60SQ8",             NORMALLY_CLOSED,                  0 ,                   0),
    
        INPUT (Axis_3_0_Lower_Max_Backward,          "61SQ1",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_3_0_Lower_Collision_Axis_3_1,    "61SQ2",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_3_1_Upper_Collision_Axis_3_2,    "61SQ3",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_3_1_Lower_Collision_Axis_3_2,    "61SQ4",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_3_2_Upper_Max_Forward,           "61SQ5",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_3_2_Lower_Max_Forward,           "61SQ6",             NORMALLY_CLOSED,                  0 ,                   0),
        INPUT (Axis_0_0_Upper_Fuse,                  "14FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_0_Lower_Fuse,                  "14FU2",             NORMALLY_OPENED,                  0 ,                   0),
    
        INPUT (Axis_0_1_Upper_Fuse,                  "14FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_1_Lower_Fuse,                  "15FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_2_Upper_Fuse,                  "15FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_2_Lower_Fuse,                  "15FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_3_Upper_Fuse,                  "16FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_3_Lower_Fuse,                  "16FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_4_Upper_Fuse,                  "16FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_0_4_Lower_Fuse,                  "17FU1",             NORMALLY_OPENED,                  0 ,                   0),
    
        INPUT (Axis_1_0_Upper_Fuse,                  "17FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_0_Lower_Fuse,                  "17FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_1_Upper_Fuse,                  "18FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_1_Lower_Fuse,                  "18FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_2_Upper_Fuse,                  "18FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_2_Lower_Fuse,                  "19FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_3_Upper_Fuse,                  "19FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_3_Lower_Fuse,                  "19FU3",             NORMALLY_OPENED,                  0 ,                   0),
    
        OUTPUT (AXIS_1_0_UPPER_SPEED),
        OUTPUT (AXIS_1_0_LOWER_FORWARD),
        OUTPUT (AXIS_1_0_LOWER_BACKWARD),
        OUTPUT (AXIS_1_0_LOWER_SPEED),
        OUTPUT (AXIS_1_1_UPPER_FORWARD),
        OUTPUT (AXIS_1_1_UPPER_BACKWARD),
        OUTPUT (AXIS_1_1_UPPER_SPEED),
        OUTPUT (AXIS_1_1_LOWER_FORWARD),
    
        OUTPUT (AXIS_1_1_LOWER_BACKWARD),
        OUTPUT (AXIS_1_1_LOWER_SPEED),
        OUTPUT (AXIS_1_2_UPPER_FORWARD),
        OUTPUT (AXIS_1_2_UPPER_BACKWARD),
        OUTPUT (AXIS_1_2_UPPER_SPEED),
        OUTPUT (AXIS_1_2_LOWER_FORWARD),
        OUTPUT (AXIS_1_2_LOWER_BACKWARD),
        OUTPUT (AXIS_1_2_LOWER_SPEED),
    
        OUTPUT (AXIS_1_3_UPPER_FORWARD),
        OUTPUT (AXIS_1_3_UPPER_BACKWARD),
        OUTPUT (AXIS_1_3_UPPER_SPEED),
        OUTPUT (AXIS_1_3_LOWER_FORWARD),
        OUTPUT (AXIS_1_3_LOWER_BACKWARD),
        OUTPUT (AXIS_1_3_LOWER_SPEED),
        OUTPUT (AXIS_1_4_UPPER_FORWARD),
        OUTPUT (AXIS_1_4_UPPER_BACKWARD),
    
        OUTPUT (AXIS_1_4_UPPER_SPEED),
        OUTPUT (AXIS_1_4_LOWER_FORWARD),
        OUTPUT (AXIS_1_4_LOWER_BACKWARD),
        OUTPUT (AXIS_1_4_LOWER_SPEED),
        OUTPUT (AXIS_2_0_UPPER_FORWARD),
        OUTPUT (AXIS_2_0_UPPER_BACKWARD),
        OUTPUT (AXIS_2_0_UPPER_SPEED),
        OUTPUT (AXIS_2_0_LOWER_FORWARD),
    
        ENCODER (IF("Asse 0.2 inf.", "Axe 0.2 inferieur"),                  "141X1",   207,   500, TRUE),
        ENCODER (IF("Asse 0.3 sup.", "Axe 0.3 superieur"),                  "141X2",   207,   500, TRUE),
        ENCODER (IF("Asse 0.3 inf.", "Axe 0.3 inferieur"),                  "141X3",   207,   500, TRUE),
        ENCODER (IF("Asse 0.4 sup.", "Axe 0.4 superieur"),                  "141X4",   207,   500, TRUE),
        ENCODER (IF("Asse 0.4 inf.", "Axe 0.4 inferieur"),                  "141X5",   207,   500, TRUE),
    
        /*** SLAVE 1 ***/
        INPUT (Axis_1_4_Upper_Fuse,                  "20FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_1_4_Lower_Fuse,                  "20FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_0_Upper_Fuse,                  "20FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_0_Lower_Fuse,                  "21FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_1_Upper_Fuse,                  "21FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_1_Lower_Fuse,                  "21FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_2_Upper_Fuse,                  "22FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_2_Lower_Fuse,                  "22FU2",             NORMALLY_OPENED,                  0 ,                   0),
    
        INPUT (Axis_2_3_Upper_Fuse,                  "22FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_3_Lower_Fuse,                  "23FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_4_Upper_Fuse,                  "23FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_4_Lower_Fuse,                  "23FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_5_Upper_Fuse,                  "24FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_2_5_Lower_Fuse,                  "24FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_3_0_Upper_Fuse,                  "24FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_3_0_Lower_Fuse,                  "25FU1",             NORMALLY_OPENED,                  0 ,                   0),
    
        INPUT (Axis_3_1_Upper_Fuse,                  "25FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_3_1_Lower_Fuse,                  "25FU3",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_3_2_Upper_Fuse,                  "26FU1",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Axis_3_2_Lower_Fuse,                  "26FU2",             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Creaser_0_0_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Puncher_0_0_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Creaser_0_1_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Puncher_0_1_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
    
        INPUT (Creaser_0_2_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Puncher_0_2_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Creaser_0_3_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Puncher_0_3_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Creaser_0_4_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Puncher_0_4_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Creaser_1_0_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
        INPUT (Puncher_1_0_Lower,                       NULL,             NORMALLY_OPENED,                  0 ,                   0),
    
        OUTPUT (AXIS_2_0_LOWER_BACKWARD),
        OUTPUT (AXIS_2_0_LOWER_SPEED),
        OUTPUT (AXIS_2_1_UPPER_FORWARD),
        OUTPUT (AXIS_2_1_UPPER_BACKWARD),
        OUTPUT (AXIS_2_1_UPPER_SPEED),
        OUTPUT (AXIS_2_1_LOWER_FORWARD),
        OUTPUT (AXIS_2_1_LOWER_BACKWARD),
        OUTPUT (AXIS_2_1_LOWER_SPEED),
    
        OUTPUT (AXIS_2_2_UPPER_FORWARD),
        OUTPUT (AXIS_2_2_UPPER_BACKWARD),
        OUTPUT (AXIS_2_2_UPPER_SPEED),
        OUTPUT (AXIS_2_2_LOWER_FORWARD),
        OUTPUT (AXIS_2_2_LOWER_BACKWARD),
        OUTPUT (AXIS_2_2_LOWER_SPEED),
        OUTPUT (AXIS_2_3_UPPER_FORWARD),
        OUTPUT (AXIS_2_3_UPPER_BACKWARD),
    
        OUTPUT (AXIS_2_3_UPPER_SPEED),
        OUTPUT (AXIS_2_3_LOWER_FORWARD),
        OUTPUT (AXIS_2_3_LOWER_BACKWARD),
        OUTPUT (AXIS_2_3_LOWER_SPEED),
        OUTPUT (AXIS_2_4_UPPER_FORWARD),
        OUTPUT (AXIS_2_4_UPPER_BACKWARD),
        OUTPUT (AXIS_2_4_UPPER_SPEED),
        OUTPUT (AXIS_2_4_LOWER_FORWARD),
    
        OUTPUT (AXIS_2_4_LOWER_BACKWARD),
        OUTPUT (AXIS_2_4_LOWER_SPEED),
        OUTPUT (AXIS_2_5_UPPER_FORWARD),
        OUTPUT (AXIS_2_5_UPPER_BACKWARD),
        OUTPUT (AXIS_2_5_UPPER_SPEED),
        OUTPUT (AXIS_2_5_LOWER_FORWARD),
        OUTPUT (AXIS_2_5_LOWER_BACKWARD),
        OUTPUT (AXIS_2_5_LOWER_SPEED),
    
        ENCODER (IF("Asse 1.0 sup.", "Axe 1.0 superieur"),                 "142X1",   207,   500, TRUE),
        ENCODER (IF("Asse 1.0 inf.", "Axe 1.0 inferieur"),                 "142X2",   207,   500, TRUE),
        ENCODER (IF("Asse 1.1 sup.", "Axe 1.1 superieur"),                 "142X3",   207,   500, TRUE),
        ENCODER (IF("Asse 1.1 inf.", "Axe 1.1 inferieur"),                 "142X4",   207,   500, TRUE),
        ENCODER (IF("Asse 1.2 sup.", "Axe 1.2 superieur"),                 "142X5",   207,   500, TRUE),
    
    	/*** SLAVE 2 ***/
        INPUT (Creaser_1_1_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_1_1_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Creaser_1_2_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_1_2_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Creaser_1_3_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_1_3_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Creaser_1_4_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_1_4_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
    
        INPUT (Creaser_2_0_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_2_0_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Creaser_2_1_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_2_1_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Creaser_2_2_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_2_2_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Creaser_2_3_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_2_3_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
    
        INPUT (Creaser_2_4_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_2_4_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Creaser_2_5_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_2_5_Lower,                       NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_3_0_Forward,                     NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_3_1_Forward,                     NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_3_2_Forward,                     NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_3_0_Backward,                    NULL,          NORMALLY_OPENED,                   0,                   0),
    
        INPUT (Puncher_3_1_Backward,                    NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Puncher_3_2_Backward,                    NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Free_Input_3_26,                         NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Free_Input_3_27,                         NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Free_Input_3_28,                         NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Free_Input_3_29,                         NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Free_Input_3_30,                         NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Free_Input_3_31,                         NULL,          NORMALLY_OPENED,                   0,                   0),
    
        OUTPUT (AXIS_3_0_UPPER_FORWARD),
        OUTPUT (AXIS_3_0_UPPER_BACKWARD),
        OUTPUT (AXIS_3_0_UPPER_SPEED),
        OUTPUT (AXIS_3_0_LOWER_FORWARD),
        OUTPUT (AXIS_3_0_LOWER_BACKWARD),
        OUTPUT (AXIS_3_0_LOWER_SPEED),
        OUTPUT (AXIS_3_1_UPPER_FORWARD),
        OUTPUT (AXIS_3_1_UPPER_BACKWARD),
    
        OUTPUT (AXIS_3_1_UPPER_SPEED),
        OUTPUT (AXIS_3_1_LOWER_FORWARD),
        OUTPUT (AXIS_3_1_LOWER_BACKWARD),
        OUTPUT (AXIS_3_1_LOWER_SPEED),
        OUTPUT (AXIS_3_2_UPPER_FORWARD),
        OUTPUT (AXIS_3_2_UPPER_BACKWARD),
        OUTPUT (AXIS_3_2_UPPER_SPEED),
        OUTPUT (AXIS_3_2_LOWER_FORWARD),
    
        OUTPUT (AXIS_3_2_LOWER_BACKWARD),
        OUTPUT (AXIS_3_2_LOWER_SPEED),
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        ENCODER (IF("Asse 1.2 inf.", "Axe 1.2 inferieur"),                  "143X1",   207,   500, TRUE),
        ENCODER (IF("Asse 1.3 sup.", "Axe 1.3 superieur"),                  "143X2",   207,   500, TRUE),
        ENCODER (IF("Asse 1.3 inf.", "Axe 1.3 inferieur"),                  "143X3",   207,   500, TRUE),
        ENCODER (IF("Asse 1.4 sup.", "Axe 1.4 superieur"),                  "143X4",   207,   500, TRUE),
        ENCODER (IF("Asse 1.4 inf.", "Axe 1.4 inferieur"),                  "143X5",   207,   500, TRUE),
    
    	/*** SLAVE 3 ***/
        INPUT (Main_Emergency,                          NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (DC_24_Motor_0_Line,                      NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (DC_24_Motor_1_Line,                      NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (DC_24_Motor_2_Line,                      NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (DC_24_Motor_3_Line,                      NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Auxiliary,                               NULL,          NORMALLY_OPENED,                   0,                   0),
        INPUT (Air_Pressure_Alarm,                      NULL,          NORMALLY_CLOSED,                   0,                   0),
        INPUT (Free_Input_4_07,                         NULL,          NORMALLY_OPENED,                   0,                   0),
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        ENCODER (IF("Asse 2.0 sup.", "Axe 2.0 superieur"),                 "144X1",   207,   500, TRUE),
        ENCODER (IF("Asse 2.0 inf.", "Axe 2.0 inferieur"),                 "144X2",   207,   500, TRUE),
        ENCODER (IF("Asse 2.1 sup.", "Axe 2.1 superieur"),                 "144X3",   207,   500, TRUE),
        ENCODER (IF("Asse 2.1 inf.", "Axe 2.1 inferieur"),                 "144X4",   207,   500, TRUE),
        ENCODER (IF("Asse 2.2 sup.", "Axe 2.2 superieur"),                 "144X5",   207,   500, TRUE),
    
    	/*** SLAVE 4 ***/
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
    
        ENCODER (IF("Asse 2.2 inf.", "Axe 2.2 inferieur"),                 "145X1",   207,   500, TRUE),
        ENCODER (IF("Asse 2.3 sup.", "Axe 2.3 superieur"),                 "145X2",   207,   500, TRUE),
        ENCODER (IF("Asse 2.3 inf.", "Axe 2.3 inferieur"),                 "145X3",   207,   500, TRUE),
        ENCODER (IF("Asse 2.4 sup.", "Axe 2.4 superieur"),                 "145X4",   207,   500, TRUE),
        ENCODER (IF("Asse 2.4 inf.", "Axe 2.4 inferieur"),                 "145X5",   207,   500, TRUE),
    
        /*** SLAVE 5 ***/
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        ENCODER (IF("Asse 2.5 sup.", "Axe 2.5 superieur"),                 "146X1",   207,   500, TRUE),
        ENCODER (IF("Asse 2.5 inf.", "Axe 2.5 inferieur"),                 "146X2",   207,   500, TRUE),
        ENCODER (IF("Asse 3.0 sup.", "Axe 3.0 superieur"),                 "146X3",   207,   500, TRUE),
        ENCODER (IF("Asse 3.0 inf.", "Axe 3.0 inferieur"),                 "146X4",   207,   500, TRUE),
        ENCODER (IF("Asse 3.1 sup.", "Axe 3.1 superieur"),                 "146X5",   207,   500, TRUE),
    
        /*** SLAVE 6 ***/
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
        FREE_INPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
        FREE_OUTPUT,
    
        ENCODER (IF("Asse 3.1 inf.", "Axe 3.1 inferieur"),            "147X1",  207,   500, TRUE),
        ENCODER (IF("Asse 3.2 sup.", "Axe 3.2 superieur"),            "147X2",  207,   500, TRUE),
        ENCODER (IF("Asse 3.2 inf.", "Axe 3.2 inferieur"),            "147X3",  207,   500, TRUE),
        FREE_ENCODER,
        FREE_ENCODER,
    };
    Like you can see, I need to fill the array with the variables I have declared upstairs, and Column mode is really useful.
    Ane I need the Column Editing for editing variable as fast as possible.

    this is only one example. In my projects, I have many many situations like this.
    Last edited by Undici77; 01-16-2010 at 08:50 AM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Resource ICONs
    By gbaker in forum Windows Programming
    Replies: 4
    Last Post: 12-15-2003, 07:18 AM