Пример #1
0
    def clear_plc(self):
        try:
            # 运动状态全部清零
            self.__write(HOCK_RESET_PLC, 0)  # 重置清零
            self.__write(HOCK_STOP_PLC, 0)  # 紧急停止清零
            self.__write(HOCK_MOVE_STATUS_PLC, 0)  # 运动状态清零
            self.__write(EAST_PLC, 0)
            self.__write(WEST_PLC, 0)
            self.__write(SOUTH_PLC, 0)
            self.__write(NORTH_PLC, 0)
            self.__write(UP_PLC, 0)
            self.__write(DOWN_PLC, 0)
            self.__write(UP_CARGOHOOK_PLC, 0)
            self.__write(DOWN_CARGOHOOK_PLC, 0)
            self.__write(GO_AND_BACK, 0)
            self.__write(SOUTH_NORTH_SERVER_ERROR, 0)
            self.__write(EAST_SERVER_ERROR, 0)
            self.__write(WEST_SERVER_ERROR, 0)
            self.__write(WEST_LIMIT_ERROR, 0)
            self.__write(EAST_LIMIT_ERROR, 0)
            self.__write(NORTH_LIMIT_ERROR, 0)
            self.__write(SOUTH_LIMIT_ERROR, 0)

            self.power = True

        except Exception as e:
            logger("PLC 无法写入数值,请检查端口", level='error')
Пример #2
0
 def speed(self):
     try:
         move_speed = self.__read(MOVE_SPEED)
     except Exception as e:
         logger(e.__str__(), level="error")
     else:
         self._speed = move_speed
     return self._speed
Пример #3
0
 def re_work(self):
     self.intelligentthread.work = True
     try:
         self.intelligentthread.target_bag_position.clear()
         self.intelligentthread.move_to_bag_x = False
         self.intelligentthread.move_to_bag_y = False
         self.intelligentthread.scan_bag = False
     except Exception as e:
         logger(e.__str__(), "error")
Пример #4
0
    def clear_plc(self):
        '''
		行车清零
		:return:
		'''
        try:
            self.plchandle.clear_plc()
        except Exception as e:
            logger(e.__str__(), "error")
Пример #5
0
    def resetplc(self):
        '''
		行车复位
		:return:
		'''
        try:
            self.plchandle.reset()
        except Exception as e:
            logger(e.__str__(), "error")
Пример #6
0
    def read_status(self):
        '''
		读取钩子移动状态: 1:运动   0:静止
		:return: int
		'''
        try:
            result = self.__read(HOCK_MOVE_STATUS_PLC)
        except Exception as exc:
            logger("PLC 无法读取数值,请检查端口", level='error')
            result = 0
        return result
Пример #7
0
    def power(self, trueorfalse):
        '''
				1:开启
				0:关闭
				:return:
				'''
        try:
            self._power = trueorfalse
            self.__write(POWER_PLC, 1 if trueorfalse else 0)
        except Exception as e:
            logger(e.__str__(), level="error")
Пример #8
0
    def power(self):
        '''
		1:开启
		0:关闭
		:return:
		'''
        try:
            powervalue = self.__read(POWER_PLC)
        except Exception as e:
            logger(e.__str__(), level="error")
        else:
            self._power = (powervalue == 1)
        return self._power
Пример #9
0
    def is_open(self):
        '''
		用来检测程序是否连接了PLC
		:return:
		'''
        try:
            # self.info()
            self._plc_status = True
        except Exception as e:
            logger("PLC 连接失败,请检查端口", level='error')
            self._plc_status = False

        return self._plc_status
Пример #10
0
    def __write(self, address, value: int):
        '''
		向PLC中写入数据
		:param address:
		:param value:
		:return:
		'''
        try:
            self.master.execute(1,
                                cst.WRITE_SINGLE_REGISTER,
                                address,
                                output_value=value)
        except:
            logger("PLC 无法写入,请检查端口", level='error')
Пример #11
0
 def move(self,
          east=0,
          west=0,
          south=0,
          nourth=0,
          up=0,
          down=0,
          up_cargohook=0,
          down_cargohook=0):
     try:
         self.plchandle.move(east, west, south, nourth, up, down,
                             up_cargohook, down_cargohook)
     except Exception as e:
         logger(e.__str__(), "error")
