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.
Printable View
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++.
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...
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.
Not to mention the thread title:Quote:
Originally Posted by The OP
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.
True enough. Visual Studio is not a good option.
edit: Come to think of it, it wasn't my brightest moment.
You can always use just IDE, you don't have to use compiler and linker distributed with it.
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?
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
You are all missing the point.
Visual Studio is not a good option. You must say it.
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
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).
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.Quote:
I didn't know if the .NET stuff was actually becoming cross-platform in some fashion.
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.
I think, you have never work on embedded system for INDUSTRIAL AUTOMATION.
For example this is the source code that I'm editing now:
Like you can see, I need to fill the array with the variables I have declared upstairs, and Column mode is really useful.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,
};
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.