mirror of
https://github.com/thiagoralves/OpenPLC_v3.git
synced 2026-09-22 02:03:38 +08:00
Wideregistersupport (#5)
* DINT and LINT IO added * wide register support, 32, 64bit * ff submodule pointer for ethercat_src --------- authored-by: r2k
This commit is contained in:
+1
-1
Submodule utils/ethercat_src updated: 6b2697d603...f9c636d013
@@ -59,6 +59,14 @@ IEC_BYTE *byte_output[BUFFER_SIZE];\r\n\
|
||||
IEC_UINT *int_input[BUFFER_SIZE];\r\n\
|
||||
IEC_UINT *int_output[BUFFER_SIZE];\r\n\
|
||||
\r\n\
|
||||
//32bit I/O\r\n\
|
||||
IEC_DINT *dint_input[BUFFER_SIZE];\r\n\
|
||||
IEC_DINT *dint_output[BUFFER_SIZE];\r\n\
|
||||
\r\n\
|
||||
//64bit I/O\r\n\
|
||||
IEC_LINT *lint_input[BUFFER_SIZE];\r\n\
|
||||
IEC_LINT *lint_output[BUFFER_SIZE];\r\n\
|
||||
\r\n\
|
||||
//Memory\r\n\
|
||||
IEC_UINT *int_memory[BUFFER_SIZE];\r\n\
|
||||
IEC_DINT *dint_memory[BUFFER_SIZE];\r\n\
|
||||
@@ -176,6 +184,12 @@ void glueVar(ostream& glueVars, char *varName, char *varType)
|
||||
case 'W':
|
||||
glueVars << "\tint_input[" << pos1 << "] = " << varName << ";\r\n";
|
||||
break;
|
||||
case 'D':
|
||||
glueVars << "\tdint_input[" << pos1 << "] = (IEC_DINT *)" << varName << ";\r\n";
|
||||
break;
|
||||
case 'L':
|
||||
glueVars << "\tlint_input[" << pos1 << "] = (IEC_LINT *)" << varName << ";\r\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (varName[2] == 'Q')
|
||||
@@ -192,6 +206,12 @@ void glueVar(ostream& glueVars, char *varName, char *varType)
|
||||
case 'W':
|
||||
glueVars << "\tint_output[" << pos1 << "] = " << varName << ";\r\n";
|
||||
break;
|
||||
case 'D':
|
||||
glueVars << "\tdint_output[" << pos1 << "] = (IEC_DINT *)" << varName << ";\r\n";
|
||||
break;
|
||||
case 'L':
|
||||
glueVars << "\tlint_input[" << pos1 << "] = (IEC_LINT *)" << varName << ";\r\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (varName[2] == 'M')
|
||||
|
||||
@@ -69,6 +69,14 @@ extern IEC_BYTE *byte_output[BUFFER_SIZE];
|
||||
extern IEC_UINT *int_input[BUFFER_SIZE];
|
||||
extern IEC_UINT *int_output[BUFFER_SIZE];
|
||||
|
||||
//32bit I/O
|
||||
extern IEC_DINT *dint_input[BUFFER_SIZE];
|
||||
extern IEC_DINT *dint_output[BUFFER_SIZE];
|
||||
|
||||
//64bit I/O
|
||||
extern IEC_LINT *lint_input[BUFFER_SIZE];
|
||||
extern IEC_LINT *lint_output[BUFFER_SIZE];
|
||||
|
||||
//Memory
|
||||
extern IEC_UINT *int_memory[BUFFER_SIZE];
|
||||
extern IEC_DINT *dint_memory[BUFFER_SIZE];
|
||||
|
||||
+13
-1
@@ -216,6 +216,10 @@ u_int8_t *byte_input_call_back(int a){ return byte_input[a]; }
|
||||
u_int8_t *byte_output_call_back(int a){ return byte_output[a]; }
|
||||
u_int16_t *int_input_call_back(int a){ return int_input[a]; }
|
||||
u_int16_t *int_output_call_back(int a){ return int_output[a]; }
|
||||
u_int32_t *dint_input_call_back(int a){ return dint_input[a]; }
|
||||
u_int32_t *dint_output_call_back(int a){ return dint_output[a]; }
|
||||
u_int64_t *lint_input_call_back(int a){ return lint_input[a]; }
|
||||
u_int64_t *lint_output_call_back(int a){ return lint_output[a]; }
|
||||
void logger_callback(unsigned char *msg){ log(msg);}
|
||||
|
||||
int main(int argc,char **argv)
|
||||
@@ -327,6 +331,10 @@ int main(int argc,char **argv)
|
||||
int8var_call_back byte_output_callback = byte_output_call_back;
|
||||
int16var_call_back int_input_callback = int_input_call_back;
|
||||
int16var_call_back int_output_callback = int_output_call_back;
|
||||
int32var_call_back dint_input_callback = dint_input_call_back;
|
||||
int32var_call_back dint_output_callback = dint_output_call_back;
|
||||
int64var_call_back lint_input_callback = lint_input_call_back;
|
||||
int64var_call_back lint_output_callback = lint_output_call_back;
|
||||
#endif
|
||||
|
||||
updateBuffersIn(); //read input image
|
||||
@@ -341,7 +349,11 @@ int main(int argc,char **argv)
|
||||
byte_input_callback,
|
||||
byte_output_callback,
|
||||
int_input_callback,
|
||||
int_output_callback)){
|
||||
int_output_callback,
|
||||
dint_input_call_back,
|
||||
dint_output_call_back,
|
||||
lint_input_call_back,
|
||||
lint_output_call_back)){
|
||||
printf("EtherCAT cyclic failed\n");
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user