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