您好,杭州萧优自动化科技有限公司网站欢迎您!

自动化工业产品解决方案公司秉承质量可靠,信誉为重的经营理念
咨询热线

18268107369

您的位置:首页 > 新闻动态 > 内容

西门子S7-200可编程控制器精彩系列面板

2021-03-12

转换

S7-200 SMART

系统手册, V2.5, 01/2020, A5E03822234-AI 249

输入/ / 输出 数据类型 操作数

IN BYTE IBQBVBMBSMBSBLBAC*VD*LD*AC、常数

WORD (BCD_I,

I_BCD)INT

IWQWVWMWSMWSWTCLWAIWAC*VD

*LD*AC、常数

DINT IDQDVDMDSMDSDLDHCAC*VD*LD

*AC、常数

REAL IDQDVDMDSMDSDLDAC*VD*LD*AC、常数

OUT BYTE IBQBVBMBSMBSBLBAC*VD*LD*AC

WORD

BCD_I

I_BCD

IWQWVWMWSMWSWTCLWAC*VD*LD

*AC

INTB_IDI_IIWQWVWMWSMWSWTCLWACAQW

*VD*LD*AC

DINTREAL IDQDVDMDSMDSDLDAC*VD*LD*AC

七段显示器的编码

程序指令

7.5 转换

S7-200 SMART

250 系统手册, V2.5, 01/2020, A5E03822234-AI

示例:使用 SEG 在七段显示屏上显示数值 5 5

LAD STL

Network 1

LD I1.0

SEG VB48, AC1

示例: I_DI DI_R BCD_I

LAD STL

将英寸转换为厘米:

1. 将计数器值(英寸)载入 AC1(执

C10=101)。

2. 将该值转换为实数(执行

VD0=101.0)。

3. 乘以 2.54 转换为厘米 (如:

VD4=2.54VD8=256.54)

4. 将该值转回整数(执行

VD12=257)。

Network 1

LD I0.0

ITD C10, AC1

DTR AC1, VD0

MOVR VD0, VD8

*R VD4, VD8

ROUND VD8, VD12

BCD 值转换为整数(依次执行

AC0=1234BCD_I

AC0=04D2)。

Network 2

LD I0.3

BCDI AC0

另请参见

分配指令的常数值

 程序指令

7.5 转换

S7-200 SMART

系统手册, V2.5, 01/2020, A5E03822234-AI 251

参见

分配指令的常数值 (85)

7.5.2 ASCII 字符数组转换

转换或转换为 ASCII 字符字节数组

ASCII 字符数组指令的字符输入输出采用 BYTE 数据类型。ASCII 字符数组为被引用的字

节地址序列。

由于未使用长度字节,因此该数组并不是 STRING 数据类型。可使用 ASCII 字符串指令

处理 STRING 数据类型的变量。

ASCII 转换为十六进制和十六进制转换为 ASCII

LAD/FBD STL 说明

ATH IN, OUT, LEN

HTA IN, OUT, LEN

ATH 可以将长度为 LEN、从 IN 开始的 ASCII 字符转换为从 OUT

开始的十六进制数。可转换的大 ASCII 字符数为 255 个字符。

HTA 可以将从输入字节 IN 开始的十六进制数转换为从 OUT 开始

ASCII 字符。由长度 LEN 分配要转换的十六进制数的位数。可

以转换的 ASCII 字符或十六进制数的大数目为 255

有效的 ASCII 输入字符为字母数字字符 0 9(十六进制代码值为

30 39)以及大写字符 A F(十六进制代码值为 41 46)。

ENO = 0 时的非致命错误条件 受影响的 SM

0006H 间接地址

0091H 操作数超出范围

SM1.7 ATH:非法 ASCII

SM1.7 ATH:非法 ASCII

输入/ / 输出 数据类型 操作数

IN, OUT BYTE IB, QB, VB, MB, SMB, SB, LB, *VD, *LD, *AC

LEN BYTE IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, Constant

程序指令

7.5 转换

