BeckHoff <--> 基恩士(CV-X300)三维机械手视觉系统的通讯 控制
一、 BeckHoff与 基恩士 CV-X300采用Profinet通讯
1、硬件配置
2、视觉实例配置
3、
二、通讯接口定义(PLC 增加的结构体数据)
1、 ST_CV_X_Vision_Input 结构体
STRUCT
Cmd_Complete :BOOL; //Turns on when command processing is complete.
Cmd_Err :BOOL; // Turns off when command processing is successful and turns on when it fails.
Cmd_Ready :BOOL; // Turns on when command processes can be received.
Result_Ready :BOOL; //Turns on when data transmission is complete.
Result_OR :BOOL; // Used to output the OR result for the judged value of tools specified in the output settings.
Reserved0_5 :BOOL;
Reserved0_6 :BOOL;
Reserved0_7 :BOOL;
Ready1 :BOOL; // Output when trigger n input is acceptable.
Ready2 :BOOL; //
Ready3 :BOOL; //
Ready4 :BOOL; //
Reserved1_4 :BOOL;
Reserved1_5 :BOOL;
Reserved1_6 :BOOL;
Reserved1_7 :BOOL;
Ack1 :BOOL; //Becomes ON when Trigger 1 input is accepted. Becomes OFF when Trigger 1 input is set to OFF.
Ack2 :BOOL; // Becomes ON when Trigger 2 input is accepted. Becomes OFF when Trigger 2 input is set to OFF.
Ack3 :BOOL; // Becomes ON when Trigger 3 input is accepted. Becomes OFF when Trigger 3 input is set to OFF.
Ack4 :BOOL; // Becomes ON when Trigger 4 input is accepted. Becomes OFF when Trigger 4 input is set to OFF.
Reserved2_4 :BOOL;
Reserved2_5 :BOOL;
Reserved2_6 :BOOL;
Reserved2_7 :BOOL;
Busy :BOOL; // This signal is output during image processing or command processing.
Error :BOOL; //This signal is output while any of system errors occur with the dialog displayed on the screen.
Reserved3_2 :BOOL;
Run :BOOL; //This signal is output when the controller is in Run mode.
Reserved3_4 :BOOL;
Reserved3_5 :BOOL;
OutPut_Img_Busy:BOOL;
OutPut_Img_Status :BOOL;
Tool_Judge_Value : ARRAY [0..7] OF BYTE ;//Returns the judgment value allocated to the bit allocation region 结果判断存储位
Result_Data_128Byte : ARRAY [0..127] OF BYTE;// Result Data
Result_Data_32Byte1 : ARRAY [0..31] OF BYTE;// Result Data
Result_Data_32Byte2 : ARRAY [0..31] OF BYTE;// Result Data
Result_Data_32Byte3 : ARRAY [0..31] OF BYTE;// Result Data
Result_Data_32Byte4 : ARRAY [0..31] OF BYTE;// Result Data
Result_Data_32Byte5 : ARRAY [0..31] OF BYTE;// Result Data
END_STRUCT
2、ST_CV_X_Vision_Output 结构体
STRUCT
Cmd_Request :BOOL; //Requests command execution when the signal switches from OFF to ON.
Reserved0_1 :BOOL;
Reserved0_2 :BOOL;
Result_Ack :BOOL; //Provides notification of data acquisition when the signal switches from OFF to ON.
Error_Reset_Request :BOOL;//Clears Error when the signal switches from OFF to ON.
Reserved0_5 :BOOL;
Reserved0_6 :BOOL;
Reserved0_7 :BOOL;
Trg1 :BOOL; //Allows the camera assigned to trigger ‘n’ to capture images (leading edge synchronization).
Trg2 :BOOL;
Trg3 :BOOL;
Trg4 :BOOL;
Reserved1_4 :BOOL;
Reserved1_5 :BOOL;
Reserved1_6 :BOOL;
Reserved1_7 :BOOL;
Reset :BOOL; //Used to perform reset operation Reset Command = Initialize Controller
EXT :BOOL; //Used to suspend the occurrence of internal triggers and the acceptance of external triggers.
Test :BOOL; //Used to suspend the status output and other outputs for trial run or any other reasons.
Reserved2_3 :BOOL;
Reserved2_4 :BOOL;
Reserved2_5 :BOOL;
Reserved2_6 :BOOL;
Reserved2_7 :BOOL;
Reserved3 :BYTE;
Reserved4_11 :ARRAY [4..11]OF BYTE ;
Parameter_128Byte : ARRAY [0..127] OF BYTE;// Parameter Data
Parameter_32Byte1 : ARRAY [0..31] OF BYTE;// Parameter Data
Parameter_32Byte2 : ARRAY [0..31] OF BYTE;// Parameter Data
Parameter_32Byte3 : ARRAY [0..31] OF BYTE;// Parameter Data
Parameter_32Byte4 : ARRAY [0..31] OF BYTE;// Parameter Data
Parameter_32Byte5 : ARRAY [0..31] OF BYTE;// Parameter Data
END_STRUCT
3、ST_CV_X_Vision_Input_Decode 结构体; Result_Data_128Byte + 32 x 5 Byte = 288 Bytes
STRUCT
ErrorCode :INT; // Status INT12
Reserved14 :INT; // Status INT14
Total_Count :DINT; // Status DINT16
CommandResult :DINT; // Status DINT20
CommandData :ARRAY [1..29] OF DINT; // Vision Check Command Datas DINT 20 - DINT136 (相机命令应答自己设置为 116 ) == Result_Data_128Byte
arrResult_Data :ARRAY [1..8] OF DINT; // Vision Check Result Datas DINT 140 - DINT168 == Result_Data_32Byte1 END_STRUCT
4、ST_CV_X_Vision_Output_Decode 结构体;
Parameter_128Byte
STRUCT
ExecCondNo :DINT; // Control DINT12
CommandNumber :DINT; // Control DINT16
CmdParameter :ARRAY [1..30] OF DINT; // Control Parameter DINT20 - DINT 136
END_STRUCT
END_TYPE
5、ST_CV_X_Vision_Result结构体
STRUCT
JudgeByte4 :BYTE; //Tool Judge Value 0 -7
JudgeByte5 :BYTE; //Tool Judge Value 8 -15
JudgeByte6 :BYTE; //Tool Judge Value 16 -23
JudgeByte7 :BYTE; //Tool Judge Value 24 -31
JudgeByte8 :BYTE; //Tool Judge Value 32 -39
JudgeByte9 :BYTE; //Tool Judge Value 40 -47
JudgeByte10 :BYTE; //Tool Judge Value 48 -55
JudgeByte11 :BYTE; //Tool Judge Value 56 -63
arrResult_Data :ARRAY [1..8] OF DINT; // Vision Check Result Datas
END_STRUCT
三、视觉通讯功能块接口定义
四、通讯功能块FB_TYP_161_Camera_CV_X_V1变量声明
FUNCTION_BLOCK FB_TYP_161_Camera_CV_X_V1_0_1(*---------------------------------------------*)
(*IN variables*)
(*---------------------------------------------*)
VAR_INPUTiIn_idxElement : INT; (* !!!UNIQUE!!! Element identification*)ist_HWIn : ST_CV_X_Vision_Input; (* Profinet-interface: Inputs *) ibImage_StorageEnable :BOOL; // 照片存储使能 istPart_ID : STRING(30); (* Part Barcode *) // Carmera Software Need Config Command Parmeters Length
END_VAR(*---------------------------------------------*)
(*IN/OUT variables*)
(*---------------------------------------------*)
VAR_IN_OUTstINOUT_SYS_CELL :ST_SYS_CELL;
END_VAR(*---------------------------------------------*)
(*OUT variables*)
(*---------------------------------------------*)
VAR_OUTPUTost_HWOut : ST_CV_X_Vision_Output; (* Profinet-interface: Outputs *)oCurrent_Prog_No : INT; oCurrent_Exe_No : INT;
END_VAR(*---------------------------------------------*)
(*Local variables*)
(*---------------------------------------------*)
VARstVision_Data_Decode :ST_CV_X_Vision_Decode; (* Vision Interface Datas *)Dly_Ton : TON;Execution_Timeout : TON;Step :INT;Start_Condition :BOOL;Cmd_No :INT; // 24 =Switch Program Numer,25=Read Prog No,41=Entry Execute No,42=Read Current Execute No,70=Entry String,71=Read String Cmd_Type :BYTE; // (*0= Switch Program Number,1=Switch Excution Condition Number,2=Trigger Check *) Count_No :INT;index :INT:=0;index1 :INT:=0;strTemp :T_MAXSTRING; Data_Barcode :T_MAXSTRING; arrData :ARRAY [0..255]OF BYTE;UnpackDWord :MEM.UnpackDWord;
END_VAR(*----------------------------------------