最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

西门子828D系统M代码译码

IT圈 admin 115浏览 0评论

2024年6月14日发(作者:宰醉卉)

西门子 828D系统 M代码 译码

摘要:在西门子828D系统中,使用模块化PLC程序,对一定数量的M代码

进行译码。

关键字:数控机床,828D,M代码译码

随着智能制造的不断发展,数控机床外围设备增多,夹具,机器人通讯,自动门

等附加动作越来越多,在PLC程序中为了处理对应的动作,需要大量的M代码,

西门子828D系统提供的动态译码数量不足,静态M代码译码繁琐,因此通过模

块化程序完成M代码的译码,简化M代码的使用可以大大方便日常PLC程序的编

写。

1 828D M代码功能介绍

M代码为机床的辅助功能,提供NC与PLC之间的交互通道,NC执行预先定

义好的M代码,PLC可以对该M代码给出应答,实现机床动作,信号交互等作用。

例如M3 主轴旋转,M08冷却启动等等。

828D系统提供了5组M代码,同一行NC程序中可以同时执行5个M代码。

动态M代码:M代码激活后,对应的BIT地址会置1“”并保持一个周期

(M0~M99)。

静态M代码:M代码激活后,一个双字位会更新成当前执行的M代码数字,

并且给出功能组改变信号。

2 使用中的问题

对于动态M代码只在执行的周期提供一个脉冲信号,静态M代码在下一个M

代码执行前数值保持不变,对于大多数执行的M代码,都有外围工作的执行,我

们需要在动作执行完成之前,使系统进入读入禁止状态,需要对每个M代码进行

单独的处理。

828D系统只提供100个动态M代码(每个M代码有单独对应的地址),对于

超过100的M代码系统只提供静态地址(M代码的值),若果需要使用这些M代

码,需要在PLC程序中根据对应的M代码组的静态地址与数字进行比较,确定M

代码是否激活,每次使用都需要单独处理,使用极为繁琐,对于大量译码,需要

极大的程序量。

828D系统最多可以同时执行5个M代码,5组M代码的静态地址使用不同的

接口地址,使用的M代码需要对每组分别译码,进而增加了程序更多量。

为了解决上述问题,并完成程序模块化,我们提供了一个标准子程序,对

M420之前的M代码译码,并对每个M代码置位指定地址,编程时可直接通过调用

子程序来使用这些M代码。

3 译码流程

3.1动态M代码译码

在M代码改变的周期,将执行的动态M代码地址传送到指定的地址中,地址

状态一直保持。

3.2静态M代码译码

由于828D的PLC中没有专用的译码功能,我们利用现有的指令功能,进行

译码,将静态M代码按照32进制拆分,通过将M功能的静态值除以32,得到的

整数部分确定译码的起始地址并置位,余数部分通过右移指令确定偏移地址,就

可以得到M功能1的M代码地址,同样的方法得到M功能2-5的M代码,最后将

5组地址进行合并,得到最终的译码地址。

4 程序实现

4.1关键指令

MOV_DW指令:

指令双字移动(MOV_DW)将输入双字(IN)移至输出双字(OUT),不改变

原来的数值。

p指令:

指令整数相除得双整数

将两个 16 位整数相除,得出一个 32 位结果,其中包括一个 16 位余数(高

位)和 16 位商(低位)。

SHL_DW指令:

双字左移和双字右移指令分别将输入双字(IN)根据移动数(N)向左移动

或向右移动,并将结果载入输出字(OUT)。位移指令对每个移出位补0。如果

移动数(N)大于或等于 32,则数值最多被移动 32 次。双字左移和双字右移

指令不带符号。

WOR_DW指令

指令双字 OR 逻辑或运算两个输入双字的对应位,并在双字中载入结果

(OUT)。

4.2动态译码程序

对于100以为的M代码,利用系统提供的M代码的动态地址,在M代码执行

的PLC周期中,接口信号1000~DBD1012数值不等于0,通过这个条件

判断有100以内的M代码执行,在这个周期将动态的脉冲地址通过MOV指令传送

到(DB9039),并保存下来,在复位信号之前,对应地址会一直保持为1。

4.3静态译码程序

对于100一直的M代码,我们通过M代码的静态地址进行译码,这些M代码

执行后,静态M代码地址3000会存储执行的M代码的数值,我们将

此值动过SUB指令减去100得到的值存入DB9040中,之后通过p指令除以32,

结果的商值存于低16位中,确定译码的起始地址,余数存入高16位中,用于确

定偏移地址。通过起始地址确定存入地址的起始位,偏移地址通过SHL_DW指令

偏移到对应的译码位中。

通过上面的流程,我们可以得到5组M代码的,之后通过WOR_DW指令,将5

组M代码合并到同一地址中,记录保存,并将中间地址清零。

4.3M代码的处理

通过上述操作之后,NC侧M代码执行后,M0~M99会被译码到

0.0~DBX12.3。

M100~M419会被译码到0.0~39.7,这些地址执行后会

被置位,当对应的M代码完成后,直接复位对应地址即可。当有M代码执行时,

16.0或48.0会被置1,用于触发读入禁止,等待M代码

完成。在动作执行完成后或对于没有动作执行的M代码以及西门子系统占用的M

代码,可以在PLC中直接复位这些信号,而复位急停等操作可以将这些地址全部

清零。

5 结语

通过在828D系统的PLC中使用该M代码译码子程序之后,我们不需要其他

的程序就可以直接使用400以内的M代码,是程序模块化,简化后续增加夹具的

外围设备以及联机工业机器人的程序量。

参考文献

[1] 828D简明调试手册 2017

[2] 828D PLC编程手册 2011

[3] 西门子功能手册(基本功能)