S7-200 SMART

252 系统手册, V2.5, 01/2020, A5E03822234-AI

将数字值转换为用 ASCII 字符表示( ITA DTA RTA

ASCII 字符输出的数字格式:

● 正值写入输出缓冲区时不带符号。

● 负值写入输出缓冲区时带前导负号 (-)

● 小数点左侧的前导零会被隐藏,但与小数点相邻的数字除外。

● 数值在输出缓冲区中是右对齐的。

● 实数:小数点右侧的值取整,以与分配的小数点右侧的位数相符。

● 实数:输出缓冲区的大小必须至少比小数点右侧的位数多三个字节。

整数转换为 ASCII

LAD/FBD STL 说明

ITA IN, OUT, FMT

整数转换为 ASCII 指令可以将整数值 IN 转换为 ASCII 字符数组。格

式参数 FMT 将分配小数点右侧的转换精度,并小数点显示为逗

号还是句点。得出的转换结果将存入以 OUT 分配的地址开始的 8

连续字节中。

ENO = 0 时的非致命错误条件 受影响的 SM

0006H 间接地址

0091H 操作数超出范围

FMT 字节的 4 个有效位的

FMT 位不为零

nnn > 5

输入/ / 输出 数据类型 操作数

IN INT IW, QW, VW, MW, SMW, SW, T, C, LW, AC, AIW, *VD, *LD, *AC,

Constant

FMT BYTE IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, Constant

OUT BYTE IB, QB, VB, MB, SMB, SB, LB, *VD, *LD, *AC

输出缓冲区的大小始终为 8 个字节。通过 nnn 字段分配输出缓冲区中小数点右侧的位

数。nnn 字段的有效范围是 0 5。如果分配 0 位数到小数点右侧,则转换后的值无小数

 程序指令

7.5 转换

S7-200 SMART

系统手册, V2.5, 01/2020, A5E03822234-AI 253

点。对于 nnn 值大于 5 的情况,将使用 ASCII 空格字符填充输出缓冲区。c 位使用

逗号 (c=1) 还是小数点 (c=0) 作为整数部分与小数部分之间的分隔符。4 个有效位必

须始终为零。

下图中给出了一个数值的例子,其格式为使用小数点 (c=0),小数点右侧有三位

(nnn=011)

整数转换为 ASCII (ITA) 指令的 FMT 操作数

双整数转换为 ASCII

LAD/FBD STL 说明

DTA IN, OUT, FMT 双精度整数转换为 ASCI II 指令可将双字 IN 转换为 ASCII 字符数组。

格式参数 FMT 小数点右侧的转换精度。得出的转换结果将存入以

OUT 开头的 12 个连续字节中。

ENO = 0 时的非致命错误条件 受影响的 SM

0006H 无效间接地址

0091H 操作数超出范围

FMT 字节的 4 个有效位的

FMT 位不为零

nnn > 5

• 无

输入/ / 输出 数据类型 操作数

IN DINT ID, QD, VD, MD, SMD, SD, LD, AC, HC, *VD, *LD, *AC, Constant

FMT BYTE IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, Constant

OUT BYTE IB, QB, VB, MB, 输出缓冲区的大小始终为 12 个字节。输出缓冲区中小数点右侧的位数由 nnn 字段分配。

nnn 字段的有效范围是 0 5。如果分配 0 位数到小数点右侧,则转换后的值无小数点。

对于 nnn 值大于 5 的情况,将使用 ASCII 空格字符填充输出缓冲区。c 位使用逗号

(c=1) 还是小数点 (c=0) 作为整数部分与小数部分之间的分隔符。4 个有效位必须始

终为零。

下图给出了一个数值作为示例,其格式为使用小数点 (c=0),小数点右侧有四位

(nnn=100)

双整数转换为 ASCII (DTA) 指令的 FMT 操作数

实数转换为 ASCII

LAD/FBD STL 说明

RTA IN, OUT, FMT

实数转换为 ASCII 指令可将实数值 IN 转换成 ASCII 字符。格式参数

FMT 会小数点右侧的转换精度、小数点显示为逗号还是句点以及

输出缓冲区大小。得出的转换结果会存入以 OUT 开头的输出缓冲区

中。

ENO = 0 时的非致命错误条件 受影 响的 SM

0006H 无效间接地址

0091H 操作数超出范围

nnn > 5

ssss < 3

ssss < OUT 中的字符数

 程序指令

7.5 转换

S7-200 SMART

系统手册, V2.5, 01/2020, A5E03822234-AI 255

输入/ / 输出 数据类型 操作数

IN REAL ID, QD, VD, MD, SMD, SD, LD, AC, *VD, *LD, *AC, Constant

FMT BYTE IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, Constant

OUT BYTE IB, QB, VB, MB, SMB, SB, LB, *VD, *LD, *AC

得出的 ASCII 字符数(或长度)就是输出缓冲区的大小,它的值在 3 15 个字节或字符

之间。

实数格式多支持 7 位有效数字。尝试显示 7 位以上的有效数字将导致舍入错误。

下图显示了 RTA 指令的格式操作数 (FMT)。通过 ssss 字段分配输出缓冲区的大小。0

1 2 个字节大小无效。输出缓冲区中小数点右侧的位数由 nnn 字段分配。nnn 字段的有

效范围是 0 5。如果分配 0 位数到小数点右侧,则转换后的值无小数点。如果 nnn

值大于 5 或者分配的输出缓冲区太小以致无法存储转换后的值,则使用 ASCII 空格填充

输出缓冲区。c 位使用逗号 (c=1) 还是小数点 (c=0) 作为整数部分与小数部分之间的

分隔符。

下图给出了一个数值作为示例,其格式为使用小数点 (c=0)、小数点右侧有一位

(nnn=001)、缓冲区的大小为六个字节 (ssss=0110)

实数转换为 ASCII (RTA) 指令的 FMT 操作数

程序指令

7.5 转换

S7-200 SMART

256 系统手册, V2.5, 01/2020, A5E03822234-AI

示例: ASCII 转换为十六进制

LAD STL

Network 1

LD I3.2

ATH VB30, VB40, 3

1 x”表示“半字节”(字节的一半)不变。

示例:整数转换为 ASCII

LAD STL

VW2 中的整数值转换为从

VB10 开始的 8 ASCII 字符,

使用 16#0B 格式(逗号作小数

点,保留 3 位小数)。

