[三菱] 三菱ST语言:第3课 传送指令的应用

[复制链接]
查看480 | 回复0 | 2024-5-10 11:59:50 | 显示全部楼层 |阅读模式
第3课 传送指令的应用

本节内容:
       MOV指令
       MOVP指令
       FMOV指令
       FMOVP指令
       BMOV指令
       BMOVP指令




一,MOV传送指令

该功能指令是将源数据传送到目标元件上
源操作数可取所有数据类型,标操作数可以是KnY、KnM、KnS、T、C、D、V、Z



当我们按下X1时把10进制数K100传送给D0
当我们按下X2时把D0的值传送给D1
这时我们D0和D1的值就是10进制的100。

我们来看看在ST语言中的表示
我们输入MOV按下Ctrl+F1快速出来对话框

MOV( ?BOOL_EN? , ?ANY16_s? , ?ANY16_d? );



我们可以看到MOV指令的使用条件
BOOL_EN:我们的启动条件可以是X、Y、M等等
ANY16_s:我们的源操作数
ANY16_d:我们的目标操作数

同理我们还原梯形图
MOV( X1 , k100, D0 );MOV( X2 , D0, D1 );


在ST语言中我们是这样表示的

有没有觉得很简了

当然我们的的启动条件可以任意我串并联只要你开心想串几个都可以




二,MOVP传送指令

和我们的MOV传送指令一样只是加多了一个P
但是加多了一个P效果完全不一样
比如我们接通M0后会把T0的值一直传送送给D1



但是如果我们用MOVP的话无论我们的T0现在的值是多少他都只是传送了1过来,这个就是我们MOVP上升沿传送指令只大接通的一个周期有效



在我们的ST语言中MOVP的表示和我们的MOV一样
MOVP( ?BOOL_EN? , ?ANY16_s? , ?ANY16_d? );
BOOL_EN:我们的启动条件可以是X、Y、M等等
ANY16_s:我们的源操作数
ANY16_d:我们的目标操作数

SET(X1,M0);OUT_T(M0,TC0,k9999);MOVP( M0 , TN0 , D0 );



是不是很简单了??





三,FMOV多点传送指令

它的功能是将源操作数中的数据传送到指定目标开始的n个元件中,传送后n个元件中的数据完全相同。
比如现在没有按下X1时D0  到 D9是没有状态值的





在我们按下X1之后开始把K100 传送给D0 到 D9这
K10  代表的是传送个数,K100是值   D0是开始时的第一个位置





在我们的ST语言中功能也是一样只是写法不一样

FMOV( ?BOOL_EN? , ?ANY16_s? , ?ANY16_n? , ?ANY_d? );FMOV( X1, k100, k10 , D0 );



BOOL_EN:表示我们的开关输入信号
ANY16_s:  表示设定传送值
ANY16_n:  传送个数
ANY_d:        开始位置 (D、Z)

最后我们的结果也是一样



四,FMOVP指令
FMOVP ( X1, k100, k10 , D0 );

和我们的FMOV指令一样的效果

只是他只能在第一个扫描周期运行

我们加了P就表示上升沿的意思




五,BMOV成批传送指令


对指定点数的多个数据进行成批传送(复制)。
和我们的的FMOV多点传送指令相似
BMOV是以D作为传送的介质
比如我们可以看到D1  D2  D3设置了值
这个时候我们的D11 到 D13的值为0的





当我们接通M0时,D1=D11 ,D2=D12  D3=D13





这就是成批传送的用法
聪明的你可以看出来BMOV D1为开始的地址   D11为接收时开始的地址 K3代表的是个数  3个嘛。

在我们的ST语言中功能一样写法不一样

BMOV( ?BOOL_EN? , ?ANY_SIMPLE_s? , ?ANY16_n? , ?ANY_SIMPLE_d? );



我们还原一下上面的梯形图
D1:=100;D2:=200;D3:=300;BMOV( M0 , D1 , K3, D11 );



当我们接通M0时D1~D3开始把自己的值传送到D11~D13



怎么样是不是很简单了
你会了这加上我说的加个P就是代表上升沿的意思同理,我们BMOVP指令也是一样的只有接通的第一个扫描周期有用。




还在很多传送指令我这就不一一例出来了,我这列出的几个是大家常用的传送指令。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则