附录342
输入输出参数 数据类型 适用操作数
IN1 实数 ID, QD, MD, SD, SMD, VD, LD, AC, 常数, *VD, *LD, *ACIN2 实数 ID, QD, MD, SD, SMD, VD, LD, AC, 常数, *VD, *LD, *AC功能说明:
无论使能位状态如何,\"比较\"指令均会执行。实数比较指令用于比较两个实数的值,实数比较带符号。
在 STL 中,比较结果为真时,栈顶值为 1。
在 LAD 中,比较结果为真时,触点打开。
<注意> 执行比较指令时如出现以下错误为致命错误,会使 CTSC-200 立即停止执行程序: 非法间接地址
比较实数指令中存在非法实数(例如,NAN)
为防止出现以上错误,请确保在使用比较指令前指针已正确初始化并且参数中不存在非法实数。传送指令
字节赋值指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 无
指令列表: MOVB IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *LD, *ACOUT 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC功能说明:字节赋值指令(MOVB)将输入字节 IN 的值拷贝赋给输出字节型变量OUT。双字赋值指令 设置 ENO = 0的错误条件 0006 间接地址
MagicWorks PLC 编程软件用户手册
343
影响的特殊内存位 无
指令列表: MOVD IN OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 双字
VD, ID, QD, MD, SD, SMD, LD, HC, &VB, &IB, &QB, &MB, &SB, &T, &C, &SMB, &AIW, &AQW AC, 常数, *VD, *LD, *ACOUT 双字 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC功能说明:双字赋值指令(MOVD)将输入双字 IN 的值拷贝赋给输出双字型变量OUT。浮点数赋值指令
设置 ENO = 0的错误条件 0006 间接地址
影响的特殊内存位 无
指令列表: MOVR IN OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 浮点数 VD, ID, QD, MD, SD, SMD, LD, AC, 常数, *VD, *LD, *ACOUT 浮点数 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC功能说明:浮点数赋值指令(MOVR)将输入实数 IN 的值拷贝赋给输出浮点型变量OUT。字赋值指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 无
指令列表: MOVW IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
附录344
IN 字
VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, 常数, AC, *VD, *AC, *LD
OUT 字
VW, T, C, IW, QW, SW, MW, SMW, LW, AC, AQW, *VD, *AC, *LD
功能说明:字赋值指令(MOVW)将输入字 IN 的值拷贝赋给输出字型变量OUT。存 储 数 据 记 录 到
存储卡
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 无
指令列表: SDL LOG, BUF
梯形图:
输入输出参数 数据类型 适用操作数
LOG 字节 常数 0~3
BUF 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC功能说明:将当前项目中的数据记录 LOG 拷贝到存储卡中。
存储配方到存储卡
设置 ENO = 0的错误条件 0006 间接地址
影响的特殊内存位 无
指令列表: SRCP RCP, DATA, BUF
梯形图:
输入输出参数 数据类型 适用操作数
RCP 字节 常数 0~3
DATA 字
VW, T, C, IW, QW, SW, MW, SMW, LW, AC, AQW, *VD, *AC, *LD
BUF 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC功能说明:将当前项目中的配方 RCP 拷贝到存储卡中。
从存储卡装载配方 设置 ENO = 0的错误条件 无
MagicWorks PLC 编程软件用户手册
345
影响的特殊内存位 无
指令列表: LRCP RCP, DATA, BUF
梯形图:
输入输出
参数
数据类型 适用操作数
RCP 字节 常数 0~3
DATA 字 VW, T, C, IW, QW, SW, MW, SMW, LW, AC, AQW, *VD, *AC, *LDBUF 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC
功能说明:将存储卡上的配方 RCP 拷贝到以 BUF 指定的地址为起始地址的内存中。字节交换指令
设置 ENO = 0的错误条件 0006 间接地址
影响的特殊内存位 无
指令列表: SWAP IN
梯形图:
输入输出参数 数据类型 适用操作数
IN 字 VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *AC, *LD功能说明:字节交换指令(SWAP)交换输入字 IN 的高位字节和低位字节。赋值字节立即读取
指令
设置 ENO = 0的错
误条件
0006 间接地址
无法存取扩充模块(仅限立即指令)影响的特殊内存位 无
指令列表: BIR IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
附录346
IN 字节 IB, *VD, *LD, *AC
OUT 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD功能说明:赋值字节立即读取指令(BIR)读取物理端口输入字节 IN 的值,并将结果拷贝赋给OUT 指定的地址中,不更新进程映像寄存器。
赋值字节立即写入
指令
设置 ENO = 0的错
误条件
0006 间接地址
无法存取扩充模块(仅限立即指令)影响的特殊内存位 无
指令列表: BIW IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LDOUT 字节 QB, *VD, *LD, *AC
功能说明:赋值字节立即写入指令(BIW)从读取输入字节 IN 的值,并将值立即写入指定的物理端口 OUT 和对应的进程映像寄存器。
成块赋值字节指令
设置ENO = 0的错误
条件
0006 间接地址
0091 操作数超出范围影响的特殊内存位 无
指令列表: BMB IN, OUT, N
梯形图:
输入输出参数 数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SB, SMB, LB, *VD, *AC, *LD
OUT 字节 VB, IB, QB, MB, SB, SMB, LB, *VD, *AC, *LD
N 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LD功能说明:成块赋值字节指令(BMB)将从起始地址 IN 开始的 N 个字节的值拷贝赋给从输出地址 OUT 开始的 N 个字节,N 的范围为 1 至 255。
成块赋值双字指令 设置 ENO = 0的错误 0006 间接地址
MagicWorks PLC 编程软件用户手册
347
条件 0091 操作数超出范围影响的特殊内存位 无
指令列表: BMD IN, OUT, N
梯形图:
输入输出参数 数据类型 适用操作数
IN 双字 VD, ID, QD, MD, SD, SMD, LD, *VD, *AC, *LD
OUT 双字 VD, ID, QD, MD, SD, SMD, LD, *VD, *AC, *LD
N 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LD功能说明:成块赋值双字指令(BMD)将从起始地址 IN 开始的 N 个双字的值拷贝赋给从输出地址 OUT 开始的 N 个双字,N 的范围为 1 至 255。
成块赋值字指令
设置 ENO = 0的错误
条件
0006 间接地址
0091 操作数超出范围影响的特殊内存位 无
指令列表: BMW IN, OUT, N
梯形图:
输入输出参数 数据类型 适用操作数
IN 字 VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, *VD, *LD, *ACOUT 字 VW, IW, QW, MW, SW, SMW, LW, T, C, AQW, *VD, *LD, *ACN 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LD功能说明:成块赋值字指令(BMW)将从起始地址 IN 开始的 N 个字的值拷贝赋给从输出地址 OUT 开始的 N 个字,N 的范围为 1 至 255。整数计算指令
字节自加自减指令
设置 ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出
附录348
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
指令列表:
INCB OUT
DECB OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *LD, *ACOUT 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC功能说明:
字节自加指令(INCB)在输入字节 IN 上加 1,并将加 1 的结果放入OUT 指定的地址中。字节自减指令(DECB)在输入字节 IN 上减 1,并将减 1 的结果放入OUT 指定的地址中。字节自加和自减运算不带符号。
在 LAD 中:IN + 1 = OUT
IN - 1 = OUT
在 STL 中:OUT + 1 = OUT
OUT - 1 = OUT
双整数自加自减指令
设置 ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
SM1.2 负结果
指令列表:
INCD OUT
DECD OUT
梯形图:
MagicWorks PLC 编程软件用户手册
349
输入输出参数 数据类型 适用操作数
IN 双整数 VD, ID, QD, MD, SD, SMD, LD, AC, HC, 常数, *VD, *LD, *ACOUT 双整数 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC功能说明:
双整数自加指令(INCD)在输入双字 IN 上加 1,并将加 1 的结果放入OUT 指定的地址中。双整数自减指令(DECD)在输入双字 IN 上减 1,并将减 1 的结果放入OUT 指定的地址中。双整数自加和自减运算带符号(16#7FFFFFFF > 16#80000000)。在 LAD 中: IN + 1 = OUT
IN - 1 = OUT
在 STL 中: OUT + 1 = OUT
OUT - 1 = OUT
整数自加自减指令
设置 ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
SM1.2 负结果
指令列表:
INCW OUT
DECW OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 整数
VW, IW, QW, MW, SW, SMW, AC, AIW, LW, T, C, 常数, *VD, *LD, *AC
OUT 整数
VW, IW, QW, MW, SW, SMW, LW, AC, T, C, *VD, *LD, *AC整数
功能说明:
整数自加指令(INCW)在输入字 IN 上加 1,并将加 1 的结果放入 OUT 指定的地址中。整数自减指令(DECW)在输入字 IN 上减 1,并将减 1 的结果放入OUT 指定的地址中。整数自加和自减运算带符号(16#7FFF > 16#8000)。
在 LAD 中:IN + 1 = OUT
附录350
IN - 1 = OUT
在 STL 中:OUT + 1 = OUT
OUT - 1 = OUT
整数与双整数的乘
除指令
设置 ENO = 0的错误条件
0006 间接地址SM1.1 溢出
SM1.3 除数为0
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
SM1.2 负结果
SM1.3 除数为0
指令列表:
MUL IN1 OUT
DIV IN1 OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN1 整数
VW, IW, QW, MW, SW, SMW, T, C, LW, AC, AIW, 常数, *VD, *LD, *AC
IN2 整数
VW, IW, QW, MW, SW, SMW, T, C, LW, AC, AIW, 常数, *VD, *LD, *AC
OUT 双整数 VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC功能说明:
在 STL 乘法指令中,32 位 OUT 的低位字(16 位)被用作乘数之一。在STL 除法指令中,32位 OUT 的低位字(16 位)被用作除数。特殊内存(SM)位指示错误和非法数值。如果在除法运算过程中设置 SM1.3(除以零),则其他数学状态位被保留不变。否则,在完成数学运算时,所有受支持的数学状态位均包含有效状态。
在 LAD 中:IN1 * IN2 = OUT
IN1 / IN2 = OUT
在 STL 中:IN1 * OUT = OUT
OUT / IN1 = OUT
双整数加减乘除指令 设置 ENO = 0的错误条件
0006 间接地址SM1.1 溢出
SM1.3 除数为0(/I)
MagicWorks PLC 编程软件用户手册
351
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
SM1.2 负结果
SM1.3 除数为0(/I)
指令列表:
+D IN1 OUT
-D IN1 OUT
*D IN1 OUT
/D IN1 OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN1 双整数 VD, ID, QD, MD, SMD, SD, LD, AC, HC, 常数, *VD, *LD, *ACIN2 双整数 VD, ID, QD, MD, SMD, SD, LD, AC, HC, 常数, *VD, *LD, *ACOUT 双整数 VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC功能说明:
双整数加法运算指令(+D)将两个 32 位整数相加,并将计算结果(32 位整数)放入OUT指定的地址中。如果结果超出 32 位长度表示范围,则设置溢出位。
双整数减法运算指令(-D)将两个 32 位整数相减,并将计算结果(32 位整数)放入OUT指定的地址中。如果结果超出 32 位长度表示范围,则设置溢出位。
双整数乘法运算指令(*D)将两个 32 位整数相乘,并将乘积结果(32 位整数)放入OUT指定的地址中。如果结果超出 32 位长度表示范围,则设置溢出位。
双整数除法运算指令(/D)将两个 32 位整数相除,并将商(32 位整数)放入OUT 指定的地址中,不保留余数。如果结果超出 32 位长度表示范围,则设置溢出位。在 LAD 中:IN1 + IN2 = OUT
IN1 - IN2 = OUT
IN1 * IN2 = OUT
IN1 / IN2 = OUT
在 STL 中:IN1 + OUT = OUT
OUT - IN1 = OUT
IN1 * OUT = OUT
OUT / IN1 = OUT
SM1.1 指示溢出错误和非法数值。如果设置 SM1.1,则 SM1.0 和 SM1.2 状态无效,且原来的
附录352
输入操作数不改动。如果未设置 SM1.3,则数学操作完成,并产生有效的结果,且SM1.0和SM1.2 包含有效状态。如果在除法运算过程中设置 SM1.3,则其他数学状态位将保持不变。整数加减乘除指令
设置 ENO = 0的错误条件
0006 间接地址
SM1.1 溢出
SM1.3 除数为0(/I)
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
SM1.2 负结果
SM1.3 除数为0(/I)
指令列表:
+I IN1 OUT
-I IN1 OUT
*I IN1 OUT
/I IN1 OUT
梯形图:
输入输出参数 数据类型 适用操作数IN1 整数
VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常数, *VD, *LD, *AC
IN2 整数
VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常数, *VD, *LD, *AC
OUT 整数 VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *LD, *AC功能说明:
整数加法运算指令(+I)将两个 16 位整数相加,并将计算结果(16 位整数)放入OUT指定的地址中。如果结果超出 16 位长度表示范围,则设置溢出位。
整数减法运算指令(-I)将两个 16 位整数相减,并将计算结果(16 位整数)放入OUT指定的地址中。如果结果超出 16 位长度表示范围,则设置溢出位。
整数乘法运算指令(*I)将两个 16 位整数相乘,并将乘积结果(16 位整数)放入OUT指定的地址中。如果结果超出 16 位长度表示范围,则设置溢出位。
整数除法运算指令(/I)将两个 16 位整数相除,并将商(16 位整数)放入OUT 指定的地址中,不保留余数。如果结果超出 16 位长度表示范围,则设置溢出位。
在 LAD 中:IN1 + IN2 = OUT
IN1 - IN2 = OUT
IN1 * IN2 = OUT
MagicWorks PLC 编程软件用户手册
353
IN1 / IN2 = OUT
在 STL 中:IN1 + OUT = OUT
OUT - IN1 = OUT
IN1 * OUT = OUT
OUT / IN1 = OUT
SM1.1 指示溢出错误和非法数值。如果设置 SM1.1,则 SM1.0 和 SM1.2 状态无效,且原来的输入操作数不改动。如果未设置 SM1.3,则数学操作完成,并产生有效的结果,且SM1.0和SM1.2 包含有效状态。如果在除法运算过程中设置 SM1.3,则其他数学状态位将保持不变。浮点数运算
浮点数加减乘除指令
设置 ENO = 0的错误条件
0006 间接地址SM1.1 溢出
SM1.3 除数为0(/R)
影响的特殊内存位
SM1.0 零结果SM1.1 溢出
SM1.2 负结果SM1.3 除数为0(/R)
指令列表:
+R IN1 OUT
-R IN1 OUT
*R IN1 OUT
/R IN1 OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN1 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, 常数, *VD, *LD, *ACIN2 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, 常数, *VD, *LD, *ACOUT 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC功能说明:
浮点数加法指令(+R)将两个 32 位实数相加,并将计算结果(32 位实数)放入OUT指定的地址中。
附录354
浮点数减法指令(-R)将两个 32 位实数相减,并将计算结果(32 位实数)放入OUT指定的地址中。
浮点数乘法指令(*R)将两个 32 位实数相乘,并将乘积(32 位实数)放入OUT 指定的地址中。浮点数除法指令(/R)将两个 32 位实数相除,并将商(32 位实数)放入OUT 指定的地址中。在 LAD 中:IN1 + IN2 = OUT
IN1 - IN2 = OUT
IN1 * IN2 = OUT
IN1 / IN2 = OUT
在 STL 中:IN1 + OUT = OUT
OUT - IN1 = OUT
IN1 * OUT = OUT
OUT / IN1 = OUT
SM1.1 指示溢出错误和非法数值。如果在除法运算中设置 SM1.3,则其他数学状态位不变,而且原始输入操作数也不变。SM1.1 用于表示溢出错误和非法数值。如果设置SM1.1,则SM1.0和 SM1.2 状态无效,原始输入操作数不变。如果在除法运算过程中未设置SM1.1 和SM1.3,则说明数学运算已完成,得出有效结果,而且 SM1.0 和 SM1.2 包含有效状态。自然对数自然指数指令
设置 ENO = 0的错误条件
0006 间接地址SM1.1 溢出
影响的特殊内存位
SM1.0 零结果SM1.1 溢出
SM1.2 负结果指令列表:
LN IN, OUT
EXP IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, 常数, *VD, *LD, *ACOUT 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC功能说明:
自然对数指令(LN)对 IN 中的数值进行自然对数计算,并将结果置于OUT 中。欲从自然对数获得以 10 为底数的对数,用自然对数除以 2.302585(约等于 10 的自然对数)。欲将任何实数提升为另一个实数的乘幂,包括分数指数:将\"自然指数\"指令与\"自然对数\"指令相结合。例如,欲将 X 提升为 Y 乘幂,输入以下指令:EXP (Y * LN (X))。
MagicWorks PLC 编程软件用户手册
355
自然指数指令(EXP)进行 e 的 IN 次方指数计算,并将结果置于 OUT 中。欲将任何实数提升为另一个实数的乘幂,包括分数指数:将\"自然指数\"指令与\"自然对数\"指令相结合。例如,欲将X 提升为 Y 乘幂,输入以下指令:
EXP (Y * LN (X))。
举例:
5 的立方 = 5^3=EXP(3*LN(5))=125
125 的立方根 = 125^(1/3)=EXP(1/3)*LN(125))=5
5 的立方的平方根 = 5^(3/2)=EXP(3/2*LN(5))=11.18034
SM1.1 用于指示溢出错误和非法数值。如果设置 SM1.1,则 SM1.0 和SM1.2 状态无效,且原来的输入操作数不改动。如果未设置 SM1.3,则数学操作完成,并产生有效的结果,且SM1.0和 SM1.2 包含有效状态。
PID 控制指令
设置 ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出
影响的特殊内存位 SM1.1 溢出
指令列表: PID TBL LOOP
梯形图:
输入输出参数 数据类型 适用操作数
TBL 字节 VB
LOOP 字节 常数(0 to 7)
功能说明:
本指令有两个操作数:表示回路表起始地址的 TBL 地址和 0 至 7 常数的\"回路\"号码。程序中可使用八条 PID 指令。如果两条或多条 PID 指令使用相同的回路号码(即使它们的表格地址不同),PID 计算会互相干扰,结果难以预料。回路表存储用于控制和监控回路运算的参数,包括程序变量、设置点、输出、增益、样本时间、整数时间(重设)、导出时间(速率)以及整数和(偏差)的当前值及先前值。
如果回路表起始地址或指令中指定的 PID 回路号码操作数超出范围,CPU 编译器将生成一则错误(范围错误),编译将会失败。
PID 指令不对某些回路表输入值进行范围检查。您必须保证程序变量和设置点(以及作为输入的偏差和先前程序变量)是 0.0 和 1.0 之间的实数。
如果进行 PID 计算的数学运算时遇到错误,将设置 SM1.1(溢出或非法数值)并终止PID指令的执行。(对回路表中的输出数值的更新可能不完整,因此您应当忽略这些数值,并在执行下一个回路 PID 指令之前纠正引起数学错误的输入值。)
附录356
取样速率:
欲按要求的样品速率进行 PID 计算,必须按计时器的控制速率从定时中断程序或从主程序执行PID 指令。样品时间必须通过回路表作为 PID 指令输入提供。
使用 PID 向导:
MagicWorks PLC 提供 PID 向导,指导您为闭路控制程序定义 PID 算法。选择菜单命令工具>指令向导,并从指令向导窗口选择 PID。
平方根指令
设置 ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
SM1.2 负结果
指令列表: SQRT IN OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, 常数, *VD, *LD, *ACOUT 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC功能说明:
平方根指令(SQRT)对 32 位实数(IN)取平方根,产生一个 32 位实数结果并将结果放入OUT中,如以下等式所示:
IN = OUT
SM1.1 用于表示溢出错误和非法数值。如果设置 SM1.1,则 SM1.0 和SM1.2 状态无效,原始输入操作数不变。如果未设置 SM1.1,则说明数学运算已完成,得出有效结果,而且SM1.0和SM1.2 包含有效状态。
正弦余弦正切指令
设置ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出
影响的特殊内存位
SM1.0 零结果
SM1.1 溢出
SM1.2 负结果
指令列表:
SIN IN OUT
COS IN OUT
TAN IN OUT
梯形图:
MagicWorks PLC 编程软件用户手册
357
输入输出参数 数据类型 适用操作数
IN 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, 常数, *VD, *LD, *ACOUT 浮点数 VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC功能说明:
正弦指令(SIN)对角度值 IN 进行三角运算,并将结果放置在 OUT 中。输入角以弧度为单位。欲将输入角从角度转换成弧度,用角度乘以 1.745329E-2(约等于 pi/180)。余弦指令(COS)对角度值 IN 进行三角运算,并将结果放置在 OUT 中。输入角以弧度为单位。欲将输入角从角度转换成弧度,用角度乘以 1.745329E-2(约等于 pi/180)。正切指令(TAN)对角度值 IN 进行三角运算,并将结果放置在 OUT 中。输入角以弧度为单位。欲将输入角从角度转换成弧度,用角度乘以 1.745329E-2(约等于 pi/180)。SM1.1 用于指示溢出错误和非法数值。如果设置 SM1.1,则 SM1.0 和SM1.2 状态无效,且原来的输入操作数不改动。如果未设置 SM1.3,则数学操作完成,并产生有效的结果,且SM1.0和 SM1.2 包含有效状态。转换指令
字符串至整数转换
指令
设置 ENO = 0的错
误条件
0006 间接地址
0091 操作数范围
009B 非法指数(指定起始位置值0的字符串操作)
SM1.1 溢出或非法值
影响的特殊内存位 SM1.1(溢出或非法值)
指令列表: STI IN, INDEX, OUT
梯形图:
附录358
输入输出参
数
数据类型 适用操作数
IN 字符串 VB, 常数字符串, LB, *VD, *LD, *AC
OUT 整数 VW, IW, QW, MW, SW, SMW, LW, T, C, AQW, AC, *VD, *LD, *ACINDEX 字节 VB, IB, QB, MB, SB, SMB, LB, 常数, AC,*VD, *LD, *ACASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束 (\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
STI 指令用以下形式转换字符串:
[spaces] [+ or -] [digits 0-9]
INDEX 值通常设为 1,从字符串的第一个字符开始转换。可将该值设为其他值,在字符串中的不同点开始转换。当输入字符串包含不属于需要转换数字一部分的文本时,可采用此种方法。例如,如果输入字符串是\"value:16000 \",您可以将 INDEX 设为值 7,跳过字符串开始的字\"value:\"。
当达到字符串结束时或遇到第一个无效字符时,转换终止。无效字符是数字(0-9)以外的任何字符。
每当转换产生一个对于输出值过大的整数值时,则设置溢出错误(SM1.1)。例如,如果输入字符串产生一个大于 32767 或小于-32768 的值时,STI 指令设置溢出错误。如果当输入字符串未包含有效值而无法执行转换时,也会设置溢出错误(SM1.1)。例如,如果输入字符串包含\"A123\",转换指令会设置 SM1.1(溢出),输出值保持不变。下表是有效和无效字符串转换为整数/双整数/实数时的举例(INDEX = 1):输入字符串 字符串有效性 转换为整数 转换为双整数转换为实数\"65535\" 有效 65535 65535 65535.0
\"-0032768\" 有效 -32768 -32768 -32768.0\"+32767.999 \" 有效 32767 32767 32767.0
\"00065535FFFF
\" 有效 65535 65535 65535.0
\"65536\" 有效
65536(SM1.1=1,溢出) 65536 65536.0
\"-002147483648
\" 有效
-2147483648(SM
1.1=1,溢出)
-2147483648 -2147483648.0\"+00214748364
8\" 有效
+2147483648(S
M1.1=1,溢出)
+2147483648(
SM1.1=1,溢出)
+2147483648.0
MagicWorks PLC 编程软件用户手册
359
\"F255\" 无 效 (SM1.1=1,无效) \"++255\" 无 效 (SM1.1=1,无效) \" \" 无 效 (SM1.1=1,无效)
功能说明:字符串至整数转换指令将字符串数值 IN 转换为整数值,并将转换结果存储在OUT指定的地址中,从字符串的第 INDEX 个字符位置开始转换。
ASCII 码与十六进制
数字的转换指令
设置 ENO = 0的错误
条件
0006 间接地址
0091 操作数范围SM1.7 非法 ASCII 值(ATH)
影响的特殊内存位 SM1.7(非法 ASCII)指令列表:
ATH IN, OUT, LEN
HTA IN, OUT, LEN
梯形图:
输入输出参数 数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SB, SMB, LB, *VD, *AC, *LD
OUT 字节 VB, IB, QB, MB, SB, SMB, LB, *VD, *AC, *LD
LEN 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *LD, *AC操作数说明:
有效 ASCII 输入字符为:
字母数字字符 0~9 和 A~F
对应十六进制代码值 30~39 和 41~46
功能说明:
ASCII 至 HEX 转换指令将从内存位置 IN 开始的长度为 LEN 的 ASCII 字符号码转换十六进制数字,并放入 OUT 指定的地址。ASCII 字符串的最大长度为 255 字符。HEX 至 ASCII 转换指令将从输入字节 IN 开始的十六进制数字转换成从OUT 开始的ASCII
字符。欲转换的十六进制数字位数由长度 LEN 指定,可转换的最大十六进制数字位数为255。
附录360
整数与 BCD 码转
换指令
设置 ENO = 0的错误条件
0006 间接地址
SM1.6 无效 BCD 数值影响的特殊内存位 SM1.6(无效 BCD)指令列表:
BCDI OUT
IBCD OUT
梯形图:
输入输
出参数
数据类型 适用操作数
IN 字 VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常数, *VD, *AC, *LDOUT 字 VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC操作数说明:
BCD 格式的有效范围:
数据类型 最小值 最大值字 十进制 十六进制 BCD 码 十进制 十六进制BCD码字 0 0000
0000 0000 0000
0000
9999 9999
1001 100110011001
功能说明:
BCD 至整数指令将二进制编码的十进制值 IN 转换成整数值,并将结果载入OUT 指定的变量中。IN 的有效范围是 0 至 9999 BCD。
整数至 BCD 指令将输入整数值 IN 转换成二进制编码的十进制数,并将结果载入OUT指定的变量中。IN 的有效范围是 0 至 9999 BCD。例如,您可以将双整值转换为实数。您还可以在整数和 BCD 格式之间转换。对于 STL,IN 和 OUT 参数使用相同的地址。字节至整数转换指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 无
指令列表: BTI IN, OUT
梯形图:
MagicWorks PLC 编程软件用户手册
361
输入输出
参数
数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *AC, *VD, *LDOUT 整数 VW, IW, QW, MW, SW, SMW, LW, AQW, T, C, AC, *VD, *LD, *AC功能说明:字节至整数转换指令将字节数值 IN 转换成整数值,并将结果写入OUT 指定的变量中。因为字节不带符号,所以无符号扩展。
解码指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 无
指令列表: DECO IN, OUT
梯形图:
输入输
出参数
数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SMB, LB, SB, AC, 常数, *VD, *LD, *ACOUT 字 VW, IW, QW, MW, SMW, LW, SW, AQW, T, C, AC, *VD, *AC, *LD功能说明:解码指令设置输出字 OUT 中与输入字节 IN 低半字节(低4 位)表示的位数相对应的位为 1,设置输出字 OUT 的所有其它位均为 0。
示例程序:
LD SM0.0
DECO 2#10101111, VW0 //设置 VW0 的第 15(2#1111)位为1,其它位为0运行结果:VW0 = 2#1000 0000 0000 0000
双 整 数 至 ASCII
码转换指令
设置 ENO = 0的错误条件
0006 间接地址
FMT 位 > 0(用于FMT 值最高的4个位)nnn > 5
影响的特殊内存位 无
指令列表: DTA IN, OUT, FMT
梯形图:
输入输出参数 数据类型 适用操作数
附录362
IN 双整数 VD, ID, QD, MD, SD, SMD, LD, HC, 常数, AC, *VD, *AC, *LDOUT 字节 VB, IB, QB, MB, SB, SMB, LB, *VD, *LD, *AC
FMT 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *LD, *AC操作数说明:
ASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束 (\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
操作数 FMT 定义:
位号 7 6 5 4 3 2 1 0
值 0 0 0 0 c n n n
c:整数与小数部分的分隔符,c = 1:使用逗号作为整数与小数部分的分隔符;c = 0:使用小数点作为整数与小数部分的分隔符
nnn:小数部分的位数,有效范围为 0~5,输出字符串的长度始终为 8 个字符。nnn 等于0会使转换结果显示为不带小数点,当 nnn 值大于 5 时,输出显示为 12 个ASCII 空格字符的字符串。整数至 ASCII 码的转换遵循下列规则:
1)正值写入输出缓冲区,不带符号。
2)负值写入输出缓冲区,带起始负号(-)。
3)小数点左侧的起首零(与小数点相邻的数字除外)被压缩。
4)输出缓冲区中的数值右对齐。
下表显示几个使用小数点(c = 0)和小数点右面四位小数(nnn = 100)格式的值范例。OUT
字节 OUT
+1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11IN=123 0 . 0 1 2 3IN=-12345 - 1 . 2 3 4 5IN=1234567 1 2 3 . 4 5 6 7功能说明:整数至 ASCII 转换指令将整数值 IN 转换成 ASCII 字符数组。格式FMT 指定转换的精度,以及是将小数点显示为逗号还是点号。转换结果放入从 OUT 开始的12 个连续字节中。ASCII 字符数组总是 12 个字符。
双整数至整数转换 设置 ENO = 0的错误 0006 间接地址
MagicWorks PLC 编程软件用户手册
363
指令 条件 SM1.1 溢出或非法数值影响的特殊内存位 SM1.1(溢出)
指令列表: DTI IN, OUT
梯形图:
输入输出
参数
数据类型 适用操作数
IN 双整数 VD, ID, QD, MD, SD, SMD, LD, HC, AC, 常数, *VD, *LD, *ACOUT 整数 VW, IW, QW, MW, SW, SMW, LW, AQW, T, C, AC, *VD, *LD, *AC功能说明:双整数至整数转换指令将输入的双整数值 IN 转换成整数值,并将结果放入OUT指定的变量中。如果转换的值过大,则无法在输出中表示,会导致溢出错误,输出不受影响。双整数至实数转换
指令
设置 ENO = 0的错误条件 0006 间接地址
影响的特殊内存位 无
指令列表: DTR IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 双整数 VD, ID, QD, MD, SD, SMD, LD, HC, AC, 常数, *VD, *AC, *LDOUT 实数 VD, ID, QD, MD, SD, SMD, LD, HC, AC, *VD, *AC, *LD功能说明:双整数至实数转换指令将 32 位带符号的整数 IN 转换成 32 位实数,并将结果放入OUT 指定的变量中。
双整数至字符串
转换指令
设置 ENO = 0的错误
条件
0006 间接地址
0091 操作数范围
非法格式(nnn > 5)
影响的特殊内存位 无
指令列表: DTS IN, OUT, FMT
梯形图:
附录364
输入输出参数 数据类型 适用操作数
IN 双整数 VD, ID, QD, MD, SD, SMD, LD, HC, 常数, AC, *VD, *AC, *LDOUT 字符串 VB, *VD, LB, *AC, *LD
FMT 字节 VB, IB, QB, MB, SB, SMB, LB, 常数, AC, *VD, *LD, *ACASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束 (\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
操作数 FMT 定义:
位号 7 6 5 4 3 2 1 0
值 0 0 0 0 c n n n
c:整数与小数部分的分隔符,c = 1:使用逗号作为整数与小数部分的分隔符;c = 0:使用小数点作为整数与小数部分的分隔符。
nnn:小数部分的位数,有效范围为 0~5,输出字符串的长度始终为 12 个字符。nnn 等于0会使转换结果显示格式为不带小数点,当 nnn 值大于 5 时,输出显示为12 个ASCII 空格字符的字符串。
下表显示几个使用小数点(c = 0)和小数点右面四位小数(nnn = 100)格式的值范例。位于OUT 位置的值是字符串长度。
OUT
字节 OUT
+1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12IN=123 12 0 . 0 1 2 3IN=12345 12 1 . 2 3 4 5IN=1234567 12 1 2 3 . 4 5 6 7功能说明:双整数至字符串转换指令将输入的双整数 IN 转换为长度为12 个字符的ASCII 字符串。格式(FMT)指定小数点右面的转换精度,小数点是显示为逗号还是句点,转换结果字符串写入从 OUT 开始的 13 个连续字节中。
提示:根据以下规则制定格式的输出字符串:
整数不带符号写入输出缓冲区。
MagicWorks PLC 编程软件用户手册
365
负数带起始减号(-)写入输出缓冲区。
小数点左面的起始零(除紧靠小数点的数字外)被压缩。
小数点右面的数值被取整,使之符合指定的小数点右面的位数。 输出字符串的大小最小必须比小数点右面的位数大三个字节。
输出字符串中的数值必须右对齐。
编码指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 无
指令列表: ENCO IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 字
VW, IW, QW, MW, SMW, LW, SW, AIW, T, C, AC, 常数, *VD, *AC, *LD
OUT 字节 VB, IB, QB, MB, SMB, LB, SB, AC, *VD, *LD, *AC功能说明:编码指令将输入字 IN 位值为 1 的最低位的位数作为输出字节OUT 的低半字节,写入输出字节的最低 4 位中。
示例程序:
LD SM0.1
MOVB 0, VB0
LD SM0.0
ENCO 2#1100000000, VB0 //2#1100000000 最低不为 0 的位是第8 位,因此VB0的低半字节为 2#1000
运行结果:VB0 = 2#0000 1000
整数至 ASCII 码转
换指令
设置 ENO = 0的错误
条件
0006 间接地址
FMT 位 > 0(用于 FMT 值最高的4个位)nnn > 5
影响的特殊内存位 无
指令列表: ITA IN, OUT, FMT
梯形图:
输入输出 数据 适用操作数
附录366
参数 类型
IN 整数 VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, 常数, *VD, *LD, *ACOUT 字节 VB, IB, QB, MB, SB, SMB, LB, *VD, *LD, *AC
FMT 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *LD, *AC
ASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束(\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
操作数 FMT 定义:
位号 7 6 5 4 3 2 1 0
值 0 0 0 0 c n n n
c:整数与小数部分的分隔符,c = 1:使用逗号作为整数与小数部分的分隔符;c = 0:使用小数点作为整数与小数部分的分隔符。
nnn:小数部分的位数,有效范围为 0~5,输出字符串的长度始终为 8 个字符。nnn 等于0会使转换结果显示为不带小数点,当 nnn 值大于 5 时,输出显示为 8 个 ASCII 空格字符的字符串。整数至 ASCII 码的转换遵循下列规则:
1)正值写入输出缓冲区,不带符号。
2)负值写入输出缓冲区,带起始负号(-)。
3)小数点左侧的起首零(与小数点相邻的数字除外)被压缩。
4)输出缓冲区中的数值右对齐。
下表显示几个使用小数点(c = 0)和小数点右面三位小数(nnn = 011)格式的值范例。OUT
字节 OUT
+1 +2 +3 +4 +5 +6 +7
IN=12 0 0 1 2
IN=-123 0 1 2 3
IN=1234 1 2 3 4
IN=-12345 1 2 3 4 5
功能说明:整数至 ASCII 转换指令将整数值 IN 转换成 ASCII 字符数组。格式FMT 指定转换的精度,以及是将小数点显示为逗号还是点号。转换结果放入从OUT开始的8个连续字节中。ASCII
MagicWorks PLC 编程软件用户手册
367
字符数组总是 8 个字符。
整数至字节转换指令
设置 ENO = 0的错误
条件
0006 间接地址
溢出或非法值
影响的特殊内存位 SM1.1(溢出)
指令列表: ITB IN, OUT
梯形图:
输 入 输
出参数
数据类型 适用操作数
IN 整数 VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常数, *VD, *LD, *ACOUT 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD
功能说明:整数至字节转换指令将输入的整数 IN 转换成字节值,并将结果放入OUT 指定的变量中。数值 0 至 255 被转换。超过此范围的输入值将导致溢出,输出不受影响。整数至双整数转换
指令
设置 ENO = 0的错误条件 0006 间接地址
影响的特殊内存位 无
指令列表: ITD IN, OUT
梯形图:
输入输
出参数
数据类型 适用操作数
IN 整数 VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常数, *VD, *LD, *ACOUT 双整数 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC
功能说明:整数至双整数转换指令将输入的整数值 IN 转换成双整数值,并将结果放入OUT指定的变量中。符号被扩展。
整数至字符串转换
指令
设置 ENO = 0的错误
条件
0006 间接地址
0091 操作数范围
非法格式(nnn > 5)
影响的特殊内存位 无
指令列表: ITS IN, OUT, FMT
附录368
梯形图:
输入输
出参数
数据类
型
适用操作数
IN 整数 VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, 常数, AC, *VD, *LD, *ACOUT 字符串 VB, *VD, LB, *AC, *LD
FMT 字节 VB, IB, QB, MB, SB, SMB, LB, 常数, AC, *VD, *LD, *AC
ASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束(\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
操作数 FMT 定义:
位号 7 6 5 4 3 2 1 0
值 0 0 0 0 c n n n
c:整数与小数部分的分隔符,c = 1:使用逗号作为整数与小数部分的分隔符;c = 0:使用小数点作为整数与小数部分的分隔符。
nnn:小数部分的位数,有效范围为 0~5,输出字符串的长度始终为8 个字符。nnn 等于0会使转换结果显示格式为不带小数点,当 nnn 值大于 5 时,输出显示为8 个ASCII 空格字符的字符串。
下表显示几个使用小数点(c = 0)和小数点右面三位小数(nnn = 011)格式的值范例。位于OUT 位置的值是字符串长度。
OUT
字节 OUT
+1 +2 +3 +4 +5 +6 +7 +8IN=12 8 0 . 0 1 2
IN=-123 8 0 . 1 2 3
IN=1234 8 1 . 2 3 4
IN=-12345 8 1 2 . 3 4 5
功能说明:整数至字符串转换指令将输入的整数 IN 转换为长度为 8 个字符的ASCII 字符串。格
MagicWorks PLC 编程软件用户手册
369
式(FMT)指定小数点右面的转换精度,小数点是显示为逗号还是句点,转换结果字符串写入从 OUT 开始的 9 个连续字节中。
提示:根据以下规则制定格式的输出字符串:
整数不带符号写入输出缓冲区。
负数带起始减号(-)写入输出缓冲区。
小数点左面的起始零(除紧靠小数点的数字外)被压缩。
小数点右面的数值被取整,使之符合指定的小数点右面的位数。 输出字符串的大小最小必须比小数点右面的位数大三个字节。
输出字符串中的数值必须右对齐。
取整指令
设置 ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出或非法值影响的特殊内存位 SM1.1(溢出)
指令列表: ROUND IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 实数 VD, ID, QD, MD, SD, SMD, LD, AC, 常数, *VD, *LD, *ACOUT 双整数 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC功能说明:取整指令将输入的实数 IN 转换成双整数值,并将结果存入OUT 指定的变量中。小数部分采取四舍五入的方法取整。
实数至字符串转换
指令
设置 ENO = 0的错误条件
0006 间接地址
0091 操作数范围非法格式: nnn > 5
ssss < 3
ssss < 要求的字符数影响的特殊内存位 无
指令列表: RTS IN, OUT, FMT
梯形图:
附录370
输入输出参数 数据类型 适用操作数
IN 实数 VD, ID, QD, MD, SD, SMD, LD, 常数, AC, *VD, *LD, *ACOUT 字符串 VB, LB, *VD, *AC, *LD
FMT 字节 VB, IB, QB, MB, SB, SMB, LB, 常数, AC, *VD, *LD, *ACASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束 (\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
操作数 FMT 定义:
位号 7 6 5 4 3 2 1 0
值 s s s s c n n n
ssss:输出字符串长度,小于 3 无效。
c:整数与小数部分的分隔符,c = 1:使用逗号作为整数与小数部分的分隔符;c = 0:使用小数点作为整数与小数部分的分隔符。
nnn:小数部分的位数,有效范围为 0~5,nnn 等于 0 会使转换结果显示格式为不带小数点,当nnn 值大于 5 时或当指定的输出字符串长度太小无法存储转换的值时,输出字符串用ASCII 空格字符填充。
下表显示几个使用小数点(c = 0)和小数点右面有一位数(nnn = 001)以及输出字符串长度为7 个字符(ssss = 0111)格式的值范例。位于 OUT 位置的值是字符串长度。OUT
字节 OUT
+1 +2 +3 +4 +5 +6 +7
IN=12345.6 7 1 2 3 4 5 . 6
IN=0.0005 7 0 . 0
IN=-3.6544444 7 - 3 . 7
功能说明:实数至字符串转换指令将实数值 IN 转换为 ASCII 字符串。格式(FMT)指定输出字符串的长度、转换精度以及小数点是显示为逗号还是句点。转换结果放入以OUT 开始的字符串中。结果字符串长度在格式中指定,可以是 3 至 15 个字符。CTSC-200 使用的实数格式最多可支持 7 个高位数字。设置 7 个以上高位数字会产生取整错误。
提示:根据以下规则制定格式的输出字符串:
整数不带符号写入输出缓冲区。
负数带起始减号(-)写入输出缓冲区。
MagicWorks PLC 编程软件用户手册
371
小数点左面的起始零(除紧靠小数点的数字外)被压缩。
小数点右面的数值被取整,使之符合指定的小数点右面的位数。 输出字符串的大小最小必须比小数点右面的位数大三个字节。
输出字符串中的数值必须右对齐。
段指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 无
指令列表: SEG IN, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LDOUT 字节 VB, IB, QB, MB, SMB, LB, AC, *VD, *AC, SB, *LD操作数说明:
下图显示了段指令中用到的七段显示器段编码。
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
段显示 (出) 段显示
-gfe dcba
(出)
-gfe dcba
0011 1111 0111 1111
0000 0110 0110 0111
0101 1011 0111 0111
0100 1111 0111 1100
0110 0110 0011 1001
0110 1101 0101 1110
0111 1101 0111 1001
0000 0111 0111 0001
(进)
LSD
(进)
LSD
a
b
c
d
e
f g
功能说明:段(SEG)指令允许您生成照明七段显示段的位格式。
字符 串至 双整 数
转换指令
设置 ENO = 0的错误
条件
0006 间接地址
0091 操作数范围
009B 非法指数(指定起始位置值0的字符串操作)
SM1.1 溢出或非法值
影响的特殊内存位 SM1.1(溢出或非法值)
指令列表: STD IN, INDEX, OUT
梯形图:
附录372
输入输出参数 数据类型 适用操作数
IN 字符串 VB, 常数字符串, LB, *VD, *LD, *AC
OUT 双整数 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *ACINDEX 字节 VB, IB, QB, MB, SB, SMB, LB, 常数, AC,*VD, *LD, *ACASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束(\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
STD 指令用以下形式转换字符串:
[spaces] [+ or -] [digits 0-9]
INDEX 值通常设为 1,从字符串的第一个字符开始转换。可将该值设为其他值,在字符串中的不同点开始转换。当输入字符串包含不属于需要转换数字一部分的文本时,可采用此种方法。例如,如果输入字符串是\"value:16000 \",您可以将 INDEX 设为值 7,跳过字符串开始的字\"value:\"。
当达到字符串结束时或遇到第一个无效字符时,转换终止。无效字符是数字(0-9)以外的任何字符。
每当转换产生一个对于输出值过大的整数值时,则设置溢出错误(SM1.1)。例如,如果输入字符串产生一个大于+2147483647 或小于-+2147483648 的值时,STD 指令设置溢出错误。如果当输入字符串未包含有效值而无法执行转换时,也会设置溢出错误(SM1.1)。例如,如果输入字符串包含\"A123\",转换指令会设置 SM1.1(溢出),输出值保持不变。下表是有效和无效字符串转换为整数/双整数/实数时的举例(INDEX = 1):输入字符串 字符串有效性 转换为整数 转换为双整数转换为实数\"65535\" 有效 65535 65535 65535.0
\"-0032768\" 有效 -32768 -32768 -32768.0\"+32767.999 \" 有效 32767 32767 32767.0
\"00065535FFFF\" 有效 65535 65535 65535.0
\"65536\" 有效
65536(SM1.1=1
,溢出) 65536 65536.0
MagicWorks PLC 编程软件用户手册
373
\"-002147483648\" 有效
-2147483648(S
M1.1=1,溢出)
-2147483648 -2147483648.0\"+002147483648\" 有效
+2147483648(S
M1.1=1,溢出)
+2147483648(S
M1.1=1,溢出)
+2147483648.0\"F255\" 无效(SM1.1=1,无效) \"++255\" 无效(SM1.1=1,无效) \" \" 无效(SM1.1=1,无效)
功能说明:字符串至双整数转换指令将字符串数值 IN 转换为双整数值,并将转换结果存储在OUT 指定的地址中,从字符串的第 INDEX 个字符位置开始转换。
字符串至实数转换
指令
设置 ENO = 0的错误
条件
0006 间接地址
0091 操作数范围
009B 非法指数(指定起始位置值0的字符串操作)
SM1.1 溢出或非法值
影响的特殊内存位 SM1.1(溢出或非法值)
指令列表: STR IN, INDEX, OUT
梯形图:
输入输出参数 数据类型 适用操作数
IN 字符串 VB, 常数字符串, LB, *VD, *LD, *AC
OUT 实数 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *ACINDEX 字节 VB, IB, QB, MB, SB, SMB, LB, 常数, AC,*VD, *LD, *ACASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束 (\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
STI 指令用以下形式转换字符串:
[spaces] [+ or -] [digits 0-9]
INDEX 值通常设为 1,从字符串的第一个字符开始转换。可将该值设为其他值,在字符串中的
附录374
不同点开始转换。当输入字符串包含不属于需要转换数字一部分的文本时,可采用此种方法。例如,如果输入字符串是\"value:16000 \",您可以将 INDEX 设为值 7,跳过字符串开始的字\"value:\"。
字符串至实数转换指令不会使用实数的科学计数法或指数形式转换字符串。该指令不会产生溢出错误(SM1.1),但只会将字符串转换为直至指数的实数,然后终止转换。例如,字符串\"1.234E6\"将转换为实数值 1.234,而不产生错误讯息。
当达到字符串结束时或遇到第一个无效字符时,转换终止。无效字符是数字(0-9)以外的任何字符。
每当转换产生一个对于输出值过大的整数值时,则设置溢出错误(SM1.1)。如果当输入字符串未包含有效值而无法执行转换时,也会设置溢出错误(SM1.1)。例如,如果输入字符串包含\"A123\",转换指令会设置 SM1.1(溢出),输出值保持不变。下表是有效和无效字符串转换为整数/双整数/实数时的举例(INDEX = 1):输入字符串 字符串有效性 转换为整数 转换为双整数转换为实数\"65535\" 有效 65535 65535 65535.0
\"-0032768\" 有效 -32768 -32768 -32768.0\"+32767.999 \" 有效 32767 32767 32767.0
\"00065535FFF
F\" 有效 65535 65535 65535.0
\"65536\" 有效
65536(SM1.1=1,溢出) 65536 65536.0
\"-0021474836
48\" 有效
-2147483648(SM1
.1=1,溢出)
-2147483648 -2147483648.0\"+0021474836
48\" 有效
+2147483648(SM
1.1=1,溢出)
+2147483648(
SM1.1=1,溢出)
+2147483648.0\"F255\" 无 效 (SM1.1=1,无效) \"++255\" 无 效 (SM1.1=1,无效) \" \" 无 效 (SM1.1=1,无效)
功能说明:字符串至实数转换指令将字符串数值 IN 转换为实数值,并将转换结果存储在OUT指定的地址中,从字符串的第 INDEX 个字符位置开始转换。
截断指令
设置 ENO = 0的错误
条件
0006 间接地址
SM1.1 溢出或非法值影响的特殊内存位 SM1.1(溢出)
指令列表: TRUNC IN, OUT
梯形图:
MagicWorks PLC 编程软件用户手册
375
输入输出参数 数据类型 适用操作数
IN 实数 VD, ID, QD, MD, SD, SMD, LD, AC, 常数, *VD, *LD, *ACOUT 双整数 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD功能说明:截断指令将 32 位实数 IN 转换成 32 位双整数,并将结果放入OUT 指定的变量中。只有实数的整数部分被转换,小数部分被丢弃。如果输入的实数值过大或无效,将会导致溢出,输出不受影响。
实数至 ASTII 码转
换指令
设置 ENO = 0的错误条件
0006 间接地址nnn > 5
ssss < 3
ssss < OUT 中的字符数影响的特殊内存位 无
指令列表: RTA IN, OUT, FMT
梯形图:
输入输出参数 数据类型 适用操作数
IN 实数 VD, ID, QD, MD, SD, SMD, LD, 常数, AC, *VD, *LD, *ACOUT 字符串 VB, LB, *VD, *AC, *LD
FMT 字节 VB, IB, QB, MB, SB, SMB, LB, 常数, AC, *VD, *LD, *ACASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束 (\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
操作数 FMT 定义:
位号 7 6 5 4 3 2 1 0
值 s s s s c n n n
ssss:输出字符串长度,小于 3 无效。
附录376
c:整数与小数部分的分隔符,c = 1:使用逗号作为整数与小数部分的分隔符;c = 0:使用小数点作为整数与小数部分的分隔符。
nnn:小数部分的位数,有效范围为 0~5,nnn 等于 0 会使转换结果显示格式为不带小数点,当nnn 值大于 5 时或当指定的输出字符串长度太小无法存储转换的值时,输出字符串用ASCII 空格字符填充。
下表显示几个使用小数点(c = 0)和小数点右面有一位数(nnn = 001)以及输出字符串长度为7 个字符(ssss = 0111)格式的值范例。位于 OUT 位置的值是字符串长度。OUT
字节 OUT
+1 +2 +3 +4 +5 +6
IN=12345.6 1 2 3 4 5 . 6
IN=0.0005 0 . 0
IN=-3.6544444 - 3 . 7
功能说明:实数至 ASCII 码转换指令将实数值 IN 转换为 ASCII 字符。格式(FMT)指定输出字符串的长度、转换精度以及小数点是显示为逗号还是句点。转换结果放入以OUT 开始的字符串中。结果字符串长度在格式中指定,可以是 3 至 15 个字符。
提示:根据以下规则制定格式的输出字符串:
整数不带符号写入输出缓冲区。
负数带起始减号(-)写入输出缓冲区。
小数点左面的起始零(除紧靠小数点的数字外)被压缩。
小数点右面的数值被取整,使之符合指定的小数点右面的位数。 输出字符串的大小最小必须比小数点右面的位数大三个字节。
输出字符串中的数值必须右对齐。实时时钟
读取和设置实时
时钟指令
设置 ENO = 0的错
误条件
0006 间接地址
0007 TOD 数据错误(TODW)
000C 不存在时钟
影响的特殊内存位 SM4.3(对此时钟有两个同时访问,非重要错误0007)指令列表:
TODR T
TODW T
梯形图:
MagicWorks PLC 编程软件用户手册
377
输入输出参数 数据类型 适用操作数
时钟 T 字节 VB, IB, QB, MB, SMB, SB, LB, *VD, *AC, *LD操作数说明:所有日期和时间值必须采用 BCD 格式编码(例如,16#97 代表2002 年)。请参阅下表:
8 个字节时间缓冲区格式(T)
T 字节 说明 字节数据0 年 (0-99) 当前年份后两位 (BCD 码)
1 月 (1-12) 当前月份 (BCD 码)
2 日期 (1-31) 当前日期 (BCD 码)
3 小时 (0-23) 当前小时 (BCD 码)
4 分钟 (0-59) 当前分钟 (BCD 码)
5 秒 (0-59) 当前秒 (BCD 码)
6 00 保留字节,始终设置为00
7 星期几 (1-7) 当前是星期几,1=星期日 (BCD 码)
长时间掉电或内存丢失后,实时时钟会被初始化为以下日期和时间:日期: 90 年 1 月 1 日
时间: 00:00:00
星期: 星期日
提示:CTSC-200 CPU 无法根据日期和星期是否正确,所以在输入时应当确保日期正确。请勿在主程序和中断程序中使用 TODR/TODW 指令。当另一条 TODR/TODW指令正在执行时,若尝试执行中断程序中的 TODR/TODW 指令,则该指令不会被执行,同时SM4.3 被置位。功能说明:
读取实时时钟指令(TODR)从硬件时钟读取当前时间和日期,并将其写入以地址T 起始的8个字节的缓冲区。
设置实时时钟指令(TODW)设置当前硬件时钟为以 T 起始的 8 个字节的缓冲区的内容。
附录378
读取和设置扩展
实时时钟指令
设置 ENO = 0的错
误条件
0006 间接地址
0007 TOD 数据错误(TODW)
000C 不存在时钟
0091 范围错误
影响的特殊内存位 SM4.3(对此时钟有两个同时访问,非重要错误0007)指令列表:
TODRX T
TODWX T
梯形图:
输入输出参数 数据类型 适用操作数
时钟 T 字节 VB, IB, QB, MB, SMB, SB, LB, *VD, *AC, *LD操作数说明:所有日期和时间值必须采用 BCD 格式编码(例如,16#97 代表2002 年)。请参阅下表:
8 个字节时间缓冲区格式(T)
T 字节 说明 字节数据0 年 (0-99) 当前年份后两位 (BCD 码)
1 月 (1-12) 当前月份 (BCD 码)
2 日期 (1-31) 当前日期 (BCD 码)
3 小时 (0-23) 当前小时 (BCD 码)
4 分钟 (0-59) 当前分钟 (BCD 码)
5 秒 (0-59) 当前秒 (BCD 码)
6 00 保留字节,始终设置为00
7 星期几 (1-7) 当前是星期几,1=星期日(BCD 码)
8 模式(00H-03H, 08H, 10H-13H, FFH)
修正模式:
00H = 修正已禁用
01H = 欧盟 (相对于 UTC 的时区调整= 0小时)
02H = 欧盟 (相对于 UTC 的时区调整= +1小时)
03H = 欧盟 (相对于 UTC 的时区调整= +2小时)
04H-07H = 保留
08H = 欧盟 (相对于 UTC 的时区调整= -1小时)
09H-0FH = 保留
MagicWorks PLC 编程软件用户手册
379
10H = 美国
11H = 澳大利亚
12H = 澳大利亚 (塔斯马尼亚)
13H = 新西兰
14H-FDH = 保留
FEH = 保留
9 修正小时数 (0-23) 修正数量,小时 (BCD 码)
10 修正分钟数 (0-59) 修正数量,分钟 (BCD 码)
11 开始月份 (1-12) 夏时制的开始月份 (BCD 码)
12 开始日期 (1-31) 夏时制的开始日期 (BCD 码)
13 开始小时 (0-23) 夏时制的开始小时 (BCD 码)
14 开始分钟 (0-59) 夏时制的开始分钟 (BCD 码)
15 结束月份 (1-12) 夏时制的结束月份 (BCD 码)
16 结束日期 (1-31) 夏时制的结束日期 (BCD 码)
17 结束小时 (0-23) 夏时制的结束小时 (BCD 码)
18 结束分钟 (0-59) 夏时制的结束分钟 (BCD 码)
欧盟常规:在三月最后一个星期日的 UTC 时间凌晨一点将时间向前调一小时。在十月最后一个星期日的 UTC 时间凌晨两点将时间往回调一小时。(当做出修正时,当地时间因相对于UTC的时区调整而不同)
美国常规:在四月第一个星期日的当地时间凌晨两点将时间向前调一小时。在十月最后一个星期日的当地时间凌晨两点将时间往回调一小时。
澳大利亚常规:在十月最后一个星期日的当地时间凌晨两点将时间向前调一小时。在三月最后一个星期日的当地时间凌晨三点将时间往回调一小时。
澳大利亚(塔斯马尼亚)常规:在十月第一个星期日的当地时间凌晨两点将时间向前调一小时。在三月最后一个星期日的当地时间凌晨三点将时间往回调一小时。
新西兰常规:在十月第一个星期日的当地时间凌晨两点将时间向前调一小时。在三月十五日或之后的第一个星期日的当地时间凌晨三点将时间往回调一小时。
长时间掉电或内存丢失后,实时时钟会被初始化为以下日期和时间:日期:90 年 1 月 1 日
时间:00:00:00
星期:星期日
提示:CTSC-200 CPU 无法根据日期和星期是否正确,所以在输入时应当确保日期正确。请勿在主程序和中断程序中使用 TODRX/TODWX 指令。当另一条 TODRX/TODWX 指令正在执行时,若尝试执行中断程序中的 TODRX/TODWX 指令,则该指令不会被执行,同时SM4.3被置位。
功能说明:
附录380
读取扩展实时时钟指令(TODRX)从硬件时钟读取当前时间、日期及夏时制配置,并将其写入以地址 T 起始的 19 个字节的缓冲区。
设置扩展实时时钟指令(TODWX)设置当前硬件时钟为以 T 起始的 19 个字节的缓冲区的内容。移位/循环指令
字节移位/循环指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位
SM1.0 如果移位结果是零,则设置零位SM1.1 为移出的最后一个位设置溢出位指令列表:
SLB OUT, N
SRB OUT, N
RLB OUT, N
RRB OUT, N
梯形图:
输入输出参数 数据类型 适用操作数
IN 字节 VB, IB, QB, MB, SMB, SB, LB, AC, 常数, *VD, *LD, *ACN 字节 VB, IB, QB, MB, SMB, SB, LB, AC, 常数, *VD, *LD, *ACOUT 字节 VB, IB, QB, MB, SMB, SB, LB, AC, *VD, *LD, *AC功能说明:
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补 0。如果移位数目(N)大于或等于 8,则数值最多被移位 8 次。如果移位数目大于 0,溢出内存位(SM1.1)采用最后一次移出位的数值。如果移位操作结果为 0,设置 0 内存位(SM1.0)。右移和向左移字节操作不带符号。
循环右移字节(RRB)和循环左移字节(RLB)指令将输入字节数值(IN)向右或向左旋转N位,并将结果载入输出字节(OUT)。旋转具有循环性。如果移位数目(N)大于或等于8,执行旋转之前先对位数(N)进行模数 8 操作,从而使位数在 0 至 7 之间。如果移动位数为0,则不执行旋转操作。如果执行旋转操作,旋转的最后一位数值被复制至溢出位(SM1.1)。如果移动位数不是 8 的整倍数,旋转出的最后一位数值被复制至溢出内存位(SM1.1)。如果旋转数值为 0,设置 0 内存位(SM1.0)。循环右移和循环左移字节操作不带符号。
MagicWorks PLC 编程软件用户手册
381
双字移位/循环指令
设置 ENO = 0的错误条件 0006 间接地址
影响的特殊内存位
SM1.0 如果移位结果是零,则设置零位SM1.1 为移出的最后一个位设置溢出位指令列表:
SLD OUT, N
SRD OUT, N
RLD OUT, N
RRD OUT, N
梯形图:
输入输出参数 数据类型 适用操作数
IN 双字 VD, ID, QD, MD, SD, SMD, LD, AC, HC, 常数, *VD, *LD, *ACN 字节 VB, IB, QB, MB, SMB, SB, LB, AC, 常数, *VD, *LD, *ACOUT 双字 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC功能说明:
右移双字(SRD)和左移双字(SLD)指令将输入双字数值(IN)向右或向左移动N位,并将结果载入输出双字(OUT)。移位指令对每个移出位补 0。如果移位数目(N)大于或等于32,则数值最多被移位 32 次。如果移位数目大于 0,溢出内存位(SM1.1)采用最后一次移出位数值。如果移位操作结果为 0,设置 0 内存位(SM1.0)。请注意当您使用带符号数据类型时,符号位被移位。
循环右移双字(RRD)和循环左移双字(RLD)指令将输入双字数值(IN)向右或向左旋转N位,并将结果载入输出双字(OUT)。旋转具有循环性。如果移位数目(N)大于或等于32,执行旋转之前在移动位数(N)上执行模数 32 操作。从而使位数在 0 至31 之间。如果移动位数为 0,则不执行旋转操作。如果执行旋转操作,旋转的最后一位数值被复制至溢出位(SM1.1)。如果移动位数不是 32 的整倍数,旋转出的最后一位数值被复制至溢出内存位(SM1.1)。如果旋转数值为 0,设置 0 内存位(SM1.0)。循环右移和循环左移双字操作不带符号。字移位/循环指令
设置 ENO = 0的错误条件 0006 间接地址
影响的特殊内存位
SM1.0 如果移位结果是零,则设置零位SM1.1 为移出的最后一个位设置溢出位指令列表:
SLW OUT, N
附录382
SRW OUT, N
RLW OUT, N
RRW OUT, N
梯形图:
输 入 输出
参数
数据类型 适用操作数
IN 字
VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, Constant, *VD, *LD, *AC
N 字节 VB, IB, QB, MB, SMB, SB, LB, AC, 常数, *VD, *LD, *ACOUT 字 VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC功能说明:
右移字(SRW)和左移位字(SLW)指令将输入字(IN)数值向右或向左移动N位,并将结果载入输出字(OUT)。移位指令对每个移出位补 0。如果移位数目(N)大于或等于16,则数值最多被移位 16 次。如果移位数目大于 0,溢出内存位(SM1.1)采用最后一次移出位数值。如果移位操作结果为 0,设置 0 内存位(SM1.0)。请注意当您使用带符号的数据类型时,符号位被移位。
循环右移字(RRW)和循环左移字(RLW)指令将输入字数值(IN)向右或向左旋转N位,并将结果载入输出字(OUT)。旋转具有循环性。如果移动位数(N)大于或等于16,在旋转执行之前的移动位数(N)上执行模数 16 操作。从而使移动位数在 0 至15 之间。如果移动位数为 0,则不执行旋转操作。如果执行旋转操作,旋转的最后一位数值被复制至溢出位(SM1.1)。如果移动位数不是 16 的整倍数,旋转出的最后一位数值被复制至溢出内存位(SM1.1)。如果旋转数值为 0,设置 0 内存位(SM1.0)。循环右移和循环左移字操作不带符号。移位寄存器指令
设置 ENO = 0的错误
条件
0006 间接地址
0091 操作数超出范围0092 计数域错误
影响的特殊内存位 SM1.1 为移出的最后一个位设置溢出位指令列表: SHRB DATA, S_BIT, N
梯形图:
MagicWorks PLC 编程软件用户手册
383
输入输出参数 数据类型 适用操作数
DATA 布尔 I, Q, M, SM, T, C, V, S, L
S_BIT 布尔 I, Q, M, SM, T, C, V, S, L
N 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *LD, *AC功能说明:
移位寄存器位(SHRB)指令将 DATA 数值移入移位寄存器。S_BIT 指定移位寄存器的最低位。N 指定移位寄存器的长度和移位方向(移位加 = N,移位减 = -N)。SHRB 指令移出的每个位被放置在溢出内存位(SM1.1)中。该指令由最低位(S_BIT)和由长度(N)指定的位数定义。使用以下等式计算\"移位寄存器\"最高位地址(MSB.b):
MSB.b = [(S_BIT 字节) + ([N] - 1 + (S_BIT 位)) / 8] . [被 8 除的余数]
例如:如果 S_BIT 是 V33.4 和 N is 14,以下计算显示 MSB.b 是 V35.1。MSB.b = V33 + ([14] - 1 +4)/8 = V33 + 17/8 = V33 + 2 ,余数为 1 = V35.1
在\"移位减\"(用长度(N)的负值表示)中,输入数据移入移位寄存器的最高位中,并移出最低位(S_BIT)。移出的数据被放置在溢出内存位(SM1.1)中。
在\"移位加\"(用长度(N)的正值表示)中,输入数据(DATA)移入移位寄存器的最高位中(由S_BIT 指定),并移出移位寄存器的最高位。移出的数据被放置在溢出内存位(SM1.1)中。移位寄存器的最大长度为 64 位(无论正负)。逻辑计算指令
字节取反、与、或、
异或运算指令
设置 ENO = 0的错误
条件
0006 间接地址
影响的特殊内存位 SM1.0 操作结果等于零指令列表:
INVB OUT
ANDB IN1 OUT
ORB IN1 OUT
XORB IN1 OUT
梯形图:
附录384
输入输出参数 数据类型 适用操作数
IN1 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LDIN2 字节 VB, IB, QB, MB, SB, SMB, LB, AC, 常数, *VD, *AC, *LDOUT 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD功能说明:
字节取反指令(INVB)对输入字节 IN 执行求补操作,并将结果放入OUT 指定的地址中。字节与运算指令(ANDB)对两个输入字节(IN1 和 IN2)的对应位执行与运算操作,并将结果放入 OUT 指定的地址中。
字节或运算指令(ORB)对两个输入字节(IN1 和 IN2)的对应位执行或运算操作,并将结果放入 OUT 指定的地址中。
字节异或运算指令(XORB)对两个输入字节(IN1 和 IN2)的对应位执行异或运算操作,并将结果放入 OUT 指定的地址中。
双字取反、与、或、异
或运算指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 SM1.0 操作结果等于零指令列表:
INVD OUT
ANDD IN1, OUT
ORD IN1, OUT
XORD IN1, OUT
梯形图:
MagicWorks PLC 编程软件用户手册
385
输入输出参数 数据类型 适用操作数
IN1 双字 VD, ID, QD, MD, SD, SMD, LD, HC, AC, 常数, *VD, *AC, *LDIN2 双字 VD, ID, QD, MD, SD, SMD, LD, HC, AC, 常数, *VD, *AC, *LDOUT 双字 VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *AC, *LD功能说明:
双字取反指令(INVD)对输入双字 IN 执行求补操作,并将结果放入OUT 指定的地址中。双字与运算指令(ANDD)对两个输入双字(IN1 和 IN2)的对应位执行与运算操作,并将结果放入 OUT 指定的地址中。
双字或运算指令(ORD)对两个输入双字(IN1 和 IN2)的对应位执行或运算操作,并将结果放入 OUT 指定的地址中。
双字异或运算指令(XORD)对两个输入双字(IN1 和 IN2)的对应位执行异或运算操作,并将结果放入 OUT 指定的地址中。
整数取反、与、或、
异或运算指令
设置 ENO = 0的错误条件 0006 间接地址影响的特殊内存位 SM1.0 操作结果等于零指令列表:
INVW OUT
ANDW IN1, OUT
ORW IN1, OUT
XORW IN1, OUT
梯形图:
输入输出参数 数据类型 适用操作数IN1 字
VW, IW, QW, MW, SW, SMW, T, C, AIW, LW, AC, 常数, *VD, *AC, *LD
IN2 字
VW, IW, QW, MW, SW, SMW, T, C, AIW, LW, AC, 常数, *VD, *AC, *LD
OUT 字 VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *AC, *LD功能说明:
字取反指令(INVW)对输入字 IN 执行求补操作,并将结果放入 OUT 指定的地址中。
附录386
字与运算指令(ANDW)对两个输入字(IN1 和 IN2)的对应位执行与运算操作,并将结果放入OUT 指定的地址中。
字或运算指令(ORW)对两个输入字(IN1 和 IN2)的对应位执行或运算操作,并将结果放入OUT指定的地址中。
字异或运算指令(XORW)对两个输入字(IN1 和 IN2)的对应位执行异或运算操作,并将结果放入 OUT 指定的地址中。计数器指令
加计数器指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: CTU Cxxx, PV
梯形图:
输入输出参数 数据类型 适用操作数
Cxxx 字 常数 (C0~C255)
CU 布尔 使能位
R 布尔 使能位
PV 整数
VW, IW, QW, MW, SMW, LW, AIW, AC, T, C, 常数, *VD, *AC, *LD, SW
功能说明:每次加计数输入端 CU 从 OFF 变为 ON 时,加计数器指令CTU 从当前值计数加 1。当前值(Cxxx)大于或等于预设值(PV)时,计数器位(Cxxx)打开。复原(R)输入打开或执行\"复原\"指令时,计数器被复原。达到最大值(32767)时,计数器停止计数。计数器范围: Cxxx=C0 至 C255 在 STL 中,CTU 复原输入是堆栈顶值,加计数输入是装载在第二个堆栈位置的值。
<注释> 因为每个计数器有一个当前值,请勿将相同的计数器号码设置给一个以上计数器。(号码相同的加计数器、加/减计数器和减计数器存取相同的当前值。)减计数器指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: CTD Cxxx, PV
MagicWorks PLC 编程软件用户手册
387
梯形图:
输入输出参数 数据类型 适用操作数
Cxxx 字 常数 (C0~C255)
CD 布尔 使能位
R 布尔 使能位
PV 整数
VW, IW, QW, MW, SMW, LW, AIW, AC, T, C, 常数, *VD, *AC, *LD, SW
功能说明:每次减计数输入端 CD 从 OFF 变为 ON 时,减计数器指令CTD 从当前值计数减 1。当前值 Cxxx 等于 0 时,计数器位(Cxxx)打开。载入输入(LD)打开时,计数器复原计数器位(Cxxx)并用预设值(PV)载入当前值。当前值达到零时,减计数器停止计数,计数器位 Cxxx 打开。计数器范围:Cxxx=C0 至 C255 在 STL 中,CTD 载入输入是堆栈顶值,而减计数输入是装载在第二个堆栈位置的数值。
<注释> 因为每个计数器有一个当前值,请勿将相同的计数器号码设置给一个以上计数器。(号码相同的加计数器、加/减计数器和减计数器存取相同的当前值)
加减双向计数器指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: CTUD Cxxx, PV
梯形图:
输入输出参数 数据类型 适用操作数
Cxxx 字 常数 (C0~C255)
CU 布尔 使能位
CD 布尔 使能位
附录388
R 布尔 使能位
PV 整数
VW, IW, QW, MW, SMW, LW, AIW, AC, T, C, 常数, *VD, *AC, *LD, SW
功能说明:每次加计数输入端 CU 从 OFF 变为 ON 时,加减双向计数器指令CTUD从当前值计数加 1。每次减计数输入端 CD 从 OFF 变为 ON 时,加减双向计数器指令CTUD从当前值计数减 1。计数器的当前值 Cxxx 保持当前计数。每次执行计数器指令时,预设值PV与当前值进行比较。达到最大值(32767),位于加计数输入位置的下一个上升沿使当前值返转为最小值(-32,768)。在达到最小值(-32,768)时,位于减计数输入位置的下一个上升沿使当前计数返转为最大值(32,767)。当当前值 Cxxx 大于或等于预设值 PV 时,计数器位Cxxx 打开。否则,计数器位关闭。当\"复原\"(R)输入打开或执行\"复原\"指令时,计数器被复原。达到PV时,CTUD 计数器停止计数。计数器范围:Cxxx=C0 至 C255 在 STL 中,CTUD复原输入是堆栈顶值,减计数输入是装载在第二个堆栈位置的值,加计数输入是装载在第三个堆栈位置的值。
<注释> 因为每个计数器有一个当前值,请勿将相同的计数器号码设置给一个以上计数器。(号码相同的加计数器、加/减计数器和减计数器存取相同的当前值。)高速计数器定义指令
设置 ENO = 0的错误条件
0003 输入点冲突0004 中断中的非法指令000A HSC 重新定义影响的特殊内存位 无
指令列表: HDEF HSC, MODE
梯形图:
输入输出参数 数据类型 适用操作数
HSC 字节 常数(0,1,2,3,4或5)
MODE 字节 常数(0,1,2,3,4,5,6,7,8,9,10或11)操作数说明:
HSC:高速计数器的 ID,目前 CPU224 和 CPU226 都支持 6 个高速计数器,因此HSC的范围为常数 0~5. MODE:高速计数器的模式,高速计数器有 12 种模式,MODE 的范围为常数0~11.功能说明:高速计数器定义指令 HDEF 选择特定的高速计数器(HSCx)的操作模式。模式选择定义高速计数器的时钟、方向、起始和复原功能。您可以为每台高速计数器使用一条\"高速计数器定义\"指令。
高速计数器指令
设置 ENO = 0的错误
条件
0001 HSC 在 HDEF 之前0005 HSC/PLS 同步影响的特殊内存位 无
MagicWorks PLC 编程软件用户手册
389
指令列表: HSC N
梯形图:
输入输出参数 数据类型 适用操作数
N 字 常数(0,1,2,3,4或5)
操作数说明:
N:高速计数器的 ID,目前 CPU224 和 CPU226 都支持 6 个高速计数器,因此N的范围为常数0~5.功能说明:高速计数器指令 HSC 根据 HSC 特殊内存位的状态配置和控制高速计数器。参数N指定高速计数器的号码。高速计数器最多可配置为十二种不同的操作模式。每台计数器在功能受支持的位置有专用时钟、方向控制、复原和起始输入。对于双相计数器,两个时钟均可按最高速度运行。在正交模式中,您可以选择一倍\\(1x)或四倍(4x)的最高计数速率。所有的计数器按最高速率运行,而不会相互干扰。
脉冲输出指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: PLS N
梯形图:
输入输出参数 数据类型 适用操作数
N 字 常数0(Q0.0输出脉冲)或1(Q0.1输出脉冲)
功能说明:脉冲输出(PLS)指令被用于控制在高速输入(Q0.0 和 Q0.1)中提供的\"脉冲串输出\"(PTO)和 \"脉宽调制\"(PWM)功能。PTO 提供方波(50%占空比)输出,配备周期和脉冲数用户控制功能。PWM 提供连续性变量占空比输出,配备周期和脉宽用户控制功能。脉冲输出指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: PTO N, CMD
梯形图:
附录390
输入输出参数 数据类型 适用操作数
N 字节 常数0(Q0.0输出脉冲)或1(Q0.1输出脉冲)
CMD 字节 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC功能说明:脉冲输出(PLS)指令被用于控制在高速输入(Q0.0 和 Q0.1)中提供的\"脉冲串输出\"(PTO)和\"脉宽调制\"(PWM)功能。PTO 提供方波(50%占空比)输出,配备周期和脉冲数用户控制功能。PWM 提供连续性变量占空比输出,配备周期和脉宽用户控制功能。定时器指令
接通延时定时器指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: TON Txxx, PT
梯形图:
输入输出参数 数据类型 适用操作数
IN 布尔 使能位
Txxx 字 常数(0~255)
PT 整数
VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, 常数, *VD, *LD, *AC
操作数说明:
定时器类型 分辨率 最大值 定时器IDTON/TOF
1ms 32767*1ms T32, T96
10ms 32767*10ms T33-T36, T97-T100
100ms 32767*100ms T37-T63, T101-T255
TONR
1ms 32767*1ms T0, T64
10ms 32767*10ms T1-T4, T65-T68
100ms 32767*100ms T5-T31, T69-T95
MagicWorks PLC 编程软件用户手册
391
功能说明:接通延时定时器(TON)指令在启用输入为【打开】时,开始计时。当前值(Txxx)大于或等于预设时间(PT)时,定时器位为【打开】。启用输入为【关闭】时,接通延时定时器当前值被清除。达到预设值后,定时器仍继续计时,达到最大值 32767 时,停止计时。TON、TONR 和 TOF 定时器有三种分辨率。分辨率由定时器 ID 决定,详细情况见操作数说明里的表格。
LAD 和 FBD 定时器选择
1)点击定时器号码域,然后键入定时器号码。
2)倘若您键入的定时器号码无效,则时间基准值继续为\"???\"。
3)将光标放在定时器框内稍等片刻,即可看到定时器工具提示。请查看此类定时器的有效号码列表。
4)一旦键入有效定时器号码,时间基准值就会在定时器框内显示,例如\"10 ms\"。<注释>
▪ TOF 及 TON 不能共享相同的定时器号码。例如,不能有 TON T32 和TOF T32。▪ 您可以将 TON 用于单间隔计时。
▪ 可用\"复原\"(R)指令复原任何定时器。\"复原\"指令执行下列操作:▪ 定时器位 = 关闭,定时器当前值 = 0
示例程序:
STL:
ORGANIZATION_BLOCK 主程序:OB1
Network 1
LD I0.0
TON T33, +50 // 如果 I0.0 为打开状态,在 50*10ms 后定时器T33 超时,定时器的位为 1
// I0.0 打开 T33 启动开始计时,I0.0 关闭 T33 复位并且停止计时Network 2
LD T33 // 如果 T33 位打开,则点亮 Q0.0,反之关闭Q0.0 = Q0.0
梯形图:
ORGANIZATION_BLOCK 主程序:OB1
Network 1
Network 2




