1. 首页
  2. 技术文章

西门子 | CNC系统数据输出指令简介及应用实例(一)

本期给大家简单介绍一下SINUMERIK系统的数据输出指令。

客户经常有这样的疑问:如何将数控系统中生成的变量或者数据输出到外部设备(如CF卡、U盘或者网盘等等)呢?西门子提供了一些高级指令,可以帮忙我们实现这一功能。将数据输出到外部设备需要用到如下指令:

 

EXTOPEN—-打开外部设备

WRITE—-写入外部设备

EXTCLOSE—-关闭外部设备

 

编程指令的结构

向外部设备/文件的输出分为 3 个步骤:

1. 打开外部设备/文件
使用 EXTOPEN 指令打开相应通道的要写入数据的外部设备/文件。

2. 写入数据
使用 WRITE 指令进行写入。

3. 关闭外部设备/文件
使用 EXTCLOSE 指令或到达程序末尾 (M30) 时,设备/文件被再次释放。

 

格式如下:

DEF INT <error>

DEF STRING[<n>] <output>

EXTOPEN(<error>,”<ExtG>”,<machining :mode>,<usagemode>,<write mode>)

<output>=”output data”

WRITE(<error>,”<ExtG>”,<output>)

EXTCLOSE(<error>,”<ExtG>”)

 

下面我们逐一看一下每个指令的内容:

 

1. 打开外部设备指令EXTOPEN

格式如下:

EXTOPEN(<error>,”<ExtG>”,<machiningmode>,<usage mode>,<write mode>)

 

error:打开外部设备时若出错,这是错误代码,数据类型:INT(整型)

数值:

0 No error

1 External device cannot be opened

2 External device is not configured

3 External device with invalid path configured

4 No access rights for external device

5 Usage mode: External device already”exclusively” occupied

6 Usage mode: External device already being”shared”

7 File length longer than LOCAL_DRIVE_MAX_FILESIZE

8 Maximum number of external devices has been exceeded

9 Option for LOCAL_DRIVE not set

11 V.24 interface has already been assigned withEasy-Message function(only 828D)

12 Write mode: Data contradicts extdev.ini

16 Invalid external path has been programmed

22 External device not mounted

 

ExtG:外部设备,数据类型:STRING(字符串)

可能的外部设备:

“LOCAL_DRIVE”: 本地CF卡(预定义)(840D要加选项 6FC5800-0AP12-0YB0,指的是系统CF卡;828D不需要选项,指系统前面板插的CF卡)

“CYC_DRIVE”: reserved drive name for use inSIEMENS cycles (pre-defined)

“/dev/ext/1″,…”/dev/ext/9”: 网络驱动器,需要通过extdev.ini定义

“/dev/cyc/1”, “/dev/cyc/2”: 保留的驱动用于西门子循环,需要通过extdev.ini定义

“/dev/v24”: V.24 接口(串口)需要通过extdev.ini定义

 

processing mode,数据类型:STRING(字符串)

数值:

“SYN”:同步,程序停止运行等待操作完成,并且可以通过error检查写操作是否完成。

“ASYN”:异步,程序不会被中断,但也没有写操作状态检查,即error总为0,不知是否完成。

 

usage mode,数据类型:STRING(字符串)

数值:

“SHARED”:共享模式,其它通道也可以使用这个设备。

“EXCL”:独占模式,仅本通道可以使用这个设备。

 

write mode,数据类型:STRING(字符串)

数值:

“APP”:以添加方式追加数据,即保留之前的数据。

“OVR”:以覆盖方式写数据,即不保留之前的数据。

 

2. 写操作WRITE指令

 

WRITE指令可以将程序段或数据在加工程序执行过程中写入文件,这个文件可以是可执行的加工程序,可以是数据记录文件。它可以放在静态存储区,也可以放在passive文件系统或者外部设备。格式如下:

DEF INT <error>

WRITE(<error>,”<filename>”/”<ExtG>”,”<set/data>”)

其中:

 

error:如果写文件发生错误,这里是错误代码。数据类型:INT(整数)

数值含义:

0 No error

1 Path not allowed

2 Path not found

3 File not found

4 Incorrect file type

10 File is full

11 The file is in use

12 No resources available

13 No access rights

14 external device not assigned or opened

15 Error when writing to an external device

16 invalid external path has been programmed

 

file name:文件名,数据类型:STRING(字符串)

文件名最长32个字符,不能包含空格和控制字符,文件路径必须以”/”开头

文件若没有后缀,则默认MPF

 

ExtG:数据可以输出到外部设备,数据类型:STRING(字符串)

同打开外部设备指令中描述相同。

 

block/data:要写到文件中的程序段或数据,数据类型:STRING(字符串)

 

Passive文件系统的文件大小由MD11420 $MN_LEN_PROTOCOL_FILE定义。

 

Write 指令简单例子

 

A. 将字符串写入文件

DEF INT err1

WRITE(err1,”mydata.mpf”,”hello world!”)

M30

 

B. 将数字写入文件

DEF INT err1

WRITE(err1,”mydata.mpf”,<<R1)

M30

注意,因为写入文件的数据要求是字符串类型,所以必须用”<<“将R1的数值转化成字符串。

 

C. 覆盖方式写文件

上面两个例子,都是保留原数据的基础上增加数据,如果不想保留原数据怎么办呢?

DEF INT err1

DEF INT err2

IF ISFILE( “mydata.mpf”)

DELETE(“mydata.mpf”)

ENDIF

Write(err2,”mydata.mpf”,<<R1)

M30

 

D. 判断是否有错误

DEF INT err1

DEF INT err2

IF ISFILE( “mydata.mpf”)

DELETE(err1,”mydata.mpf”)

IF err1>0 GOTOF _err1

ENDIF

Write(err2,”mydata.mpf”,<<R1)

IF err2>0 GOTOF _err2

M30

err1:

MSG(“Error on delete operation, errorcode=”<<err1)

err2:

MSG(“Error on write operation , errorcode=”<<err2)

 

3. 关闭设备EXTCLOSE指令

格式如下:

EXTCLOSE(<error>,”<ExtG>”)

Error:错误代码,数据格式:INT(整型)

数值:

0 No error

16 Invalid external path has been programmed

21 Error when closing the external device

 

ExtG:同打开外部设备指令中描述相同。

 

未完待续…

 
问答社区  发起问答  报警查询  技术文章  维修服务  资料下载  加交流群  申请 VIP   

本文转载来自【公众号:Siemens数控技术应用】,仅供大家学习交流,如侵权请联系站长删文。

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

联系微信:QQ594673193

联系邮箱:594673193@qq.com

工作时间:08:00~20:00

QR code