1               免责声明

本手册及样例包均为免费提供,仅供参考。所述版本、应用及案例可能与用户实际应用不符,请用户在使用前认真阅读相关使用说明,根据自身的应用环境及机床特点进行调整,并进行严格的测试,以规避可能存在的风险。对于在使用中发生的人员、财产等损失,由用户自行承担。

以上声明内容的最终解释权归西门子(中国)有限公司所有,后续内容更新恕不做另行通知。

 

 

2               概述

EMC行业中,使用扫码枪读取工件上的二维码,自动选择加工程序,从而节约加工准备时间,提高生产效率。

本应用适用于使用免驱的USB接口的扫码枪实现【扫码加工】。利用界面开发实现扫码读取和处理。

 

适用类型:

免驱(即插即用)的USB接口的扫码枪(有线,无线均可)

 

连接方式:USB连接

 

二维码内容:

程序名称(不含后缀名);前提:程序已经安装到零件程序,或子程序,或U盘,或用户CF卡,或网盘中。

 image.png

 

3               应用包

3.1        内容及安装

image.png

主要由两个文件组成:

easyscreen.ini – 界面配置文件,定义入口软键,界面脚本

ma_auto.com – 界面脚本文件,使用代码实现界面

 

安装:

            按照上述文件夹结构复制粘贴到/sinumerik/oem/或者/sinumerik/user/目录下。

 image.png

更多信息可参考《SINUMERIK 840D sl SINUMERIK Integrate Run MyScreensBE2)》手册。连接见文末。

3.2        注意事项

1.      该案例基于库的概念,包含了所有可能的程序路径选项。真实应用中可以根据实际需要进行精简。

2.      本例只是提供一种界面开发解决方案,可以帮助客户拓展一下扫码枪的应用思路,目前,已有客户拓展到通过扫码枪进行用户管理等。

3.      真实应用中,如不进行精简,也可以完美使用,但要注意选择程序的路径和检查是否有重复的程序。

3.3        界面说明

安装完成后,在Auto-加工界面可以看到软键入口:

image.png


点击【扫码】,弹出扫码输入窗口;

image.png

如果需要频繁扫码,可保留该窗口,不关闭。扫码完成后,点击【确认】即可,无需点击【返回】关闭该窗口。

 

各输入窗口含义:

image.png 

这里,为了实现路径记录,使用了两个用户R变量:R97R98.

如需调整,可在ma_auto.com中的如下代码中做调整。

 

DEF COMBO1={TYP="I",TGL="*   1=""MPF"",2=""SPF"",3=""USB"",4=""CF_CARD"",5=""NETWORK""",TXT_X=10,TXT_Y=0,X=20,Y=50,W=160,H=20,VAR="/NCK/CHANNEL/PARAMETER/R[97]"}

      DEF COMBO2={TYP="I",TGL="*   1=""*.MPF"",2=""*.SPF""",TXT_X=10,TXT_Y=0,X=20,Y=80,W=160,H=20,VAR="/NCK/CHANNEL/PARAMETER/R[98]"}

 

 

二维码说明:

二维码的信息只包含程序名称(不含后缀名);前提:程序已经安装到零件程序,或子程序,或U盘,或用户CF卡,或网盘中。

image.png

这里以零件程序文件夹中的程序为例:

image.png

用以上5个程序的名称生成5个二维码,扫码进行加工,如下:

image.png

 

当遇到程序未安装号,而扫码时,界面有防呆提醒功能。

 image.png


此时如果执行加工程序启动,也有相应报警提示。

image.png


此时说明在‘零件程序’文件夹下没有CHENG4523.MPF文件,应先拷贝程序后再扫码。

 

此外,还有扫码检测提示:

输入为空时,提示

image.png


扫码成功且有对应程序时,提示:

image.png

 

正常的扫码操作:

1.      点击扫码;2.扫描二维码;3.点击【确认】;4.按下NC启动

image.png

3.4        开发源码

3.4.1         Easyscreen.ini 界面配置文件

[STARTFILES]

 

StartFile03 =   area := AreaMachine, dialog := SlMachine, menu := SlMaAutoMenuHU, startfile   := ma_auto.com

 

 

3.4.2         ma_auto.com 界面脚本文件

以下代码不过多讲解,有兴趣的朋友可以参考Run MyScreens编程手册,连接见文末。

//S(START) 

    

      HS6=("扫码")

     

      PRESS(HS6)

          LM("PLC") 

      END_PRESS

     

//END

 

