701 task.updateElementName(old_name, new_name) |
701 task.updateElementName(old_name, new_name) |
702 setattr(cls, "updateElementName", updateElementName) |
702 setattr(cls, "updateElementName", updateElementName) |
703 |
703 |
704 cls = PLCOpenClasses.get("resource_task", None) |
704 cls = PLCOpenClasses.get("resource_task", None) |
705 if cls: |
705 if cls: |
|
706 def compatibility(self, tree): |
|
707 if tree.hasAttribute("interval"): |
|
708 interval = GetAttributeValue(tree._attrs["interval"]) |
|
709 result = time_model.match(interval) |
|
710 if result is not None: |
|
711 values = result.groups() |
|
712 time_values = [int(v) for v in values[:2]] |
|
713 seconds = float(values[2]) |
|
714 time_values.extend([int(seconds), int((seconds % 1) * 1000000)]) |
|
715 text = "t#" |
|
716 if time_values[0] != 0: |
|
717 text += "%dh"%time_values[0] |
|
718 if time_values[1] != 0: |
|
719 text += "%dm"%time_values[1] |
|
720 if time_values[2] != 0: |
|
721 text += "%ds"%time_values[2] |
|
722 if time_values[3] != 0: |
|
723 if time_values[3] % 1000 != 0: |
|
724 text += "%.3fms"%(float(time_values[3]) / 1000) |
|
725 else: |
|
726 text += "%dms"%(time_values[3] / 1000) |
|
727 NodeSetAttr(tree, "interval", text) |
|
728 setattr(cls, "compatibility", compatibility) |
|
729 |
706 def updateElementName(self, old_name, new_name): |
730 def updateElementName(self, old_name, new_name): |
707 if self.single == old_name: |
731 if self.single == old_name: |
708 self.single = new_name |
732 self.single = new_name |
709 for instance in self.getpouInstance(): |
733 for instance in self.getpouInstance(): |
710 instance.updateElementName(old_name, new_name) |
734 instance.updateElementName(old_name, new_name) |
711 setattr(cls, "updateElementName", updateElementName) |
735 setattr(cls, "updateElementName", updateElementName) |
712 |
736 |
713 cls = PLCOpenClasses.get("pouInstance", None) |
737 cls = PLCOpenClasses.get("pouInstance", None) |
714 if cls: |
738 if cls: |
|
739 def compatibility(self, tree): |
|
740 if tree.hasAttribute("type"): |
|
741 NodeRenameAttr(tree, "type", "typeName") |
|
742 setattr(cls, "compatibility", compatibility) |
|
743 |
715 def updateElementName(self, old_name, new_name): |
744 def updateElementName(self, old_name, new_name): |
716 if self.type == old_name: |
745 if self.type == old_name: |
717 self.type = new_name |
746 self.type = new_name |
718 setattr(cls, "updateElementName", updateElementName) |
747 setattr(cls, "updateElementName", updateElementName) |
719 |
748 |
790 break |
819 break |
791 if not found: |
820 if not found: |
792 raise ValueError, "\"%s\" POU doesn't exist !!!"%name |
821 raise ValueError, "\"%s\" POU doesn't exist !!!"%name |
793 setattr(cls, "removepouElement", removepouElement) |
822 setattr(cls, "removepouElement", removepouElement) |
794 |
823 |
795 def setbodyType(self, type): |
|
796 if type == "IL": |
|
797 self.body.setcontent({"name" : "IL", "value" : PLCOpenClasses["formattedText"]()}) |
|
798 elif type == "ST": |
|
799 self.body.setcontent({"name" : "ST", "value" : PLCOpenClasses["formattedText"]()}) |
|
800 elif type == "LD": |
|
801 self.body.setcontent({"name" : "LD", "value" : PLCOpenClasses["body_LD"]()}) |
|
802 elif type == "FBD": |
|
803 self.body.setcontent({"name" : "FBD", "value" : PLCOpenClasses["body_FBD"]()}) |
|
804 elif type == "SFC": |
|
805 self.body.setcontent({"name" : "SFC", "value" : PLCOpenClasses["body_SFC"]()}) |
|
806 else: |
|
807 raise ValueError, "%s isn't a valid body type!"%type |
|
808 |
|
809 def getbodyType(self): |
|
810 return self.body.getcontent()["name"] |
|
811 |
|
812 def resetexecutionOrder(self): |
|
813 self.body.resetexecutionOrder() |
|
814 |
|
815 def compileexecutionOrder(self): |
|
816 self.body.compileexecutionOrder() |
|
817 |
|
818 def setelementExecutionOrder(self, instance, new_executionOrder): |
|
819 self.body.setelementExecutionOrder(instance, new_executionOrder) |
|
820 |
|
821 def addinstance(self, name, instance): |
|
822 self.body.appendcontentInstance(name, instance) |
|
823 |
|
824 def getinstances(self): |
|
825 return self.body.getcontentInstances() |
|
826 |
|
827 def getinstance(self, id): |
|
828 return self.body.getcontentInstance(id) |
|
829 |
|
830 def getrandomInstance(self, exclude): |
|
831 return self.body.getcontentRandomInstance(exclude) |
|
832 |
|
833 def getinstanceByName(self, name): |
|
834 return self.body.getcontentInstanceByName(name) |
|
835 |
|
836 def removeinstance(self, id): |
|
837 self.body.removecontentInstance(id) |
|
838 |
|
839 def settext(self, text): |
|
840 self.body.settext(text) |
|
841 |
|
842 def gettext(self): |
|
843 return self.body.gettext() |
|
844 setattr(cls, "gettext", gettext) |
|
845 |
|
846 cls = PLCOpenClasses.get("pous_pou", None) |
824 cls = PLCOpenClasses.get("pous_pou", None) |
847 if cls: |
825 if cls: |
|
826 |
|
827 def setbodyType(self, type): |
|
828 if len(self.body) > 0: |
|
829 if type == "IL": |
|
830 self.body[0].setcontent({"name" : "IL", "value" : PLCOpenClasses["formattedText"]()}) |
|
831 elif type == "ST": |
|
832 self.body[0].setcontent({"name" : "ST", "value" : PLCOpenClasses["formattedText"]()}) |
|
833 elif type == "LD": |
|
834 self.body[0].setcontent({"name" : "LD", "value" : PLCOpenClasses["body_LD"]()}) |
|
835 elif type == "FBD": |
|
836 self.body[0].setcontent({"name" : "FBD", "value" : PLCOpenClasses["body_FBD"]()}) |
|
837 elif type == "SFC": |
|
838 self.body[0].setcontent({"name" : "SFC", "value" : PLCOpenClasses["body_SFC"]()}) |
|
839 else: |
|
840 raise ValueError, "%s isn't a valid body type!"%type |
848 setattr(cls, "setbodyType", setbodyType) |
841 setattr(cls, "setbodyType", setbodyType) |
|
842 |
|
843 def getbodyType(self): |
|
844 if len(self.body) > 0: |
|
845 return self.body[0].getcontent()["name"] |
849 setattr(cls, "getbodyType", getbodyType) |
846 setattr(cls, "getbodyType", getbodyType) |
|
847 |
|
848 def resetexecutionOrder(self): |
|
849 if len(self.body) > 0: |
|
850 self.body[0].resetexecutionOrder() |
850 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
851 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
|
852 |
|
853 def compileexecutionOrder(self): |
|
854 if len(self.body) > 0: |
|
855 self.body[0].compileexecutionOrder() |
851 setattr(cls, "compileexecutionOrder", compileexecutionOrder) |
856 setattr(cls, "compileexecutionOrder", compileexecutionOrder) |
|
857 |
|
858 def setelementExecutionOrder(self, instance, new_executionOrder): |
|
859 if len(self.body) > 0: |
|
860 self.body[0].setelementExecutionOrder(instance, new_executionOrder) |
852 setattr(cls, "setelementExecutionOrder", setelementExecutionOrder) |
861 setattr(cls, "setelementExecutionOrder", setelementExecutionOrder) |
|
862 |
|
863 def addinstance(self, name, instance): |
|
864 if len(self.body) > 0: |
|
865 self.body[0].appendcontentInstance(name, instance) |
853 setattr(cls, "addinstance", addinstance) |
866 setattr(cls, "addinstance", addinstance) |
|
867 |
|
868 def getinstances(self): |
|
869 if len(self.body) > 0: |
|
870 return self.body[0].getcontentInstances() |
|
871 return [] |
854 setattr(cls, "getinstances", getinstances) |
872 setattr(cls, "getinstances", getinstances) |
|
873 |
|
874 def getinstance(self, id): |
|
875 if len(self.body) > 0: |
|
876 return self.body[0].getcontentInstance(id) |
|
877 return None |
855 setattr(cls, "getinstance", getinstance) |
878 setattr(cls, "getinstance", getinstance) |
|
879 |
|
880 def getrandomInstance(self, exclude): |
|
881 if len(self.body) > 0: |
|
882 return self.body[0].getcontentRandomInstance(exclude) |
|
883 return None |
856 setattr(cls, "getrandomInstance", getrandomInstance) |
884 setattr(cls, "getrandomInstance", getrandomInstance) |
|
885 |
|
886 def getinstanceByName(self, name): |
|
887 if len(self.body) > 0: |
|
888 return self.body[0].getcontentInstanceByName(name) |
|
889 return None |
857 setattr(cls, "getinstanceByName", getinstanceByName) |
890 setattr(cls, "getinstanceByName", getinstanceByName) |
|
891 |
|
892 def removeinstance(self, id): |
|
893 if len(self.body) > 0: |
|
894 self.body[0].removecontentInstance(id) |
858 setattr(cls, "removeinstance", removeinstance) |
895 setattr(cls, "removeinstance", removeinstance) |
|
896 |
|
897 def settext(self, text): |
|
898 if len(self.body) > 0: |
|
899 self.body[0].settext(text) |
859 setattr(cls, "settext", settext) |
900 setattr(cls, "settext", settext) |
|
901 |
|
902 def gettext(self): |
|
903 if len(self.body) > 0: |
|
904 return self.body[0].gettext() |
|
905 return "" |
860 setattr(cls, "gettext", gettext) |
906 setattr(cls, "gettext", gettext) |
861 |
907 |
862 def getvars(self): |
908 def getvars(self): |
863 vars = [] |
909 vars = [] |
864 if self.interface is not None: |
910 if self.interface is not None: |
1040 action.updateElementName(old_name, new_name) |
1086 action.updateElementName(old_name, new_name) |
1041 for transition in self.gettransitionList(): |
1087 for transition in self.gettransitionList(): |
1042 transition.updateElementName(old_name, new_name) |
1088 transition.updateElementName(old_name, new_name) |
1043 setattr(cls, "updateElementName", updateElementName) |
1089 setattr(cls, "updateElementName", updateElementName) |
1044 |
1090 |
|
1091 def setbodyType(self, type): |
|
1092 if type == "IL": |
|
1093 self.body.setcontent({"name" : "IL", "value" : PLCOpenClasses["formattedText"]()}) |
|
1094 elif type == "ST": |
|
1095 self.body.setcontent({"name" : "ST", "value" : PLCOpenClasses["formattedText"]()}) |
|
1096 elif type == "LD": |
|
1097 self.body.setcontent({"name" : "LD", "value" : PLCOpenClasses["body_LD"]()}) |
|
1098 elif type == "FBD": |
|
1099 self.body.setcontent({"name" : "FBD", "value" : PLCOpenClasses["body_FBD"]()}) |
|
1100 elif type == "SFC": |
|
1101 self.body.setcontent({"name" : "SFC", "value" : PLCOpenClasses["body_SFC"]()}) |
|
1102 else: |
|
1103 raise ValueError, "%s isn't a valid body type!"%type |
|
1104 |
|
1105 def getbodyType(self): |
|
1106 return self.body.getcontent()["name"] |
|
1107 |
|
1108 def resetexecutionOrder(self): |
|
1109 self.body.resetexecutionOrder() |
|
1110 |
|
1111 def compileexecutionOrder(self): |
|
1112 self.body.compileexecutionOrder() |
|
1113 |
|
1114 def setelementExecutionOrder(self, instance, new_executionOrder): |
|
1115 self.body.setelementExecutionOrder(instance, new_executionOrder) |
|
1116 |
|
1117 def addinstance(self, name, instance): |
|
1118 self.body.appendcontentInstance(name, instance) |
|
1119 |
|
1120 def getinstances(self): |
|
1121 return self.body.getcontentInstances() |
|
1122 |
|
1123 def getinstance(self, id): |
|
1124 return self.body.getcontentInstance(id) |
|
1125 |
|
1126 def getrandomInstance(self, exclude): |
|
1127 return self.body.getcontentRandomInstance(exclude) |
|
1128 |
|
1129 def getinstanceByName(self, name): |
|
1130 return self.body.getcontentInstanceByName(name) |
|
1131 |
|
1132 def removeinstance(self, id): |
|
1133 self.body.removecontentInstance(id) |
|
1134 |
|
1135 def settext(self, text): |
|
1136 self.body.settext(text) |
|
1137 |
|
1138 def gettext(self): |
|
1139 return self.body.gettext() |
|
1140 |
1045 cls = PLCOpenClasses.get("transitions_transition", None) |
1141 cls = PLCOpenClasses.get("transitions_transition", None) |
1046 if cls: |
1142 if cls: |
1047 setattr(cls, "setbodyType", setbodyType) |
1143 setattr(cls, "setbodyType", setbodyType) |
1048 setattr(cls, "getbodyType", getbodyType) |
1144 setattr(cls, "getbodyType", getbodyType) |
1049 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
1145 setattr(cls, "resetexecutionOrder", resetexecutionOrder) |
1633 if self.connectionPointOutAction: |
1729 if self.connectionPointOutAction: |
1634 specific_values["action"] = _getconnectioninfos(self, self.connectionPointOutAction) |
1730 specific_values["action"] = _getconnectioninfos(self, self.connectionPointOutAction) |
1635 return infos |
1731 return infos |
1636 setattr(cls, "getinfos", getinfos) |
1732 setattr(cls, "getinfos", getinfos) |
1637 |
1733 |
|
1734 cls = PLCOpenClasses.get("transition_condition", None) |
|
1735 if cls: |
|
1736 def compatibility(self, tree): |
|
1737 connections = [] |
|
1738 for child in tree.childNodes: |
|
1739 if child.nodeName == "connection": |
|
1740 connections.append(child) |
|
1741 if len(connections) > 0: |
|
1742 node = CreateNode("connectionPointIn") |
|
1743 relPosition = CreateNode("relPosition") |
|
1744 NodeSetAttr(relPosition, "x", "0") |
|
1745 NodeSetAttr(relPosition, "y", "0") |
|
1746 node.childNodes.append(relPosition) |
|
1747 node.childNodes.extend(connections) |
|
1748 tree.childNodes = [node] |
|
1749 setattr(cls, "compatibility", compatibility) |
|
1750 |
1638 cls = _initElementClass("transition", "sfcObjects_transition", "single") |
1751 cls = _initElementClass("transition", "sfcObjects_transition", "single") |
1639 if cls: |
1752 if cls: |
1640 def getinfos(self): |
1753 def getinfos(self): |
1641 infos = _getelementinfos(self) |
1754 infos = _getelementinfos(self) |
1642 infos["type"] = "transition" |
1755 infos["type"] = "transition" |
1692 content["value"].setname(new_name) |
1808 content["value"].setname(new_name) |
1693 elif content["name"] == "inline": |
1809 elif content["name"] == "inline": |
1694 content["value"].updateElementName(old_name, new_name) |
1810 content["value"].updateElementName(old_name, new_name) |
1695 setattr(cls, "updateElementName", updateElementName) |
1811 setattr(cls, "updateElementName", updateElementName) |
1696 |
1812 |
1697 def setrelPositionXY(self, x, y): |
|
1698 pass |
|
1699 setattr(cls, "setrelPositionXY", setrelPositionXY) |
|
1700 |
|
1701 def getrelPositionXY(self): |
|
1702 return None |
|
1703 setattr(cls, "getrelPositionXY", getrelPositionXY) |
|
1704 |
|
1705 def addconnection(self): |
|
1706 if self.condition: |
|
1707 content = self.condition.getcontent() |
|
1708 if content["name"] != "connection": |
|
1709 self.condition.setcontent({"name" : "connection", "value" : [PLCOpenClasses["connection"]()]}) |
|
1710 content = self.condition.getcontent() |
|
1711 else: |
|
1712 content["value"].append(PLCOpenClasses["connection"]()) |
|
1713 setattr(cls, "addconnection", addconnection) |
|
1714 |
|
1715 def removeconnection(self, idx): |
|
1716 if self.condition: |
|
1717 content = self.condition.getcontent() |
|
1718 if content["name"] == "connection": |
|
1719 content["value"].pop(idx) |
|
1720 setattr(cls, "removeconnection", removeconnection) |
|
1721 |
|
1722 def removeconnections(self): |
|
1723 if self.condition: |
|
1724 content = self.condition.getcontent() |
|
1725 if content["name"] == "connection": |
|
1726 content["value"] = [PLCOpenClasses["connection"]()] |
|
1727 setattr(cls, "removeconnections", removeconnections) |
|
1728 |
|
1729 def getconnections(self): |
1813 def getconnections(self): |
1730 if self.condition: |
1814 if self.condition: |
1731 content = self.condition.getcontent() |
1815 content = self.condition.getcontent() |
1732 if content["name"] == "connection": |
1816 if content["name"] == "connectionPointIn": |
1733 return content["value"] |
1817 return content["value"].getconnections() |
1734 setattr(cls, "getconnections", getconnections) |
1818 setattr(cls, "getconnections", getconnections) |
1735 |
|
1736 def setconnectionId(self, idx, id): |
|
1737 if self.condition: |
|
1738 content = self.condition.getcontent() |
|
1739 if content["name"] == "connection": |
|
1740 content["value"][idx].setrefLocalId(id) |
|
1741 setattr(cls, "setconnectionId", setconnectionId) |
|
1742 |
|
1743 def getconnectionId(self, idx): |
|
1744 if self.condition: |
|
1745 content = self.condition.getcontent() |
|
1746 if content["name"] == "connection": |
|
1747 return content["value"][idx].getrefLocalId() |
|
1748 return None |
|
1749 setattr(cls, "getconnectionId", getconnectionId) |
|
1750 |
|
1751 def setconnectionPoints(self, idx, points): |
|
1752 if self.condition: |
|
1753 content = self.condition.getcontent() |
|
1754 if content["name"] == "connection": |
|
1755 content["value"][idx].setpoints(points) |
|
1756 setattr(cls, "setconnectionPoints", setconnectionPoints) |
|
1757 |
|
1758 def getconnectionPoints(self, idx): |
|
1759 if self.condition: |
|
1760 content = self.condition.getcontent() |
|
1761 if content["name"] == "connection": |
|
1762 return content["value"][idx].getpoints() |
|
1763 return None |
|
1764 setattr(cls, "getconnectionPoints", getconnectionPoints) |
|
1765 |
|
1766 def setconnectionParameter(self, idx, parameter): |
|
1767 if self.condition: |
|
1768 content = self.condition.getcontent() |
|
1769 if content["name"] == "connection": |
|
1770 content["value"][idx].setformalParameter(parameter) |
|
1771 setattr(cls, "setconnectionParameter", setconnectionParameter) |
|
1772 |
|
1773 def getconnectionParameter(self, idx): |
|
1774 if self.condition: |
|
1775 content = self.condition.getcontent() |
|
1776 if content["name"] == "connection": |
|
1777 content["value"][idx].getformalParameter() |
|
1778 return None |
|
1779 setattr(cls, "getconnectionParameter", getconnectionParameter) |
|
1780 |
1819 |
1781 cls = _initElementClass("selectionDivergence", "sfcObjects_selectionDivergence", "single") |
1820 cls = _initElementClass("selectionDivergence", "sfcObjects_selectionDivergence", "single") |
1782 if cls: |
1821 if cls: |
1783 setattr(cls, "getinfos", _getdivergenceinfosFunction(True, False)) |
1822 setattr(cls, "getinfos", _getdivergenceinfosFunction(True, False)) |
1784 |
1823 |