Пример #12
0
    def __read(self, address):
        '''
		向PLC中读取数据
		:param address:
		:return:
		'''
        try:
            info = self.master.execute(1,
                                       cst.READ_HOLDING_REGISTERS,
                                       starting_address=address,
                                       quantity_of_x=1)
        except Exception as e:
            logger(e.__str__(), "error")
            raise e
        else:
            return info[0]
Пример #13
0
    def init_plc(self):
        '''
		初始化PLC
		:return:
		'''
        try:
            self.master = modbus_rtu.RtuMaster(
                serial.Serial(port=self.port,
                              baudrate=19200,
                              bytesize=8,
                              parity='E',
                              stopbits=1,
                              xonxoff=0))
            self.master.set_timeout(self.timeout)  # PLC 延迟
            self.master.set_verbose(True)
        except Exception as exc:
            logger("PLC 连接失败,请检查端口", level='error')
            self._plc_status = False
Пример #14
0
    def quickly_stop_work(self):
        '''
		行车紧急停止
		:return:
		'''
        self.intelligentthread.work = False

        try:
            self.plchandle.ugent_stop()

            if len(self.intelligentthread.target_bag_position) > 0:
                self.intelligentthread.target_bag_position.clear()
            self.intelligentthread.scan_bag = False
            self.intelligentthread.move_to_bag_x = False
            self.intelligentthread.move_to_bag_y = False
            if self.intelligentthread.save_video:
                self.intelligentthread.update_savevideo.emit(
                    self.intelligentthread.save_video)
        except Exception as e:
            logger(e.__str__(), "error")
Пример #15
0
    def reset(self):
        '''复位 1:复位 0:取消复位 '''
        try:
            # 写入复位
            self.__write(HOCK_RESET_PLC, 1)
            # 紧急停止清零
            self.__write(HOCK_STOP_PLC, 0)
            # 运动状态清零
            self.__write(HOCK_MOVE_STATUS_PLC, 0)
            self.__write(EAST_PLC, 0)
            self.__write(WEST_PLC, 0)
            self.__write(SOUTH_PLC, 0)
            self.__write(NORTH_PLC, 0)
            self.__write(UP_PLC, 0)
            self.__write(DOWN_PLC, 0)
            self.__write(UP_CARGOHOOK_PLC, 0)
            self.__write(DOWN_CARGOHOOK_PLC, 0)
            self.power = True

        except Exception as e:
            logger("PLC 无法写入数值,请检查端口", level='error')
Пример #16
0
    def check_error(self):

        info = {}
        try:
            south_north = self.__read(SOUTH_NORTH_SERVER_ERROR)
        except Exception as e:
            south_north = 1
            logger("PLC 无法读取{}数值,请检查端口".format('南北伺服寄存器地址'), level='error')

        info['south_north'] = south_north

        try:
            east_server = self.__read(EAST_SERVER_ERROR)
        except:
            east_server = 1
            logger("PLC 无法读取{}数值,请检查端口".format('东伺服寄存器地址'), level='error')

        info['east_server'] = east_server

        try:
            west_server = self.__read(WEST_SERVER_ERROR)
        except:
            west_server = 1  # self.__read(WEST_SERVER_ERROR)
            logger("PLC 无法读取{}数值,请检查端口".format('西伺服寄存器地址'), level='error')

        info['west_server'] = west_server

        try:
            west = self.__read(WEST_LIMIT_ERROR)
        except:
            west = 1
            logger("PLC 无法读取{}数值,请检查端口".format('西限位寄存器地址'), level='error')

        info['west'] = west

        try:
            east = self.__read(EAST_LIMIT_ERROR)
        except:
            east = 1
            logger("PLC 无法读取{}数值,请检查端口".format('东限位寄存器地址'), level='error')
        info['east'] = east

        try:
            north = self.__read(NORTH_LIMIT_ERROR)
        except:
            north = 1
            logger("PLC 无法读取{}数值,请检查端口".format('北限位寄存器地址'), level='error')
        info['north'] = north

        try:
            south = self.__read(SOUTH_LIMIT_ERROR)
        except:
            south = 1
            logger("PLC 无法读取{}数值,请检查端口".format('南限位寄存器地址'), level='error')

        info['south'] = south

        try:
            sourth_north_server_trip_warn = self.__read(
                SOUTH_NORTH_SERVER_TRIP_WARN)
        except:
            sourth_north_server_trip_warn = 1
        info['sourth_north_server_trip_warn'] = sourth_north_server_trip_warn

        try:
            east_west_server1_trip_warn = self.__read(
                EAST_WEST_SERVER1_TRIP_WARN)
        except:
            east_west_server1_trip_warn = 1
        info['east_west_server1_trip_warn'] = east_west_server1_trip_warn

        try:
            east_west_server2_trip_warn = self.__read(
                EAST_WEST_SERVER2_TRIP_WARN)
        except:
            east_west_server2_trip_warn = 1
        info['east_west_server2_trip_warn'] = east_west_server2_trip_warn

        return info