Network 1

LD I2.3

ITA VW2, VB10, 16#0B

示例:实数转换为 ASCII

LAD STL

VD2 中的实数值转换为从

VB10 开始的 10 ASCII

符,使用 16#A3 格式(句点作

小数点,保留 3 位小数)。

Network 1

LD I2.3

RTA VD2, VB10, 16#A3

 程序指令

7.5 转换

S7-200 SMART

系统手册, V2.5, 01/2020, A5E03822234-AI 257

另请参见

分配指令的常数值 (85)

7.5.3 数值转换为 ASCII 字符串

STRING 数据类型的格式

字符串变量是一个字符序列,其中的每个字符均以字节形式存储。STRING 数据类型的第

一个字节定义字符串的长度,即字符字节数。

下图所示为存储器中以变量形式存储的 STRING 数据类型。字符串的长度可以是 0

ASCII 输出数字格式

● 正值写入输出缓冲区时不带符号。

● 负值写入输出缓冲区时带前导负号 (-)

● 小数点左侧的前导零会被隐藏,但与小数点相邻的数字除外。

● 输出字符串中的值为右对齐。

● 实数:小数点右侧的值被舍入为小数点右侧的位数。

● 实数:输出字符串的大小必须比小数点右侧的位数多至少三个字节。

程序指令

7.5 转换

S7-200 SMART

258 系统手册, V2.5, 01/2020, A5E03822234-AI

整数到字符串转换

LAD/FBD STL 说明

ITS IN, OUT, FMT