//M(PLC/"请扫码"//350,220,220,174)

 

      DEF VAR1={TYP="S",ST="",TXT_X=10,TXT_Y=0,X=20,Y=20,W=160,H=20,DT=6,wr=2}

      DEF COMBO1={TYP="I",TGL="*   1=""MPF"",2=""SPF"",3=""USB"",4=""CF_CARD"",5=""NETWORK""",TXT_X=10,TXT_Y=0,X=20,Y=50,W=160,H=20,VAR="/NCK/CHANNEL/PARAMETER/R[97]"}

      DEF COMBO2={TYP="I",TGL="*   1=""*.MPF"",2=""*.SPF""",TXT_X=10,TXT_Y=0,X=20,Y=80,W=160,H=20,VAR="/NCK/CHANNEL/PARAMETER/R[98]"}

      DEF VAR2={TYP="I",X=10,Y=100,VAR="/Channel/State/acStat[u1,1]",WR=4,W=10}

      DEF PATH1

      DEF PATH2

      DEF PATH3

      DEF PATH4

      DEF PATH5

      DEF FULLNAME

      DEF V_ISFILE

      DEF FULLPATH

      DEF TT1

     

      VS7=(SOFTKEY_OK)

      VS8=(SOFTKEY_NAV_BACK)

     

      LOAD

          TT1 = 0

      END_LOAD   

     

      OUTPUT(CODE1)

          ""PATH1""PATH2""VAR1""PATH4""PATH3""

          "M30"

      END_OUTPUT

     

      PRESS(VS7)

          FOC = 2

          FOC = 1

      END_PRESS

     

      ;按钮-退出

      PRESS(VS8)

          EXIT 

      END_PRESS  

     

      CHANGE(VAR1)

          IF(LEN(VAR1)==0)

                DLGL("请扫码")

                  START_TIMER("MYTT1",2000)

            ELSE

                IF(VAR2<>0)

                    DLGL("不在复位状态")

                      START_TIMER("MYTT1",2000)

                ELSE

                    CALL("MYTT2")

                ENDIF

            ENDIF

      END_CHANGE

 

      ;识别完整程序路径

      SUB(GET_PATH)

          SWITCH(COMBO1)

            CASE 1

                PATH1="CALL   """

                PATH2="/MPF.DIR/"

                PATH3="""   "

                PATH5="//NC/MPF.DIR/"

            CASE 2

                PATH1="CALL   """

                PATH2="/SPF.DIR/"

                PATH3="""   "

                PATH5="//NC/SPF.DIR/"

            CASE 3

                PATH1="EXTCALL("""

                PATH2="USB:"

                PATH3=""")"

                PATH5="USB:/"

            CASE 4

                PATH1="EXTCALL("""

                PATH2="CF_CARD:"

                PATH3=""")"

                PATH5="CF_CARD:/"

            CASE 5

                PATH1="EXTCALL("""

                PATH2="//DEV6:/"

                PATH3=""")"

                PATH5="//DEV6:/"

                ;网盘地址随驱动器号变化,另,还可以使用IP地址,如:

                ;EXTCALL   "//192.168.10.10/MINAAA/UTEST1.MPF"

                ;网盘IP地址:192.168.10.10;网盘共享文件夹名称:MINAAA; 程序名称:UTEST1.MPF

            DEFAULT

                PATH1=""

                PATH2=""

                PATH3=""

                PATH5=""

          END_SWITCH

         

          ;识别程序扩展名

          SWITCH(COMBO2)

            CASE 1

                PATH4="."<<"MPF"

            CASE 2

                PATH4=".SPF"

            DEFAULT

                PATH4=".MPF"

          END_SWITCH

         

          IF(LEN(VAR1)<>0)

            FULLPATH =   PATH5<<VAR1<<PATH4  

          ENDIF      

      END_SUB

 

      ;指向程序名称

      SUB(SET_PROGNAME)

         

          IF(RNP("/Channel/ProgramInfo/selectedWorkPProg[u1, 1]")=="/_N_WKS_DIR/_N_QRCODE_WPD/_N_QRCODE_MPF")

            FULLNAME="//NC/WKS.DIR/QRCODE.WPD/QRCODE1.MPF"

          ELSE

            FULLNAME="//NC/WKS.DIR/QRCODE.WPD/QRCODE.MPF"

          ENDIF

 

      END_SUB

     

      SUB(MYTT1)

          TT1 = TT1 + 1

          IF(TT1 == 1)

            TT1 =   0

            DLGL("")

            STOP_TIMER("MYTT1")

          ENDIF

      END_SUB

     

      SUB(MYTT2)

          ;扫码获得加工程序路径

          CALL("GET_PATH")

 

          ;生成加工程序

          CALL("SET_PROGNAME")

          GC("CODE1",FULLNAME)

 

          ;选择加工程序

          SP(FULLNAME)

 

          ;判断U盘程序文件是否存在

          IF(COMBO1<>5)

            EP(FULLPATH,V_ISFILE)

           

            IF(V_ISFILE==0)

                  DLGL(VAR1<<PATH4<<" 已选择!")

                  START_TIMER("MYTT1",2000)

                ;EXIT 

            ELSE

                  DLGL(FULLPATH<<"  程序不存在!")

            ENDIF

          ENDIF

      END_SUB

         

//END

 


4               参考文献

1.      SINUMERIK 828D_840Dsl_手册_RunMyscreens应用手册_201906》,http://www.ad.siemens.com.cn/CNC4YOU/Home/Document/837

2.      SINUMERIK 828D_840Dsl_工具_RunMyscreens_例程合集_201906http://www.ad.siemens.com.cn/CNC4YOU/Home/Document/838

3.      SINUMERIK 828D SINUMERIK Integrate Run MyScreens10/2020

https://support.industry.siemens.com/cs/document/109803123/sinumerik-828d-sinumerik-integrate-run-myscreens?dti=0&lc=en-WW

 

5               作者/联系人

Cheng Fei

2021.9.10