Пример #17
0
    def switch_power(self):

        try:
            self.plchandle.power = True
        except Exception as e:
            logger(e.__str__(), "error")
Пример #18
0
 def hock_stop(self):
     try:
         self.__write(HOCK_MOVE_STATUS_PLC, int(0))
     except Exception as e:
         logger("PLC 无法写入数值,请检查端口", level='error')
Пример #19
0
    def move(self,
             east=0,
             west=0,
             south=0,
             nourth=0,
             up=0,
             down=0,
             up_cargohook=0,
             down_cargohook=0):
        try:
            self.__write(HOCK_MOVE_STATUS_PLC, int(1))  # 钩子运动状态上升

            if east != 0:
                east_server = self.__read(EAST_SERVER_ERROR)
                east_limit = self.__read(EAST_LIMIT_ERROR)
                if (east_server is None
                        or east_server != 1) and (east_limit is None
                                                  or east_limit != -1):
                    self.__write(EAST_PLC, int(east))
                    logger("向东{}cm".format(int(east)), level='info')

            if west != 0:
                west_server = self.__read(WEST_SERVER_ERROR)
                west_limit = self.__read(WEST_LIMIT_ERROR)
                if (west_server is None
                        or west_server != 1) and (west_limit is None
                                                  or west_limit != -1):
                    self.__write(WEST_PLC, int(west))
                    logger("向西{}cm".format(int(west)), level='info')

            if south != 0:
                northsourth_server = self.__read(SOUTH_NORTH_SERVER_ERROR)
                sourth_limit = self.__read(SOUTH_LIMIT_ERROR)
                if (northsourth_server is None or
                        northsourth_server != 1) and (sourth_limit is None
                                                      or sourth_limit != -1):
                    self.__write(SOUTH_PLC, int(south))
                    logger("向南{}cm".format(int(south)), level='info')

            if nourth != 0:
                northsourth_server = self.__read(SOUTH_NORTH_SERVER_ERROR)
                north_limit = self.__read(NORTH_LIMIT_ERROR)
                if (northsourth_server is None
                        or northsourth_server != 1) and (north_limit is None
                                                         or north_limit != -1):
                    self.__write(NORTH_PLC, int(nourth))
                    logger("向北{}cm".format(int(nourth)), level='info')

            # 定位钩上升
            if up != 0:
                self.__write(UP_PLC, int(up))
                logger("向上{}cm".format(int(up)), level='info')
            # 定位钩下降
            if down != 0:
                self.__write(DOWN_PLC, int(down))
                logger("向下{}cm".format(int(down)), level='info')

            # 	货钩上升
            if up_cargohook != 0:
                self.__write(UP_CARGOHOOK_PLC, int(up_cargohook))
                logger("货钩向上{}cm".format(int(up_cargohook)), level='info')

            # 货钩下降
            if down_cargohook != 0:
                self.__write(DOWN_CARGOHOOK_PLC, int(down_cargohook))
                logger("货钩向下{}cm".format(int(down_cargohook)), level='info')

        except Exception as exc:
            logger("PLC 无法写入数值,请检查端口", level='error')
Пример #20
0
 def go_and_back(self):
     try:
         self.__write(GO_AND_BACK, int(1))  # 钩子运动状态上升
     except Exception as exc:
         logger("PLC 无法写入数值,请检查端口", level='error')
Пример #21
0
 def move_status(self, value):
     try:
         self.__write(HOCK_MOVE_STATUS_PLC, int(value))  # 运动状态写入
     except Exception as exc:
         logger("PLC 无法写入数值,请检查端口", level='error')
Пример #22
0
 def speed(self, speed_value):
     try:
         self._speed = speed_value
         self.__write(MOVE_SPEED, speed_value)
     except Exception as e:
         logger(e.__str__(), level="error")
Пример #23
0
 def turnon_lamp(self):
     try:
         self.plchandle.turnon_lamp()
     except Exception as e:
         logger(e.__str__(), "error")