C#读写西门子PLC中英文字符串数据的学习笔记

最近由于需要对西门子PLC进行字符串类型数据的读写,才专门了解了一下西门子PLC字符串类型的数据的使用及存储形式。在PLC中:

一、String数据类型包含总字符数和当前字符数。 String 类型提供了多达 256个字节,用于在字符串中存储最大总字符数(1 个字节)、当前字符数(1个字节)以及最多 254 个字节。 String 数据类型中的每个字节都可以是从 16#00 到16#FF 的任意值。

由此在PLC中定义一个String类型变量(以地址DB1.00为例)

注:PLC中对变量取消DB块优化选项可看到对应的地址偏移量

  1. 定义了string类型变量a,默认最大长度254,赋初始值为“A”

总字符数

当前字符数

字符1

字符2

字符3

……..

字符254

254

16#FE

1

16#01

‘A’16#41

……..

字节0

字节1

字节2

字节3

字节4

……..

字节255

2. 定义了string类型变量a[10],默认最大长度10,赋初始值为“A”

总字符数

当前字符数

字符1

字符2

字符3

……..

字符10

10

16#0A

1

16#01

‘A’16#41

……..

字节0

字节1

字节2

字节3

字节4

……..

字节11

所以,对PLC中字符串变量进行读写操作时,前两个字节(关于长度)就显得尤为重要,实际上写入字符串类型的数据就是通过向相应地址写入字节数组。

比如入向a[10]中写入“”ABC“”就是向DB0.00开始写入

0x0A,0x04,0x41,0x42,0x43(其中41,42,43对应的是ABC的ASCII码)

这样a[10]中,监视值显示为‘ABC’

总字符数

当前字符数

字符1

字符2

字符3

……..

字符10

10

16#0A

3

16#03

‘A’16#41

‘B’16#42

‘C’16#43

……..

字节0

字节1

字节2

字节3

字节4

……..

字节11

读的时候,就从字节2开始将3个字节长度再转码就得到实际的字符串值了。

以上是对字符串string类型的读写操作。

二、

在PLC中还有一种 宽字符串类型:WString 数据类型支持单字(双字节)值的较长字符串。
第一个字包含最大总字符数;下一个字包含总字符数,接下来的字符串可包含多达 65534个字。 WString 数据类型中的每个字都可以是从 16#0000 到16#FFFF 的任意值。

与String类型形式相似,不过要注意这里是一个字符占一个字的存储空间(即两个字节)这里的A对应的就是16#0041

那么中文字符也是一个字符占一个字存储,比如“你”的Unicode编码16#4F60对应的写进去,注意前两个字(即4个字节是长度信息)也要对应正确,PLC中的监视值才会显示中文字符‘你’。

a[10],数据类型选择Wstring

总字符数

当前字符数

字符1

字符2

字符3

……..

字符10

10

16#000A

3

16#0003

‘你’16#4F60

‘好’16#597D

‘吗’16#5417

……..

字0

字1

字2

字3

字4

……..

字11

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西~风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值