整数转换为字符串的指令会将整数字 IN 转换为长度为 8 个字符

ASCII 字符串。格式 (FMT) 分配小数点右侧的转换精度,并

小数点显示为逗号还是句点。结果字符串会写入从 OUT

开始的 9 个连续字节中。

ENO = 0 时的非致命错误条件 受影响的 SM

0006H 间接地址

0091H 操作数超出范围

• 格式非法 (nnn > 5)

FMT 字节的四个有效位的 FMT

位不为零

输入/ / 输出 数据类型 操作数

IN INT IWQW, VW, MW, SMW, SW, T, C, LW, AC, AIW, *VD, *LD,

*AC、常数



FMT BYTE IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, 常数

OUT STRING VB, LB, *VD, *LD, *AC

输出字符串的长度始终为 8 个字符。输出缓冲区中小数点右侧的位数由 nnn 字段分配。

nnn 字段的有效范围是 0 5。如果分配 0 位数到小数点右侧,则转换后的值无小数点。

对于 nnn 大于 5 的值,输出为 8 ASCII 空格字符组成的字符串。c 位使用逗号

(c=1) 还是小数点 (c=0) 作为整数部分与小数部分之间的分隔符。格式的有效 4 位必

须是零。

下图还给出了值的示例,其格式为:使用小数点 (c = 0),小数点右侧有三位数 (nnn =

011)OUT 处的值为下一字节地址中存储的字符串的长度。

 程序指令

7.5 转换

S7-200 SMART

系统手册, V2.5, 01/2020, A5E03822234-AI 259

整数转换为 字符串指令的 FMT 参数

双精度整数到字符串转换

LAD/FBD STL 说明

DTS IN, OUT, FMT

双整数转换为字符串的指令会将双整数 IN 转换为长度为 12

字符的 ASCII 字符串。格式 (FMT) 分配小数点右侧的转换精

度,并小数点显示为逗号还是句点。结果字符串会写入从

OUT 处开始的 13 个连续字节中。

ENO = 0 时的非致命错误条件 受影响的 SM

0006H 间接地址

0091H 操作数超出范围

• 格式非法 (nnn > 5)

FMT 字节的四个有效位的 FMT

位不为零

输入/ / 输出 数据类型 操作数

IN DINT IDQD, VD, MD, SMD, SD, LD, AC, HC, *VD, *LD, *AC、常数

FMT BYTE IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, 常数

OUT STRING VB, LB, *VD, *LD, *AC

输出字符串的长度始终为 12 个字符。输出缓冲区中小数点右侧的位数由 nnn 字段。

nnn 字段的有效范围是 0 5。如果分配 0 位数到小数点右侧,则该值不显示小数点。对

nnn 大于 5 的值,输出为 12 ASCII 空格字符组成的字符串。c 位使用逗号

(c=1) 还是小数点 (c=0) 作为整数与小数部分之间的分隔符。格式的高 4 位必须是零。

程序指令

7.5 转换

S7-200 SMART

260 系统手册, V2.5, 01/2020, A5E03822234-AI

下图还给出了一个值的示例,其格式为:使用小数点 (c = 0),小数点右侧有四位数 (nnn

= 100)OUT 处的值为下一字节地址中存储的字符串的长度。

双整数转换为字符串指令的 FMT 操作数

数到字符串转换

LAD/FBD 说明

RTS IN, OUT, FMT

实数转换为字符串的指令会将实数值 IN 转换为 ASCII 字符串。格

(FMT) 分配小数点右侧的转换精度、小数点显示为逗号还是句

点以及输出字符串的长度。转换结果放置在以 OUT 开头的字符串

中。结果字符串的长度在格式中,可以是 3 15 个字符。

ENO = 0 时的非致命错误条件 受影响的 SM

0006H 间接地址

0091H 操作数超出范围

• 格式非法

(nnn > 5)

ssss < 3

ssss < 所需字符数

输入/ / 输出 数据类型 操作数

IN REAL IDQD, VD, MD, SMD, SD, LD, AC, *VD, *LD, *AC、常数

