各位前辈,我读别人写好的程序,发现111报文的STW1位顺序与建立读写数据区顺序不一致。
建立的读写数据区位顺序
DATA_BLOCK Interface_RotationLeft
TITLE =
VERSION : 0.1
STRUCT
Pos_Axis1 : S120_111_Telegram;
NoCycle_Write : Non_Cycle_Write;
END_STRUCT ;
BEGIN
Pos_Axis1.SND.CTW1.JOG1 := FALSE;
Pos_Axis1.SND.CTW1.JOG2 := FALSE;
Pos_Axis1.SND.CTW1.Control_by_PLC := FALSE;
Pos_Axis1.SND.CTW1.Ref_Start := FALSE;
Pos_Axis1.SND.CTW1.Reserved1 := FALSE;
Pos_Axis1.SND.CTW1.Ext_block_change := FALSE;
Pos_Axis1.SND.CTW1.Reserved3 := FALSE;
Pos_Axis1.SND.CTW1.Reserved4 := FALSE;
Pos_Axis1.SND.CTW1.OFF1 := FALSE;
Pos_Axis1.SND.CTW1.OFF2 := FALSE;
Pos_Axis1.SND.CTW1.OFF3 := FALSE;
Pos_Axis1.SND.CTW1.Enable_Control := FALSE;
Pos_Axis1.SND.CTW1.Reject_travel_task := FALSE;
Pos_Axis1.SND.CTW1.Intermeadiate_Stop := FALSE;
Pos_Axis1.SND.CTW1.Active_travel_task := FALSE;
Pos_Axis1.SND.CTW1.Reset_fault := FALSE;
标准的STW1报文顺序
Pos_Axis1.SND.CTW1.OFF1 := FALSE;
Pos_Axis1.SND.CTW1.OFF2 := FALSE;
Pos_Axis1.SND.CTW1.OFF3 := FALSE;
Pos_Axis1.SND.CTW1.Enable_Control := FALSE;
Pos_Axis1.SND.CTW1.Reject_travel_task := FALSE;
Pos_Axis1.SND.CTW1.Intermeadiate_Stop := FALSE;
Pos_Axis1.SND.CTW1.Active_travel_task := FALSE;
Pos_Axis1.SND.CTW1.Reset_fault := FALSE
Pos_Axis1.SND.CTW1.JOG1 := FALSE;
Pos_Axis1.SND.CTW1.JOG2 := FALSE;
Pos_Axis1.SND.CTW1.Control_by_PLC := FALSE;
Pos_Axis1.SND.CTW1.Ref_Start := FALSE;
Pos_Axis1.SND.CTW1.Reserved1 := FALSE;
Pos_Axis1.SND.CTW1.Ext_block_change := FALSE;
Pos_Axis1.SND.CTW1.Reserved3 := FALSE;
Pos_Axis1.SND.CTW1.Reserved4 := FALSE;
不理解为什么第一、第二字节要调换。
还有一问题,该数据区域的状态字还包括报文格式不包括的内容如下:
Pos_Axis1.RCV.Actual_Motor_Speed := L#0;
Pos_Axis1.RCV.Fault_Code := W#16#0;
Pos_Axis1.RCV.Warn_Code := W#16#0;
Pos_Axis1.RCV.Actual_Velocity := 0;
Pos_Axis1.Actual_Temp := 0;
Pos_Axis1.Spare := 0;
Pos_Axis1.Actual_Voltage := 0;
Pos_Axis1.Spare2 := 0;
Pos_Axis1.Actual_Current := 0;
Pos_Axis1.Spare3 := 0;
Pos_Axis1.Actual_Torque := 0;
SFC14读的范围包含它,这样能读出吗。不理解。请各位前辈提点一下。谢谢!