倍福PLC与基恩士扫码器SR1000的设置与程序中如何实现解码

2022/9/5 14:24:14

本文主要是介绍倍福PLC与基恩士扫码器SR1000的设置与程序中如何实现解码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

基恩士扫码器软件安装包地址:

链接:https://pan.baidu.com/s/1zX_kbIi-lpn-O8drUErlow
提取码:3023

1.首先进行对象的搜寻与配置

 

2.设置图像界面与如何保证每次都扫码成功

 

 

1.在界面中能保证二维码全部显示在界面中,首次使用先使用自动对焦保证二维码能读取,为保证每次扫码都成功,需退出软件重新找寻设备,打开画面保证一打开就能扫上吗就OK,这个位置为比较好的扫码为。

 

3.PLC做从站如何建立

fbSocketConnect(
sSrvNetId:= ,
sRemoteHost:='169.254.0.156',                           //TCP/IP Server的IP地址
nRemotePort:=6000 ,                                         //TCP/IP Server的I端口号6000
bExecute:= bExecute, //TCP/IP连接的执行位*)  //一直触发
tTimeout:=T#1S ,
bBusy=> ,
bError=> ,
nErrId=> ,
hSocket=>hSocket ); //通过SocketConnect获取句柄,供后续FB使用
//TCP/IP的发送功能块
fbSocketSend(
sSrvNetId:= ,
hSocket:=hSocket , //TCP/IP的句柄
cbLen:=SIZEOF(arrSendData) ,//TCP/IP发送数据的长度
pSrc:=ADR (arrSendData), //TCP/IP发送数据的指针起始地址
bExecute:=bSend, //TCP/IP发送的执行位
tTimeout:= T#1S,
bBusy=> ,
bError=> ,
nErrId=> );
//TCP/IP的写入的功能块
fbSocketReceive(
sSrvNetId:= ,
hSocket:=hSocket , //TCP/IP的句柄
cbLen:=SIZEOF(arrRecieveData) , //TCP/IP接收数据的长度
pDest:=ADR (arrRecieveData) , //TCP/IP接收数据的指针起始地址
bExecute:=bRecieve, //TCP/IP接收的执行位
tTimeout:= T#1S ,
bBusy=> ,
bError=> ,
nErrId=> ,
nRecBytes=> );
//TCP/IP的关闭建立连接的功能块
fbSocketClose(
sSrvNetId:= ,
hSocket:=hSocket , //TCP/IP的句柄
bExecute:=bClose , //TCP/IP关闭连接执行位
tTimeout:=T#1S ,
bBusy=> ,
bError=> ,
nErrId=> );

//tcp读取错误重联
fbSocketReceive_e_t(in:=fbSocketReceive_err,pt:=T#2S);
fbSocketReceive_e_r(clk:=(fbSocketReceive.bError ) AND NOT HMI.bRestart_TCP_TEST);
IF fbSocketReceive_e_r.Q THEN
fbSocketReceive_err:=TRUE; //读取错误
HMI.bRestart_TCP:=FALSE; //重联TCP
HMI.bRestart_TCP_TEST:=TRUE; //重联TCP保持位
END_IF
IF fbSocketReceive_e_t.Q THEN
fbSocketReceive_err:=FALSE; //读取错误

END_IF

bExecute:=NOT fbSocketReceive_err;

4.传输数据处理

(**** 1、接收自动程序读取信号bAutoRead,发送io.bBackup_do13
2、当数据接收完成信号io.bBackup6_di,发送读取扫码内容
3、接收扫码内容,进行转码,若读取长度<4,报错
Read_Num_Time: ARRAY[0..2] OF TON; //扫码定时器
Read_Num_R: ARRAY[0..2] OF r_trig; //扫码定时器*)
(***********************************************************************************)
//基恩士扫码器TCP数据读取
//触发
//io.bScan_code_o:=bRead_Num;
gvl.Read_Num_Time[0](in:=io.bScan_code_o,pt:=T#0.1S);
gvl.Read_Num_R[0](clk:=gvl.Read_Num_Time[0].Q);
IF bRead_Num THEN
io.bScan_code_o:=TRUE; //扫码器IO触发

END_IF
IF gvl.Read_Num_R[0].Q THEN
io.bScan_code_o:=bRead_Num:=FALSE;
bRecieve1:=TRUE; //TCP接收触发
arrRecieveData:=OUT_Code:=Code_err:='';
gvl.Read_Num_Time[0](in:=FALSE,pt:=T#0.1S);
gvl.Read_Num_R[0](clk:=FALSE);
END_IF
gvl.Read_Num_Time[2](in:=bRecieve1,pt:=T#1S);
gvl.Read_Num_R[2](clk:=gvl.Read_Num_Time[2].Q);
IF gvl.Read_Num_R[2].Q THEN
io.bScan_code_o:=bRead_Num:=FALSE;
bRecieve1:=FALSE; //TCP接收触发
bRecieve:=TRUE; //TCP接收触发
gvl.Read_Num_Time[2](in:=FALSE,pt:=T#1S);
gvl.Read_Num_R[2](clk:=FALSE);
END_IF
gvl.Read_Num_Time[1](in:=bRecieve,pt:=T#0.5S);
gvl.Read_Num_R[1](clk:=gvl.Read_Num_Time[1].Q);
IF gvl.Read_Num_R[1].Q THEN
bRecieve:=FALSE; //TCP接收触发
test:=TRUE; //字符处理触发
gvl.Read_Num_Time[1](in:=FALSE,pt:=T#0.5S);
gvl.Read_Num_R[1](clk:=FALSE);
END_IF

//字符串处理
test_t(clk:=test);
IF test_t.Q THEN
Code_err:='';
HMI.wSMQValue:='';
OUT_Code:=arrRecieveData; //tcp接收到值
arrRecieveData:='';
// OUT_Code1:=arrRecieveData;
// OUT_Code:=CONCAT(STR1:=Read_Code , STR2:=Code_enter ); //字符串串联
Code_del:=FIND(STR1:=OUT_Code , STR2:=Code_enter ); //搜索字符位置
Code_Length:=LEN(STR:=OUT_Code ); //字符串长度
OUT_Code1:=DELETE(STR:=OUT_Code , LEN:=Code_Length-Code_del+1 , POS:=Code_del ); //输出字符
Code_err:=LEFT(STR:= OUT_Code, SIZE:=5 ); //取出左边5位号码

IF Code_err='ERROR' OR Code_err='' THEN
hmi.iSM_Err_Num:=hmi.iSM_Err_Num+1;
HMI.wSMQValue:='ERROR';
IF hmi.iSM_Err_Num>=10 THEN
HMI.All_Err.9:=TRUE; //扫码错误
HMI.wSMQValue:='ERROR';
hmi.iSM_Err_Num:=0;
IF OUT_Code='' THEN
HMI.bRestart_TCP_TEST:=FALSE; //重联TCP保持位
END_IF
END_IF
ELSIF Code_err<>'ERROR' AND Code_err<>'' AND Code_Length>10 THEN
bRead_END:=TRUE; //扫码完成
HMI.bRestart_TCP_TEST:=FALSE; //重联TCP保持位
HMI.wSMQValue:=OUT_Code;
OUT_Code1:='';
hmi.iSM_OK_Num:=hmi.iSM_OK_Num+1;
hmi.iSM_Err_Num:=0;
Code_Length:=0;

END_IF
test:=FALSE;
END_IF

 



这篇关于倍福PLC与基恩士扫码器SR1000的设置与程序中如何实现解码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程