FX5U支持的数据类型:
位数据: X、Y、M、S等(1位)
字数据: D、T、C等(16位)
双字数据: 一对连续的D寄存器(32位)
常数: K(十进制)、H(十六进制)
数据长度:
16位数据:范围-32768~+32767
32位数据:范围-2147483648~+2147483647
位数据:0或1
数据寄存器D:
D0-D7999:普通数据寄存器(断电清零)
D8000-D8511:特殊数据寄存器
D10000-:文件寄存器(需要设置)
位与字的对应:
16个位组成一个字
例如:M0-M15对应一个16位数据
4个字组成一个双字
MOV指令(16位传送):
指令格式:[MOV S D] 功能:将源数据S传送到目标地址D 示例: X0 |---||--------[MOV K100 D0]--- 功能:X0接通时,将十进制100传送到D0
DMOV指令(32位传送):
指令格式:[DMOV S D] 功能:将32位源数据传送到D寄存器对 示例: X0 |---||-------[DMOV K100000 D0]--- 功能:将100000传送到D1、D0组成的32位寄存器
BMOV指令(块传送):
指令格式:[BMOV S D n] 功能:将连续n个数据从S传送到D 示例: X0 |---||------[BMOV D0 D10 K5]--- 功能:将D0-D4的5个数据传送到D10-D14
FMOV指令(多点传送):
指令格式:[FMOV S D n] 功能:将同一个数据S传送到连续的n个地址 示例: X0 |---||------[FMOV K0 D20 K10]--- 功能:将0传送到D20-D29共10个寄存器
CMP指令(比较):
指令格式:[CMP S1 S2 D] 功能:比较S1和S2,结果存放到D开始的3个位中 结果: D = 1(S1 > S2) D+1 = 1(S1 = S2) D+2 = 1(S1 < S2) 示例: X0 |---||------[CMP D0 K100 M0]--- M0 Y0 |---||---( )--- M1 Y1 |---||---( )--- M2 Y2 |---||---( )--- 功能:D0>100时Y0亮,等于100时Y1亮,小于100时Y2亮
ZCP指令(区间比较):
指令格式:[ZCP S1 S2 S D] 功能:比较S是否在S1-S2区间,结果存放到D开始的3个位 结果: D = 1(S < S1) D+1 = 1(S1 ≤ S ≤ S2) D+2 = 1(S > S2) 示例: X0 |---||-----[ZCP K0 K100 D10 M10]--- 功能:判断D10的值在哪个区间
加法指令:
ADD(16位加法):[ADD S1 S2 D] DADD(32位加法):[DADD S1 S2 D] 示例: X0 |---||------[ADD D0 D2 D4]--- 功能:D0 + D2 → D4 X1 |---||------[DADD D10 D20 D30]--- 功能:32位加法:(D11,D10) + (D21,D20) → (D31,D30)
减法指令:
SUB(16位减法):[SUB S1 S2 D] DSUB(32位减法):[DSUB S1 S2 D] 示例: X0 |---||------[SUB D10 K50 D20]--- 功能:D10 - 50 → D20
乘法指令:
MUL(16位乘法):[MUL S1 S2 D] DMUL(32位乘法):[DMUL S1 S2 D] 示例: X0 |---||------[MUL D0 K10 D2]--- 功能:D0 × 10 → D2(结果32位存D3,D2)
除法指令:
DIV(16位除法):[DIV S1 S2 D] DDIV(32位除法):[DDIV S1 S2 D] 示例: X0 |---||------[DIV D10 K2 D20]--- 功能:D10 ÷ 2 → D20(商)... D21(余数)
INC指令(加1):
指令格式:[INC D] 功能:D的内容加1 示例: X0 |---||--------[INC D0]--- 功能:每次X0接通,D0加1
DEC指令(减1):
指令格式:[DEC D] 功能:D的内容减1 示例: X0 |---||--------[DEC D0]--- 功能:每次X0接通,D0减1
温度数据处理系统:
网络1:温度采集(假设温度值在D100) M8000 |---||------[MOV K0 D0]---(清零累加值) [MOV K0 D1]---(清零计数) [MOV K1000 D2]---(采样次数) 网络2:定时采样 M8013(1秒脉冲) C0 K10 |---||-------------------[CNT]--- C0 |---||------[ADD D0 D100 D0]---(累加温度值) [INC D1]---(计数加1) 网络3:计算平均值 C0 D10 |---||---[DIV D0 D1 D10]---(平均温度) [MOV K0 D0]---(清零累加) [MOV K0 D1]---(清零计数) [RST C0]---(复位计数器) 网络4:温度比较 M8000 |---||------[CMP D10 K300 D20]--- D20(高温) Y0 |---||---( )--- D21(正常) Y1 |---||---( )--- D22(低温) Y2 |---||---( )---
BCD码与二进制转换:
BCD指令(二进制转BCD):[BCD S D] BIN指令(BCD转二进制):[BIN S D] 示例1:显示用数据转换 X0 |---||------[BCD D100 K4Y0]--- 功能:将D100的二进制值转换为BCD码输出到Y0-Y17 示例2:输入数据处理 X1 |---||------[BIN K4X0 D200]--- 功能:将X0-X17的BCD码输入转换为二进制存D200
SFTL指令(左移位):
指令格式:[SFTL D n1 n2] 功能:将D开始的n1个位左移n2位 示例: X0 |---||------[SFTL M0 K16 K1]--- 功能:将M0-M15左移1位,最高位移出,最低位补0
SFTR指令(右移位):
指令格式:[SFTR D n1 n2] 功能:将D开始的n1个位右移n2位 示例: X0 |---||------[SFTR M0 K16 K1]--- 功能:将M0-M15右移1位,最低位移出,最高位补0
WSFL指令(字左移位):
指令格式:[WSFL D n1 n2] 功能:将D开始的n1个字左移n2字 示例: X0 |---||------[WSFL D0 K10 K1]--- 功能:将D0-D9左移1字,D0移出,D9补0
设计一个压力监测系统:
要求:
压力传感器数值在D100(0-1000对应0-10MPa)
每10秒采集一次数据(M8014)
存储最近10次数据到D200-D209
计算平均值存D110
计算最大值存D111,最小值存D112
压力超过8MPa报警(Y0)
压力低于1MPa报警(Y1)
设计一个三种物料配料系统:
要求:
D0设定总重量(g)
D1设定物料A比例(%),D2设定物料B比例(%),D3设定物料C比例(%)
计算各物料重量:
D10 = D0 × D1 ÷ 100(物料A重量)
D11 = D0 × D2 ÷ 100(物料B重量)
D12 = D0 × D3 ÷ 100(物料C重量)
实际重量传感器值在D100
配料误差超过5%报警(Y2)
配料完成信号(Y3)
设计一个串口数据接收处理系统:
要求:
接收到的原始数据在D500-D509
数据校验:求D500-D508的和,存D600
校验码在D509,比较D600与D509
校验正确,将数据转存到D300-D308(Y4亮)
校验错误,报警(Y5亮),数据丢弃
错误计数存D700,超过10次停机(Y6亮)
解决方法:
使用32位指令处理大数
检查数据范围是否合理
使用浮点运算指令(DEADD等)
添加数据范围限制程序
示例:数据范围限制程序
M8000 |---||------[CMP D100 K0 M0]--- M2(小于0) [MOV K0 D100]--- M8000 |---||------[CMP D100 K1000 M10]--- M10(大于1000)[MOV K1000 D100]---
解决方案:
使用上升沿触发
使用自锁电路控制单次执行
使用标志位控制
示例:上升沿触发传送
X0 M0 |---||---( )--- X0 M0 [MOV K100 D0]--- |---||----|/|---
方法:
使用断电保持型数据寄存器(D200以后可设置)
使用文件寄存器
使用存储器盒
程序中将数据备份到EEPROM
MOV K100 D0指令的功能是什么?
A) 将D0传送到K100
B) 将100传送到D0
C) 将D0与100比较
D) 将D0加100
CMP指令的结果占用多少个位?
A) 1个
B) 2个
C) 3个
D) 4个
ADD D0 D2 D4执行后,D4的值是多少?
A) D0 + D2
B) D0 - D2
C) D0 × D2
D) D0 ÷ D2
DMOV指令用于32位数据传送。( )
INC指令每次执行,D寄存器的值加1。( )
ZCP指令用于单值比较。( )
设计一个学生成绩统计系统:
要求:
输入5个学生成绩到D0-D4(0-100分)
计算平均分存D10
计算最高分存D11,最低分存D12
统计各分数段人数:
优秀(≥90):D20
良好(≥80):D21
中等(≥70):D22
及格(≥60):D23
不及格(<60):D24
X0按钮按下开始统计
统计完成Y0亮
选择题答案:
B 2. C 3. A
判断题答案:
对 2. 对 3. 错
编程题参考程序:
网络1:初始化 X0 [MOV K0 D10]---(清平均分) [MOV K0 D11]---(清最高分) [MOV K100 D12]---(最低分初值100) [FMOV K0 D20 K5]---(清统计结果) 网络2:计算总分和最高最低分 X0 M0 |---||---(S)--- M0 [ADD D10 D0 D10]---(累加成绩) [CMP D0 D11 M30]--- M30 [MOV D0 D11]---(更新最高分) [CMP D0 D12 M40]--- M42 [MOV D0 D12]---(更新最低分) 网络3:统计分数段(以D0为例,其他类似) M0 [CMP D0 K90 M50]--- M51(等于90)[INC D20]--- M50(大于90)[INC D20]--- M0 [ZCP K80 K89 D0 M60]--- M61(在80-89)[INC D21]--- (其他分数段类似...) 网络4:计算平均分 X1(完成) [DIV D10 K5 D10]---(计算平均分) [RST M0]---(复位标志) 网络5:完成指示 X1 Y0 |---||---( )---
设计以下系统:
批量数据清零程序(D100-D199)
数据查找程序(在D200-D299中查找指定值)
数据排序程序(对D300-D309从小到大排序)
设计一个仓库管理系统:
入库数量存D100,出库数量存D101
当前库存存D102(自动计算)
库存上限D103,下限D104
库存报警:超上限Y0,低于下限Y1
月累计入库D105,出库D106
月报表数据清零按钮X0
设计一个模拟量数据处理系统:
模拟量输入值在D200(0-4000对应0-10V)
转换为工程值0-100.0%(D201,带1位小数)
数字滤波:取最近5次平均值
量程标定功能:
零点标定:X1按下,当前值作为零点存D210
满度标定:X2按下,当前值作为满度存D211
标定公式:工程值 = (当前值 - 零点) × 100 ÷ (满度 - 零点)
分析以下程序问题:
网络1: X0 |---||------[MOV D0 D1]--- [ADD D1 K10 D1]--- [MOV D1 D0]--- 网络2: X1 |---||------[CMP D0 K100 M0]--- M0 Y0 |---||---( )---
数据传送指令的应用
比较指令的使用技巧
算术运算指令的编程
数据处理综合应用
能够进行各种数据运算
能够设计数据采集处理系统
能够实现数据比较和判断
能够解决实际数据处理问题
数据长度不匹配
忘记数据清零初始化
数据溢出处理不当
比较指令结果使用错误
第七课:移位与循环指令
位移位指令应用
字移位指令使用
循环移位技巧
实际工程案例
多做数据处理实验
从简单计算到复杂系统
注意数据范围和精度
重视实际应用案例分析
请认真完成本课的所有实践任务,准备好后可以开始第七课的学习。
祝您学习顺利!