java 读取kepserver_记kepServer读写西门子PLC

本文介绍了如何使用Java通过KepServer读写西门子PLC,详细讲解了西门子PLC中位、字节、字的概念,并提供了将二进制值转换为十进制以置位或读取特定位的方法。通过举例和图解,解释了西门子PLC的低字节高位特性,以及如何在KepServer中进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在程序开发过程中为了测试方法或者验证某个属性的值是否正确 经常通过Kepserver 的 OPC Quick Client来手动置点或者读取点位

例如

4260aabaec7415e0379f1c87763b7423.png

这里显示的值都是经过转化后得到的十进制值,那我们如果要针对该word中的某bit 该如何读取,?

首先理解一下最基本的概念

位:bit 最小的存储单位,bool量, 非0则1,表达两个状态

字节:byte 8位组成一个字节  1byte=8bit

字:word 相邻两个字节组成一个字 即16位  1word=2byte=16bit

双字:double word ,两个字组成一个双字 即32位

注意:西门子的字是双数开头,不能是单数,所以在kepServer编写tag时需要注意

例如:

ffdd7266d58da5e555bb55d532bf9074.png

西门子表达比较特殊,就是低字节高位。高字节低位

我们要想给置点或者读点,我们首先要理解西门子PLC的低位高字节是什么意思,这里我借助百度知道的答案

41c829851863b0a7fd140d587df6ed5b.png

这个图其实已经很明白了,我们借助下图来简单说明一下

feb46d63139f1467e19d780e95e94fe8.png

这是DB83这个数据块中的一个字的数据 一共16位 这个字的地址就是DB83.DBW10

我们在Kepserver中的tag中是这样写的,也就是

9bb9afcdc7c5d3b3a1cf9119d3a7651f.png

对比上面的高字节低位示意图我们把DB83.DBW10这个字展开

DBW10

dbx10.7dbx10.6 dbx10.5 dbx10.4 dbx10.3 dbx10.2 dbx10.1 dbx10.0|  dbx11.7 dbx11.6 dbx11.5 dbx11.4 dbx11.3 dbx11.2 dbx11.1 dbx11.0

这样的话假设DBW10的值为0,我们如果想要将dbx10.4置为1

需要给dbw10赋值  0001 0000 0000 0000

在KepServer中赋值需要将对应二进制转化为10进制 在赋值

借助计算器  我们需要将4096赋值给DBW10

ce63321e96ec78352f287d46fe3a7599.png

打开OPC Quick Client ,给对应tag写值

a0061bbe5b0126081108c34ffbdee955.png

4c99057182c7f25d45af43ec8f176ca0.png

这样就给dbx10.4置为1了

这样就满足我们如何在某一个"字"中的某一"位"置点;

在某一字中读取某一位的值,反过来就可以,

例如 我们读取到该字的值为34257

d3c1ecb561c4083124e4f3226164de13.png

我们想要知道dbx10.2的值是0还是1 ?

我们先把十进制34257转化为二进制

‭1000 0101 1101 0001‬

对比上面DBW10展开的示意图,dbx10.2的值为1

可能写的比较粗糙,望各位看官批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值