s7-1200PLC和第三方扫码枪走以太网通信
前段时间因为客户需求 让我调试一个霍尼韦尔扫码枪 要走以太网通信
之前调的扫码枪基本都是走串口 在网上没查到什么资料 虽然有些小问题 但是最后也算调出来了
后来又遇到一些同行询问扫码枪走以太网的方式 索性就写一篇小教程吧
知识有限 难免出错 欢迎指出
1200走以太网通信一般就是TCP/IP 可能有的会用到UDP
简单来说 TCP通信就是三步 1.建立连接 2.发送/接收数据 3.断开连接 博图对这三个步骤都做了封装 我们只需要填出入库参数即可
博图中有两种TCP通信函数 一种是将3步整合在一起 一种是三步分开调用的函数 如下图
为了更清楚的理解TCP的三个步骤 先讲讲第二种
(1)TCON
TCON就是三步中用来建立连接的函数 调用TCON函数 点击右上角组态
在下方的属性页面出现如下图界面 在伙伴栏选择未指定 然后在连接数据中选择新建
填写伙伴方IP地址 以及伙伴端口号 若扫码枪采用以太网通信 都需要提前配置好IP地址和端口号 端口号要从2000开始
配置好后TCON需要一个使能信号
这里解释一下ID的含义 当客户需要多台设备(不仅仅是扫码枪)都使用同一个IP地址时,就需要通过ID号来区分不同的设备 但是一般情况下IP地址是绝对够用的 所以就为每一个设备分配了单独的地址 因此ID号保持缺省状态就行
(2)TRCV_DB
数据接收函数 需要接入一个使能信号 这里建议使用1s的时钟来进行1s接收一次数据 ID号要与前面建立连接的ID一致
关键点是这个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个数据
因此 在读条码前需要先确定要读条码的长度 然后建立相应长度的数组
造成这种现象的原因还没有搞清楚 客户也不关心这个 数据读出来后就把扫码枪拿走了 我也没用机会再去好好研究了
如果有网友也发现这个问题并且解决了 欢迎给我留言
发送和断开指令基本同上面两个一致 这里就不再做介绍了
/**********************************************************************************************************************************/
2020/9/28更新
关于之前提到的“最后一次扫码时超过200的数据会覆盖数组里前面的数值”
造成这种现象的原因是在没有将数组填满时 数据都是保存在缓冲区 只有充填的数据填满数组时 才会进行一次缓冲区刷新 将数据刷新到数组对应的内存中 也就是在这个时候数组才真正有值
对于这个问题的解决好像还没有什么很好的方法 在高级语言中 如C语言是有缓冲区刷新函数---fflush()的 但是1200好像没有这个功能函数 所以只能确定好要读取的数据的长度 再建立相应长度的数组
s7-1200PLC和第三方扫码枪走以太网通信相关推荐
- 罗克韦尔AB PLC 通过KEPServer实现与西门子1200PLC的以太网通信
罗克韦尔AB PLC 通过KEPServer实现与西门子1200PLC的以太网通信 环境搭建: 软件: Studio 5000 V33.01.01 KEPServerEX 6.4 TIA ...
- 查看PLC IP 端口_详解S7-1500的以太网通信数据类型:TCON_IP_v4
西门子S7系列PLC的开放式以太网通信过程包括如下几个步骤:建立连接(Establish connection).发送/接收数据(Send/receive data).断开连接(Disconnect) ...
- 组态王软件与200smart无线以太网通信方案详解
想要建立组态王软件与S7-200Smart之间 Profinet无线以太网通信,需要采用西门子PLC无线通讯终端--DTD418M,作为实现无线通讯的硬件设备.用户无需更改网络参数和原有程序,也不必了 ...
- S7-1200PLC与MCGS触摸屏实现以太网通信的具体方法示例
S7-1200PLC与MCGS触摸屏实现以太网通信的具体方法示例 具体方法和步骤可参考以下内容: 1. 硬件设置: 如下图所示,将1200PLC和MCGS触摸屏用网线连接以太网接口, 触摸屏上电后出现 ...
- 西门子S7300PLC转以太网连接CHNet-S7300MD实现以太网通信配置方法
西门子S7300PLC转以太网连接CHNet-S7300MD实现以太网通信配置方法 产品简介 兴达易控CHNet-S7300MD用于西门子S7-200/SMART S7-200/S7-300/S7-4 ...
- ETH—Lwip以太网通信
第39章 ETH-Lwip以太网通信 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- 西门子array数据类型_西门子S71200之间以太网通信(图文)
西门子S7-1200之间以太网通信 一.通信前的准备 首先创建新项目,并命名为"s7-1200之间通信",如下图所示: 然后组态设备,选择s7-1200的CPU 1214C DC/ ...
- (三.0)通过FPGA实现以太网通信原理及理解
0.0 OSI模型的简单理解 OSI(Open System Interconnect),即开放式系统互联.一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系 ...
- 串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端
串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端 提供,带注释,带设计文档 使用说明介绍 1.功能介绍: 完成了多路网口和串口数据转换的功能. 可实现串口接收到的数据 ...
- DE2-115 以太网通信之一88E1111网卡接收PC数据
想利用手头上的DE2-115 写一个关于以太网通信的驱动,经过了这么多天的实验调试终于有了一些认识. 1.我在观察网卡发送数据与接收数据的过程中发现,我从fpga上的一个网卡发送数据,然后另一个网卡接 ...
最新文章
- locust入门:单机使用locust运行压力测试
- JDK1.5-1.7 比较二
- 替换Quartus 自带编辑器 (转COM张)
- C++:29 --- C++继承关系下的内存布局(下)
- python如何输入多行数据合并_python 实现将txt文件多行合并为一行并将中间的空格去掉方法...
- matplotlib-快速学习折线图-柱状图2个-饼图-0225
- 二叉树的深度优先遍历原理及python实现
- 计算机辅助园林设计常用软件,计算机辅助园林设计应用探讨.doc
- keepass+onedrive打造密码管理器
- Subversion for Windows 相关工具
- 【Sprint3冲刺之前】TD学生助手——alpha版发布
- wps 宏 禁用_WPS表格如何解除宏禁用
- 苹果鼠标滚轮驱动_如何挑选一款适合自己的游戏鼠标
- 社会工程学攻击选项是_什么是社会工程学,如何避免?
- CAD中属性编辑操作——对象属性
- 把单元格一分为二_excel如何把一个单元格分成两个 excel单元格拆分为二行
- Gradient Boosting算法简介(有python列子)
- 深度学习中优化方法——momentum、Nesterov Momentum、AdaGrad、Adadelta、RMSprop、Adam
- android 音乐文件删除,如何从华为手机恢复已删除的音频或音乐文件
- Matplotlib官方文档学习笔记 PART1-简介 C2-pyplot教程 (19-12-4 by-xieyuxin)
热门文章
- 数学建模PPT(二)
- java access数据库连接_Java Access数据库连接
- ORACLE_mldn_002
- vb学生管理系统服务器编程,利用VB进行服务器编程实例汇总.doc
- 定时下载快速精密星历
- 自己动手写操作系统(高清图书+源代码)分享
- mysql数据库编程第六章试题_2016年计算机二级MySQL数据库试题及答案
- centos7安装其他源以及安装软件
- 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore
- 字体直链提取器_MIUI主题直链提取器下载-MIUI主题直链提取软件 v1.3.5_5577安卓网...