您的当前位置:首页正文

SIMATIC转换指令

2021-02-07 来源:好走旅游网
9.13

SIMATIC 转换指令

BCD 码转为整数 (BCDI)

即将结果

送入 OUT

IBCD 指令将输入的整数 (IN) 转换成 BCD 码 (OUT)

输入IN的范围是 0 到9999

SM1.6 (BCD 错误)

0006 (间接寻址)

这些指令影响下面的特殊存储器位

  

使 ENO = 0 的错误条件是

址)

0006 (间接寻

如果

小数部分大于 0.5

使 ENO = 0 的错误条件是间)

输入/输出

IN OUT 操 作 数

VD, ID, QD, MD, SMD, AC, LD, HC, 常数, *VD, *AC, SD, *LD VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD 数据类型 REAL DINT

SM4.3 (运行时 SM1.1 (溢出)

取整 (TRUNC)

取整指令 (TRUNC) 将 32 位实数 (IN) 转换成 32 位有符号整数 (OUT) 如果要转换的值是无效的实数溢出位被置位

使 ENO = 0 的错误条件是SM4.3 (运行时间)

SM1.1 (溢出)

输入/输出

IN OUT 操 作 数

VD, ID, QD, MD, SMD, LD, AC, 常数, *VD, *AC, SD, *LD VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD 数据类型 REAL DINT 双整数到整数

双整数到整数转换指令把输入端 (IN) 的双整数转换成一个整数 (OUT)

Òç³öλ±»ÖÃλ

使 ENO = 0 的错误条件是SM4.3 (运行时间)

SM1.1 (溢出)

输入/输出

IN OUT 整数到双整数

操 作 数

VD, ID, QD, MD, SMD, AC, LD, HC, 常数, *VD, *AC, SD, *LD VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC 数据类型 DINT INT 整数到双整数转换指令把把输入端 (IN) 的整数转换成一个双整数 (OUT) 使 ENO = 0 的错误条件是0006 (间接寻址)

输入/输出

IN OUT 整数到实数

操 作 数

VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常数, *AC, *VD, *LD

VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC

数据类型 INT DINT 整数转换到实数时

字节到整数

然后再使用双整数到实数指令

字节到整数转换指令把输入端 (IN) 的字节值转换成一个整数 (OUT)ËùÒÔ

使 ENO = 0 的错误条件是

操 作 数

VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *AC, *VD, *LD VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC 0006 (间接寻址)

输入/输出

IN OUT 整数到字节

数据类型 BYTE INT 整数到字节转换指令把输入端 (IN) 的字转换成一个字节 (OUT)

所有其它的值会造成溢出

使 ENO = 0 的错误条件是SM4.3 (运行时间)

SM1.1 (溢出)

输入/输出

IN OUT

操 作 数

VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常数, *VD, *LD, *AC

VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD 数据类型 INT BYTE

转换指令举例

LADNetwork 1I0.0I_DIENENOINOUTSTLNetwork Network 11 LD I0.0LD I0.0 ITD C10, AC1ITD C10, AC1 DTR AC1, VD0DTR AC1, VD0 MOVR VD0, VD8MOVR VD0, VD8 *R VD4, VD8*R VD4, VD8 ROUND VD8, VD12ROUND VD8, VD12 Network 2LD I3.0 LD I3.0BCDI AC0 BCDI AC0 C10DI_RENENOAC1INOUTVD0VD4MUL_RENENOIN1OUTIN2ROUNDENOENVD8Network 2I3.0INOUT清累加器Clear accumulator1 1.Load counter value (number of inches)AC1(英寸值) AC1将计数器值装入into AC1. Convert to a real转换为实数 number.VD0 Multiply by 2.54 to change2.54转换为厘米 VD8乘以 to centimeters. Convert back to aninteger. VD12 再转换成整数 BCD_IENENOINOUTAC0FBDAC0Network 1I_DII0.0ENENOC10INOUTAC1DI_RENOENAC1INOUTMUL_RENENOVD0IN1OUTVD0VD4IN2VD8VD8ROUNDENENOINOUTVD12Network 2BCD_II3.0ENENOAC0INOUTAC0应 用C10VD0VD4VD8V12双字整数到实数转换和取整101计数 = 101 英寸101.02.54256.542572.54常数(英寸到厘米换算)256.54厘米257厘米BCD 整数转换AC01234BCDIAC004D2图 9-

42 转换指令实例

译码

译码指令 (DECO) 根据输入字节 (IN) 的低四位 (半个字节) 所表示的位号置输出字 (OUT) 的相应位为 1使ENO = 0的错误条件是址)

使 ENO = 0 的错误条件是址)

