OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4611|回复: 0

s7-1200PLC和第三方扫码枪走以太网通信

[复制链接]

221

主题

221

帖子

0

精华

高级会员

Rank: 4

积分
762
金钱
762
注册时间
2021-5-18
在线时间
28 小时
发表于 2021-6-9 17:22:47 | 显示全部楼层 |阅读模式
前段时间因为客户需求 让我调试一个霍尼韦尔扫码枪 要走以太网通信

之前调的扫码枪基本都是走串口 在网上没查到什么资料 虽然有些小问题 但是最后也算调出来了

后来又遇到一些同行询问扫码枪走以太网的方式 索性就写一篇小教程吧

知识有限 难免出错 欢迎指出



1200走以太网通信一般就是TCP/IP 可能有的会用到UDP

简单来说 TCP通信就是三步 1.建立连接  2.发送/接收数据  3.断开连接  博图对这三个步骤都做了封装 我们只需要填出入库参数即可

博图中有两种TCP通信函数 一种是将3步整合在一起 一种是三步分开调用的函数 如下图

20190829140114901.png

为了更清楚的理解TCP的三个步骤 先讲讲第二种

(1)TCON

TCON就是三步中用来建立连接的函数 调用TCON函数 点击右上角组态

20190829140354171.png

在下方的属性页面出现如下图界面 在伙伴栏选择未指定  然后在连接数据中选择新建


20190829141438943.png
填写伙伴方IP地址 以及伙伴端口号 若扫码枪采用以太网通信 都需要提前配置好IP地址和端口号 端口号要从2000开始

20190829142548648.png

配置好后TCON需要一个使能信号
20190829144148693.png


这里解释一下ID的含义 当客户需要多台设备(不仅仅是扫码枪)都使用同一个IP地址时,就需要通过ID号来区分不同的设备 但是一般情况下IP地址是绝对够用的 所以就为每一个设备分配了单独的地址 因此ID号保持缺省状态就行

(2)TRCV_DB  

数据接收函数 需要接入一个使能信号  这里建议使用1s的时钟来进行1s接收一次数据 ID号要与前面建立连接的ID一致

20190829145328688.png

关键点是这个DATA参数 我第一次建立的是200长度的Array of Word类型数据 但是接收到的数据怎么都不对

后来我直接把扫描枪和笔记本用网线连起来  通过网络调试助手直接在电脑上显示扫到的数据 以16进制显示的情况下 发现扫码枪发送的是ASCII码 一个AXCII码是由8个二进制数组成的 所以我将  "Data.接收的数据" 的类型改为Array[1..200] of Byte

结果进行一次扫码后数组里全是空的 但是数据接收显示已经完成 我就多扫了几次 结果发现只有在将数组全部填满时才会一次性都显示出来 这就造成了另外一个问题

当你的条形码长度为13时 200个长度的数组并不能刚好装下 结果就导致了最后一次扫码时超过200的数据会覆盖数组里前面的数值 文字说的不清楚 就用算式来说明一下

200 ÷ 13 = 15 余 5

当扫码15次时 数组不会显示数据   

第16次扫码时 前5个数据填充在200长度数组的最后5位

剩余的8个数据则依次覆盖了从1开始的8个数据

因此 在读条码前需要先确定要读条码的长度 然后建立相应长度的数组

造成这种现象的原因还没有搞清楚 客户也不关心这个 数据读出来后就把扫码枪拿走了 我也没用机会再去好好研究了

如果有网友也发现这个问题并且解决了 欢迎给我留言

发送和断开指令基本同上面两个一致 这里就不再做介绍了

原文链接:https://www.yunduoketang.com/article/zxjy66.html

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 14:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表