ProjectController.py
changeset 3887 2df45e4bd500
parent 3879 17d0d1641090
equal deleted inserted replaced
3886:2adfa4c60bff 3887:2df45e4bd500
    58 from dialogs import UriEditor, IDManager
    58 from dialogs import UriEditor, IDManager
    59 from PLCControler import PLCControler
    59 from PLCControler import PLCControler
    60 from plcopen.structures import IEC_KEYWORDS
    60 from plcopen.structures import IEC_KEYWORDS
    61 from plcopen.types_enums import ComputeConfigurationResourceName, ITEM_CONFNODE
    61 from plcopen.types_enums import ComputeConfigurationResourceName, ITEM_CONFNODE
    62 import targets
    62 import targets
    63 from runtime.typemapping import DebugTypesSize, UnpackDebugBuffer
    63 from runtime.typemapping import DebugTypesSize, UnpackDebugBuffer, ValueToIECBytes
    64 from runtime import PlcStatus
    64 from runtime import PlcStatus
    65 from ConfigTreeNode import ConfigTreeNode, XSDSchemaErrorMessage
    65 from ConfigTreeNode import ConfigTreeNode, XSDSchemaErrorMessage
    66 from POULibrary import UserAddressedException
    66 from POULibrary import UserAddressedException
    67 
    67 
    68 base_folder = paths.AbsParentDir(__file__)
    68 base_folder = paths.AbsParentDir(__file__)
  1613         1 : _("Debug: Too many variables traced. Max 1024.\n"),
  1613         1 : _("Debug: Too many variables traced. Max 1024.\n"),
  1614         # FORCE_LIST_OVERFLOW
  1614         # FORCE_LIST_OVERFLOW
  1615         2 : _("Debug: Too many variables forced. Max 256.\n"),
  1615         2 : _("Debug: Too many variables forced. Max 256.\n"),
  1616         # FORCE_BUFFER_OVERFLOW
  1616         # FORCE_BUFFER_OVERFLOW
  1617         3 : _("Debug: Cumulated forced variables size too large. Max 1KB.\n"),
  1617         3 : _("Debug: Cumulated forced variables size too large. Max 1KB.\n"),
       
  1618         # FORCE_INVALID
       
  1619         3 : _("Debug: Invalid forced value.\n"),
  1618         # DEBUG_SUSPENDED
  1620         # DEBUG_SUSPENDED
  1619         4 : _("Debug: suspended.\n")
  1621         5 : _("Debug: suspended.\n")
  1620     }
  1622     }
  1621 
  1623 
  1622     def RegisterDebugVarToConnector(self):
  1624     def RegisterDebugVarToConnector(self):
  1623         Idxs = []
  1625         Idxs = []
  1624         self.TracedIECPath = []
  1626         self.TracedIECPath = []
  1635                     # Convert
  1637                     # Convert
  1636                     Idx, IEC_Type = self._IECPathToIdx.get(
  1638                     Idx, IEC_Type = self._IECPathToIdx.get(
  1637                         IECPath, (None, None))
  1639                         IECPath, (None, None))
  1638                     if Idx is not None:
  1640                     if Idx is not None:
  1639                         if IEC_Type in DebugTypesSize:
  1641                         if IEC_Type in DebugTypesSize:
  1640                             Idxs.append((Idx, IEC_Type, fvalue, IECPath))
  1642                             Idxs.append(
       
  1643                                 (Idx, IEC_Type, IECPath, 
       
  1644                                  ValueToIECBytes(IEC_Type, fvalue)))
  1641                         else:
  1645                         else:
  1642                             self.logger.write_warning(
  1646                             self.logger.write_warning(
  1643                                 _("Debug: Unsupported type to debug '%s'\n") % IEC_Type)
  1647                                 _("Debug: Unsupported type to debug '%s'\n") % IEC_Type)
  1644                     else:
  1648                     else:
  1645                         self.logger.write_warning(
  1649                         self.logger.write_warning(
  1647             for IECPathToPop in IECPathsToPop:
  1651             for IECPathToPop in IECPathsToPop:
  1648                 self.IECdebug_datas.pop(IECPathToPop)
  1652                 self.IECdebug_datas.pop(IECPathToPop)
  1649 
  1653 
  1650             if Idxs:
  1654             if Idxs:
  1651                 Idxs.sort()
  1655                 Idxs.sort()
  1652                 IdxsT = list(zip(*Idxs))
  1656                 Idxs, self.TracedIECTypes, self.TracedIECPath, Fvalues, = list(zip(*Idxs))
  1653                 self.TracedIECPath = IdxsT[3]
  1657                 res = self._connector.SetTraceVariablesList(list(zip(Idxs, Fvalues)))
  1654                 self.TracedIECTypes = IdxsT[1]
       
  1655                 res = self._connector.SetTraceVariablesList(list(zip(*IdxsT[0:3])))
       
  1656                 if res is not None and res > 0:
  1658                 if res is not None and res > 0:
  1657                     self.DebugToken = res
  1659                     self.DebugToken = res
  1658                 else:
  1660                 else:
  1659                     self.DebugToken = None
  1661                     self.DebugToken = None
  1660                     self.logger.write_warning(
  1662                     self.logger.write_warning(