0006 (间接寻0006 (间接寻

译码和编码举例

LADI3.1DECOENENOINOUT将AC2中的错误码置位STLLD I3.1DECO AC2, VW40FBDAC2VW40I3.1DECOENENOOUTVW40AC2IN应 用AC2 包含错误码3AC2 3DECO1530VW400000 0000 00001000图 9-43 用译码指令设定错误位举例

LADI3.1STLLD I3.1ENCO AC2, VB40把AC2中的错误位转为VB40中的错误码VB40 ENCOENOUTAC2IN应 用AC2包含错误位1590AC2VB401000 0010 0000 0000ENCO 9段码 (SEG)

段码指令 (SEG) 产生点亮七段码显示器的位模式段码值 (OUT)

λµÄÓÐЧÊý×ÖÖµ²úÉúÏàÓ¦µãÁÁ¶Î

Âë

SM4.3 (运行时间)

图 9–45 给出了用段码指令 (SEG) 编码的七段码显示

ASCII 码转为 16 进制 (ATH)

³¤¶ÈΪ LEN 的 ASCII 码字符串转

换成从 OUT 开始的 16 进制数

HTA 指令把从 IN 字符开始

可转换的 16 进制数的最大个

数为 255

39 和 41

ASCII 码到 16 进值ASCII 码)

0006 (间接寻址)

SM1.7 (非法

ʹENO = 0的错误条件是

0006 (间接寻址)

SM1.7 (非法 ASCII 码)

输入/输出 IN, OUT LEN 操 作 数

VB, IB, QB, MB, SMB, LB, *VD, *AC, SB, *LD VB, IB, QB, MB, SMB, LB, AC, 常数, *VD, *AC, SB, *LD 数据类型 BYTE BYTE ASCII 码到 16 进值转换举例

LADI3.2ENVB30 3INLENFBDI3.2VB30 3ENINLENATHENOOUTVB40注应 用VB30334541ATHENOOUTVB40STLLD I3.2 LD I3.2ATH VB30, VB40, 3 ATH VB30, VB40, 3 ATHVB403EAX图 9-47 ASCII 码到 16 进值转换指令举例

整数到 ASCII 码

整数到 ASCII 指令把输入端 (IN) 的整数转换成一个 ASCII串

十进制对位是逗号或间

隔ASCII 码串始终是 8 个字符

SM4.3 (运行时间)

无输出 (非法格式)

输入/输出

IN FMT OUT

操 作 数

VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, 常数, *VD, *AC, *LD

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

数据类型 INT BYTE BYTE

ITA (整数到 ASCII 码转换) 指令的格式操作数 (FMT) 定义如图 9-48 所示

nnn 区指定输出缓冲区中的十进制对位右边的位数

定十进制右对位为 0¶ÔÓÚ´óÓÚ 5 的 nnn

λ c 指定是用逗号 (c=1) 或小数点 (c=0) 作为整数和小数的分割符输出缓冲区按照下面的规则进行格式化

2. 负值带负号写入输出缓冲区

 

4. 在缓冲区中数值采用右对齐

在小数点右边有三位数字(nnn=011)

指  

双整数到 ASCII 码

双整数到 ASCII 指令把输入端 (IN) 的整数转换成一个 ASCII 串十进制对位是逗号或间隔 使 ENO = 0 的出错条件是0006 (间接寻址)

ÖÕÊÇ 12 个字节

表示显示的值没有小数位

填充

Êä³ö»º³åÇøµÄ´óСʼ

nnn 区的有效范围是 0 到 5输出缓冲区用 ASCII 空格高 4 位必须为 0

1. 正值不带符号写入输出缓冲区

3. 小数点左边前的 0 进行删除处理 (除非临近小数点的数字 0)

图 9–49 是采用小数点 (c = 0) 进行格式化的数的格式

FMTMSB7 6 5 4 3 2 1 00Example:000cnnnLSB 

C=逗号(1)或小数点(0) c = comma (1) or decimal point (0)nnn=小数点右边的数字 nnn = digits to right of decimal point in=-12in=1234567OutOutOut+1+2OutOutOutOut+3+4+5+60-123OutOut+7+8.04.OutOutOut+9+10+11012567图 9-49 DTA 指令的 FMT 操作数 . 实数到 ASCII 码

实数到 ASCII 指令把输入端 (IN) 的整数转换成一个 ASCII 串

十进制对位是小数点或间

隔 使 ENO = 0 的出错条件是0006 (间接寻址)

Êä³ö»º³åÇøµÄ´óСÓÉ

ssss 区的值指定1 或 2 个字节是不允许的

nnn 区的有效范围是 0 到 5

输出缓冲区用 ASCII 空格填充高 4 位必须为 0

表示显示的值没有小数位

1. 正值不带符号写入输出缓冲区

3. 小数点左边前的 0 进行删除处理 (除非临近小数点的数字 0)

5. 输出缓冲区的大小必须不小于 3 个字节 6. 在缓冲区中数值采用右对齐

在小数点右边有三位数字 (nnn =001)

MSBLSB7 6 5 4 3 2 1 0s s s s c n n nssss = 输出缓冲区的大小c = 逗号(1)或小数点(0)nnn =小数点右边的位数OutOutOutOutOut+1+2+3+4234.in = 1234.51.0in = -0.0004-3.in = -3.67526.2in = 1.95Out+55070图 9-50 RTA 指令的 FMT 操作数 注意

试图显示大于 7 位有符号数将产生一个错

因篇幅问题不能全部显示,请点此查看更多更全内容