2018

2024年6月14日发(作者:宰醉卉)

西门子 828D系统 M代码 译码

摘要:在西门子828D系统中,使用模块化PLC程序,对一定数量的M代码

进行译码。

关键字:数控机床,828D,M代码译码

随着智能制造的不断发展,数控机床外围设备增多,夹具,机器人通讯,自动门

等附加动作越来越多,在PLC程序中为了处理对应的动作,需要大量的M代码,

西门子828D系统提供的动态译码数量不足,静态M代码译码繁琐,因此通过模

块化程序完成M代码的译码,简化M代码的使用可以大大方便日常PLC程序的编

写。

1 828D M代码功能介绍

M代码为机床的辅助功能,提供NC与PLC之间的交互通道,NC执行预先定

义好的M代码,PLC可以对该M代码给出应答,实现机床动作,信号交互等作用。

例如M3 主轴旋转,M08冷却启动等等。

828D系统提供了5组M代码,同一行NC程序中可以同时执行5个M代码。

动态M代码:M代码激活后,对应的BIT地址会置1“”并保持一个周期

(M0~M99)。

静态M代码:M代码激活后,一个双字位会更新成当前执行的M代码数字,

并且给出功能组改变信号。

2 使用中的问题

对于动态M代码只在执行的周期提供一个脉冲信号,静态M代码在下一个M

代码执行前数值保持不变,对于大多数执行的M代码,都有外围工作的执行,我

们需要在动作执行完成之前,使系统进入读入禁止状态,需要对每个M代码进行

单独的处理。

828D系统只提供100个动态M代码(每个M代码有单独对应的地址),对于

超过100的M代码系统只提供静态地址(M代码的值),若果需要使用这些M代

码,需要在PLC程序中根据对应的M代码组的静态地址与数字进行比较,确定M

代码是否激活,每次使用都需要单独处理,使用极为繁琐,对于大量译码,需要

极大的程序量。

828D系统最多可以同时执行5个M代码,5组M代码的静态地址使用不同的

接口地址,使用的M代码需要对每组分别译码,进而增加了程序更多量。

为了解决上述问题,并完成程序模块化,我们提供了一个标准子程序,对

M420之前的M代码译码,并对每个M代码置位指定地址,编程时可直接通过调用

子程序来使用这些M代码。

3 译码流程

3.1动态M代码译码

在M代码改变的周期,将执行的动态M代码地址传送到指定的地址中,地址

状态一直保持。

3.2静态M代码译码

由于828D的PLC中没有专用的译码功能,我们利用现有的指令功能,进行

译码,将静态M代码按照32进制拆分,通过将M功能的静态值除以32,得到的

整数部分确定译码的起始地址并置位,余数部分通过右移指令确定偏移地址,就

可以得到M功能1的M代码地址,同样的方法得到M功能2-5的M代码,最后将

5组地址进行合并,得到最终的译码地址。

4 程序实现

4.1关键指令

MOV_DW指令:

指令双字移动(MOV_DW)将输入双字(IN)移至输出双字(OUT),不改变

原来的数值。

p指令:

指令整数相除得双整数

将两个 16 位整数相除,得出一个 32 位结果,其中包括一个 16 位余数(高

位)和 16 位商(低位)。

SHL_DW指令:

双字左移和双字右移指令分别将输入双字(IN)根据移动数(N)向左移动

或向右移动,并将结果载入输出字(OUT)。位移指令对每个移出位补0。如果

移动数(N)大于或等于 32,则数值最多被移动 32 次。双字左移和双字右移

指令不带符号。

WOR_DW指令

指令双字 OR 逻辑或运算两个输入双字的对应位,并在双字中载入结果

(OUT)。

4.2动态译码程序

对于100以为的M代码,利用系统提供的M代码的动态地址,在M代码执行

的PLC周期中,接口信号1000~DBD1012数值不等于0,通过这个条件

判断有100以内的M代码执行,在这个周期将动态的脉冲地址通过MOV指令传送

到(DB9039),并保存下来,在复位信号之前,对应地址会一直保持为1。

4.3静态译码程序

对于100一直的M代码,我们通过M代码的静态地址进行译码,这些M代码

执行后,静态M代码地址3000会存储执行的M代码的数值,我们将

此值动过SUB指令减去100得到的值存入DB9040中,之后通过p指令除以32,

结果的商值存于低16位中,确定译码的起始地址,余数存入高16位中,用于确

定偏移地址。通过起始地址确定存入地址的起始位,偏移地址通过SHL_DW指令

偏移到对应的译码位中。

通过上面的流程,我们可以得到5组M代码的,之后通过WOR_DW指令,将5

组M代码合并到同一地址中,记录保存,并将中间地址清零。

4.3M代码的处理

通过上述操作之后,NC侧M代码执行后,M0~M99会被译码到

0.0~DBX12.3。

M100~M419会被译码到0.0~39.7,这些地址执行后会

被置位,当对应的M代码完成后,直接复位对应地址即可。当有M代码执行时,

16.0或48.0会被置1,用于触发读入禁止,等待M代码

完成。在动作执行完成后或对于没有动作执行的M代码以及西门子系统占用的M

代码,可以在PLC中直接复位这些信号,而复位急停等操作可以将这些地址全部

清零。

5 结语

通过在828D系统的PLC中使用该M代码译码子程序之后,我们不需要其他

的程序就可以直接使用400以内的M代码,是程序模块化,简化后续增加夹具的

外围设备以及联机工业机器人的程序量。

参考文献

[1] 828D简明调试手册 2017

[2] 828D PLC编程手册 2011

[3] 西门子功能手册(基本功能)

2018

发布评论

评论列表 (0)

  1. 暂无评论