FMT BYTE IBQBVB, MB, SMB, SB, LB, AC, *VD, *LD, *AC、常数

OUT STRING VB, LB, *VD, *LD, *AC

CPU 使用的实数格式支持 7 位有效数字。尝试显示 7 位以上有效数字会产生舍入错

误。

 程序指令

7.5 转换

S7-200 SMART

系统手册, V2.5, 01/2020, A5E03822234-AI 261

输出字符串的长度由 ssss 字段。01 2 个字节大小无效。输出缓冲区中小数点右

侧的位数由 nnn 字段分配。nnn 字段的有效范围是 0 5。如果分配 0 位数到小数点右

侧,则该值不显示小数点。如果 nnn 大于 5,或者因分配的输出字符串长度太小而无法存

储转换的值,则会用 ASCII 空格字符填充输出字符串。c 位使用逗号 (c=1) 还是小数

(c=0) 作为整数与小数部分之间的分隔符。

下图还给出了一个值的示例,其格式为:小数点 (c = 0),小数点右侧有一位数 (nnn =

001),输出字符串的长度为 6 个字符 (ssss = 0110)OUT 处的值为下一字节地址中存储

的字符串的长度。

实数转换为字符串指令的 FMT 操作数

另请参见

分配指令的常数值 (85)

程序指令

7.5 转换

S7-200 SMART

262 系统手册, V2.5, 01/2020, A5E03822234-AI

7.5.4 ASCII 子字符串转换为数值

LAD/FBD STL 说明

STI IN, INDX, OUT

ASCII 子字符串转换为整数值

STD IN, INDX, OUT

ASCII 子字符串转换为双整数值

STR IN, INDX, OUT

ASCII 子字符串转换为实数值

ENO = 0 时的非致命错误条件 受影响的 SM

0006H 间接地址

0091H 操作数超出范围

009BH 索引 = 0

SM1.1 溢出或非法值

SM1.1 溢出或非法值

输入/ / 输出 数据类型 操作数

IN STRING VBLB*VD*LD*AC、常数字符串

INDX BYTE VBIBQBMBSMBSBLBAC*VD*LD*AC、常数

OUT INT VWIWQWMWSMWSWTCLWACAQW

*VD*LD*AC

DINTREAL VDIDQDMDSMDSDLDAC*VD*LD*AC

S_I (整数)和 S_DIS_R (实数)的字符串输入格式

[空格] [+ -] [数字 0 - 9] [. ,] [数字 0 - 9]

INDX 参数

INDX 值通常设为 1,从字符串的个字符开始转换。INDX 值可设置为其它值,以在

字符串中的不同点处开始转换。当输入字符串包含不属于要转换的数字一部分的文本时,

可采用此方法。例如,如果输入字符串为Temperature:77.8”,可将 INDX 设置为 13

跳过字符串开头的单词Temperature:”。

子字符串转换为实数的指令不会转换以科学记数法或指数形式表示实数的字符串。该指令

不会产生溢出错误 (SM1.1),但会将字符串转换为指数之前的实数,然后终止转换。例

如,字符串1.234E6”会转换为实数值 1.234,而不会出现错误。

达到字符串结尾或遇到个无效字符时,转换将终止。无效字符为非数字 (0 - 9) 的字

符或以下字符之一:加号 (+)、减号 (-)、逗号 (,) 或句号 (.)

当转换产生的整数值对于输出值来说过大时,会置位溢出错误 (SM1.1)。例如,当输入字

符串产生的值大于 32767 或小于 -32768 时,子字符串转换为整数的指令会置位溢出错

误。


推荐产品

  • 6SL3210-1KE14-3AB2西门子...
  • 6SL3210-1KE13-2AF2西门子...
  • 6SL3210-1KE11-8UF2西门子...
  • 6SL3220-1YD20-0UB0西门子...
  • 6SL3210-1KE28-4AF1西门子...
  • 6SL3210-1KE27-0AF1西门子...