首页 > 编程语言 >倍福PLC与基恩士扫码器SR1000的设置与程序中如何实现解码

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

时间:2022-09-04 22:00:37浏览次数:70  
标签:Code gvl SR1000 士扫 码器 TCP Read Num IP

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

链接: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

 

标签:Code,gvl,SR1000,士扫,码器,TCP,Read,Num,IP
From: https://www.cnblogs.com/lsh-love/p/16640927.html

相关文章

  • esp32使用simpleFoc来接入编码器计算角度与速度
    SimpleFOC是国外无刷电机爱好者,创立的一个开源无刷电机FOC控制项目。   第1章首页(simplefoc.cn)用这个库接编码器非常简单   这是文档  编码器设置(sim......
  • VAE变分自编码器公式推导
    VAE变分推导依赖数学公式(1)贝叶斯公式:\(p(z|x)=\frac{p(x|z)p(z)}{p(x)}\)(2)边缘概率公式:\(p(x)=\int{p(x,z)}dz\)(3)KL散度公式:\(D_{KL}(p||q)=\int{p(x)log\frac{p(x)......
  • 基于HK32F030M的TIM编码接口模式实现编码器信号捕获分析
    基于HK32F030M的TIM编码接口模式实现编码器信号捕获分析1、HK32F030M的TIM编码器接口模式介绍与配置;我们打开《HK32F030M用户手册》找到12.2.16章节,大家请自行阅读改章......
  • FFmpeg学习:编解码器
    视频解码FFMPEG对通用的视频编解码做了统一接口处理的抽象,比如在解码处理时,无须关心其具体的编解码格式,仅需关心其pixfmt即可流程:调用avformat_open_input打开网络流......