@ -11,6 +11,7 @@ from pymodbus.constants import Endian
MAX_FRAME_SIZE = 1024
setdefaulttimeout ( 2 )
current_path = dirname ( __file__ )
heartbeat = f ' { current_path } /../assets/templates/heartbeat '
class ModbusRequest ( object ) :
@ -27,22 +28,19 @@ class ModbusRequest(object):
try :
self . c . write_register ( 40002 , 1 )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法正常下电, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法正常下电, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def motor_on ( self ) :
try :
self . c . write_register ( 40003 , 1 )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法正常上电, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法正常上电, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def trigger_estop ( self ) :
try :
self . c . write_register ( 40012 , 0 )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法触发软急停, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法触发软急停, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def reset_estop ( self ) :
try :
@ -54,66 +52,50 @@ class ModbusRequest(object):
sleep ( 0.2 )
self . c . write_register ( 40001 , 0 )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法重置软急停, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法重置软急停, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def clear_alarm ( self ) :
try :
self . c . write_register ( 40000 , 1 )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法清除告警, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法清除告警, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def get_cart_vel ( self ) :
try :
results = self . c . read_holding_registers ( 40537 , 7 )
print ( f " cart vel: { results . registers } " )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法读取笛卡尔速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法读取笛卡尔速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def get_jnt_vel ( self ) :
try :
results = self . c . read_holding_registers ( 40579 , 7 )
print ( f " joint vel: { results . registers } " )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法读取关节速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法读取关节速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def get_tcp_vel ( self ) :
try :
results = self . c . read_holding_registers ( 40607 , 7 )
print ( f " tcp vel: { results . registers } " )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法读取TCP速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法读取TCP速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def get_tcp_mag_vel ( self ) :
try :
results = self . c . read_holding_registers ( 40621 , 1 )
print ( f " tcp mag: { results . registers } " )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法读取TCP合成速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法读取TCP合成速度, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def write_act ( self , number ) :
try :
self . c . write_register ( 41000 , number )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法发送执行信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法发送执行信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def read_ready_to_go ( self ) :
try :
results = self . c . read_holding_registers ( 41001 , 1 )
return results . registers [ 0 ]
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法读取准备信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法读取准备信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def read_scenario_time ( self ) :
try :
@ -122,15 +104,13 @@ class ModbusRequest(object):
result = f " { result . decode_32bit_float ( ) : .3f } "
return result
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法读取准备信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法读取准备信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def write_stop0 ( self , number ) :
try :
self . c . write_register ( 41004 , number )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法通过IO操作stop0急停, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法通过IO操作stop0急停, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def write_speed_max ( self , speed ) :
try :
@ -139,16 +119,14 @@ class ModbusRequest(object):
payload = builder . build ( )
self . c . write_registers ( 41005 , payload , skip_encode = True )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法写入速度值, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法写入速度值, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def read_brake_done ( self ) :
try :
results = self . c . read_holding_registers ( 41007 , 1 )
return results . registers [ 0 ]
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法读取制动已执行信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法读取制动已执行信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def write_axis ( self , axis ) :
try :
@ -157,22 +135,19 @@ class ModbusRequest(object):
payload = builder . to_registers ( )
self . c . write_registers ( 41008 , payload )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法写入速度值, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法写入速度值, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def write_probe ( self , probe ) :
try :
self . c . write_register ( 41010 , probe )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法写入速度探测信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法写入速度探测信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
def write_pon ( self , pon ) : # positive or negative
try :
self . c . write_register ( 41011 , pon )
except Exception as Err :
self . w2t ( f " { Err } " )
self . w2t ( " 无法写入正负方向信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
self . w2t ( f " { Err } \n 无法写入正负方向信号, 连接Modbus失败, 需要确认网络是否通畅, 或是未正确导入寄存器文件... " , 0 , 100 , ' red ' , self . tab_name )
class HmiRequest ( object ) :
@ -210,7 +185,7 @@ class HmiRequest(object):
def sock_conn ( self ) :
# while True:
with open ( f " { current_path} /../../assets/templates/ heartbeat" , " r " , encoding = ' utf-8 ' ) as f_hb :
with open ( heartbeat, " r " , encoding = ' utf-8 ' ) as f_hb :
c_state = f_hb . read ( ) . strip ( )
if c_state == ' 0 ' :
try :
@ -223,8 +198,8 @@ class HmiRequest(object):
# self.c_xs.connect(('192.168.84.129', 6666))
self . c_xs . setblocking ( False )
# self.w2t("Connection success", 0, 0, 'green', tab_name=self.tab_name )
with open ( f " { current_path} /../../assets/templates/ heartbeat" , " w " , encoding = ' utf-8 ' ) as f_hb :
self . w2t ( " Connection success " , 0 , 0 , ' green ' , tab_name = self . tab_name )
with open ( heartbeat, " w " , encoding = ' utf-8 ' ) as f_hb :
f_hb . write ( ' 1 ' )
md = ModbusRequest ( self . w2t )
md . reset_estop ( )
@ -233,8 +208,8 @@ class HmiRequest(object):
md . write_probe ( False )
md . write_axis ( 1 )
except Exception as Err :
# self.w2t("Connection failed...", 0, 0, 'red', tab_name=self.tab_name )
with open ( f " { current_path} /../../assets/templates/ heartbeat" , " w " , encoding = ' utf-8 ' ) as f_hb :
self . w2t ( " Connection failed... " , 0 , 0 , ' red ' , tab_name = self . tab_name )
with open ( heartbeat, " w " , encoding = ' utf-8 ' ) as f_hb :
f_hb . write ( ' 0 ' )
def header_check ( self , index , data ) :
@ -272,13 +247,13 @@ class HmiRequest(object):
print ( f " hb = { _flag } " , end = ' ' )
print ( f " len(c_msg) = { len ( self . c_msg ) } " , end = ' ' )
print ( f " len(c_msg_xs) = { len ( self . c_msg_xs ) } " , end = ' \n ' )
with open ( f " { current_path} /../../assets/templates/ heartbeat" , " w " , encoding = ' utf-8 ' ) as f_hb :
with open ( heartbeat, " w " , encoding = ' utf-8 ' ) as f_hb :
f_hb . write ( _flag )
if _flag == ' 0 ' :
# self.w2t(f"{_id} 心跳丢失,连接失败,重新连接中...", 0, 7, 'red', tab_name=self.tab_name)
self . w2t ( f " " , 0 , 7 , ' red ' , tab_name = self . tab_name )
sleep ( 1.5 )
# with open(f"{current_path}/../ ../ assets/templates/c_msg.log", "w", encoding='utf-8') as f:
# with open(f"{current_path}/../ assets/templates/c_msg.log", "w", encoding='utf-8') as f:
# for msg in self.c_msg:
# f.write(str(loads(msg)) + '\n')
@ -591,7 +566,7 @@ class HmiRequest(object):
if flg == 0 : # for old protocols
req = None
try :
with open ( f ' { current_path } /../ ../ assets/templates/{ command } .json ' , encoding = ' utf-8 ' ,
with open ( f ' { current_path } /../ assets/templates/{ command } .json ' , encoding = ' utf-8 ' ,
mode = ' r ' ) as f_json :
req = load ( f_json )
except :