etherlab/EthercatCIA402Slave.py
changeset 2164 7a959b19d5a4
parent 2156 c8eee6be2da8
child 2165 02a2b5dee5e3
equal deleted inserted replaced
2163:6ea6d83e7280 2164:7a959b19d5a4
   205             blocktype = blocktype_infos["blocktype"]
   205             blocktype = blocktype_infos["blocktype"]
   206             ucase_blocktype = blocktype.upper()
   206             ucase_blocktype = blocktype.upper()
   207             blockname = "_".join([ucase_blocktype, location_str])
   207             blockname = "_".join([ucase_blocktype, location_str])
   208             
   208             
   209             extract_inputs = "\n".join(["""\
   209             extract_inputs = "\n".join(["""\
   210     __SET_VAR(%s->, %s, %s);""" % (blockname, input_name, input_value)
   210     __SET_VAR(%s->, %s,, %s);""" % (blockname, input_name, input_value)
   211                 for (input_name, input_value) in [
   211                 for (input_name, input_value) in [
   212                     ("EXECUTE", "__GET_VAR(data__->EXECUTE)")] + [
   212                     ("EXECUTE", "__GET_VAR(data__->EXECUTE)")] + [
   213                     (input["name"].upper(), 
   213                     (input["name"].upper(), 
   214                      "__GET_VAR(data__->%s)" % input["name"].upper())
   214                      "__GET_VAR(data__->%s)" % input["name"].upper())
   215                     for input in blocktype_infos["inputs"]]
   215                     for input in blocktype_infos["inputs"]]
   216                 ])
   216                 ])
   217             
   217             
   218             
   218             
   219             return_outputs = "\n".join(["""\
   219             return_outputs = "\n".join(["""\
   220     __SET_VAR(data__->,%(output_name)s, 
   220     __SET_VAR(data__->,%(output_name)s,, 
   221               __GET_VAR(%(blockname)s->%(output_name)s));""" % locals()
   221               __GET_VAR(%(blockname)s->%(output_name)s));""" % locals()
   222                     for output_name in ["DONE", "BUSY", "ERROR"] + [
   222                     for output_name in ["DONE", "BUSY", "ERROR"] + [
   223                         output["name"].upper()
   223                         output["name"].upper()
   224                         for output in blocktype_infos["outputs"]]
   224                         for output in blocktype_infos["outputs"]]
   225                 ])
   225                 ])
   227             fieldbus_interface_declaration.append("""
   227             fieldbus_interface_declaration.append("""
   228 extern void ETHERLAB%(ucase_blocktype)s_body__(ETHERLAB%(ucase_blocktype)s* data__);
   228 extern void ETHERLAB%(ucase_blocktype)s_body__(ETHERLAB%(ucase_blocktype)s* data__);
   229 void __%(blocktype)s_%(location_str)s(MC_%(ucase_blocktype)s *data__) {
   229 void __%(blocktype)s_%(location_str)s(MC_%(ucase_blocktype)s *data__) {
   230 __DECLARE_GLOBAL_PROTOTYPE(ETHERLAB%(ucase_blocktype)s, %(blockname)s);
   230 __DECLARE_GLOBAL_PROTOTYPE(ETHERLAB%(ucase_blocktype)s, %(blockname)s);
   231 ETHERLAB%(ucase_blocktype)s* %(blockname)s = __GET_GLOBAL_%(blockname)s();
   231 ETHERLAB%(ucase_blocktype)s* %(blockname)s = __GET_GLOBAL_%(blockname)s();
   232 __SET_VAR(%(blockname)s->, POS, AxsPub.axis->NetworkPosition);
   232 __SET_VAR(%(blockname)s->, POS,, AxsPub.axis->NetworkPosition);
   233 %(extract_inputs)s
   233 %(extract_inputs)s
   234 ETHERLAB%(ucase_blocktype)s_body__(%(blockname)s);
   234 ETHERLAB%(ucase_blocktype)s_body__(%(blockname)s);
   235 %(return_outputs)s
   235 %(return_outputs)s
   236 }""" % locals())
   236 }""" % locals())
   237             
   237