西门子840D用户报警的制作及报警号计算
前一些天,我在“找答案”栏目中看到有这样的一个提问,说西门子840D的用户报警如何创建及制作?看到此贴,问题贴链接:http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=237217&cid=1044。让我想起10多年前,第一次接触840D系统也是根据在论坛上热心网友的文档学习并仿制过一个创建用户报警的过程,借用这个来重温西门子840D系统用户报警的制作过程,这个是熟悉西门子840D系统的基本功。
简单介绍一下,我接触到的西门子840D系统,PCU版本已经是50.3了(版本不同创建方式有区别的)。设备为境外设备,由于当时购置设备时,商务谈判上没有明确报警需要有什么文本方式显示,故我们购买的设备报警语言为德文和英文(英文作为国际标准语言配置的)。虽然,那个PCU版本已经有中文的语言选项,但是,通过使用比较,我还是喜欢使用英文版本的语言作为日常操作语言,主要还是已经渐渐习惯了这些英文语句,切换到中文反而不习惯(系统语言翻译不怎么样的原因)。
任何事物总是有这样的有趣与神秘,当自己没有掌握时,总想方设法地去学习、去验证,以求得对此问题的熟悉或掌握此技巧,我也是有这样的心态,且比一般还强烈。
报警文本制作过程:我描述是过程,并不算是标准操作,仅仅只是我的记忆过程。
启动840D系统,当OP屏出现系统版本号时,快速按下“3”#数字键,在弹出的窗口输入西门子数控系统密码“SUNRISE”,进入系统界面,进入到我的电脑到F盘,插入U盘,找到“F:dh\mb.dir\myplc”名称的文件夹双击打开它,找到“myplc _uk.com”文件复制到U盘。将复制到U盘的myplc _uk.com再复制到我的电脑,修改报警文件后缀“.com”为“.txt”,并用记事本方式打开,打开这个用户报警文件后,在此文件上可以编辑报警信息了。我记得第一次报警英文报警信息,是让我司专门的英文翻译的同事根据我的中文含义,让她给我翻译为英文的,报警文本制作步骤基本就是这些,然后是退出文件编辑,将文件后缀返回由“.txt”修改为“.com”,将文件复制到西门子系统原文件夹(覆盖原文件),启动840系统。
根据具体控制需求,编辑用户报警程序,并将报警输出(DB2)到报警文本的具体条目上,将程序按原子程序归类编写到合适的网络中,编译、保存、下载到cpu。
随便找一个使能触发条件,触发该条报警DB2位为真,看OP屏上显示的报警文本信息是否符合报警内容,如有错误重新修改报警文件内容和报警条目。
报警文件格式:
文件头第一行,文件名%_N_MYPLC_UK_COM
文件头第二行,文件存储目录$Path=/_N_MB_DIR
报警号 显示方式 帮助代码 报警文本(就是要做这个任务)
700000 0 0 “对应报警地址DB2.DBX180.0 ”
显示方式:0:报警行显示;1:对话框方式显示。
700001 0 0 “、、、、、、、”
700002 0 0 “、、、、、、”
报警程序格式:
Call FC10
A I10.0
= DB2.DBX180.0 (用户报警700000#对应地址)
当I10.0 = 1,触发报警DB2定义的报警信息内容。
上述是举例说明报警文本及报警地址的对应关系。
报警号与报警地址的对应计算:
去年的9月,天气也异常炎热,我司根据产能的需要又添加了一台西门子840D sl系统设备,在调试过程中我看到德方现场调试(查询报警号),工程师是用一个据说是他们公司工程师开发的小软件,输入报警号,就得出具体的报警地址。由于德方对任何软件的态度总是遮遮掩掩的,我也不好意思要,实际上也确实不能够这样免费去要,这完全不同与国内大家要一个受控软件,都是明目张胆的要,国情吗也理解情理中的事情。
我就说关于这个报警号,可以通过我的简单计算(也是从论坛上看到学的)获取具体的报警地址号,那个现场工程师通过翻译让我现场模拟演练一下,我说可以。随便找一个报警号,如700100#这个报警号。
简单计算报警地址:将700100拆开3组数据,仅仅计算后面4位数据01 00 的值
70 01 00 #
01*8 +00/8 //高2位数据乘8,低2位数据除8,余数算作位值
8 + 0 //计算结果为8,位地址值补0,最后结果为8.0
700000#报警对应的报警地址是从DB2.DBX180.0开始的,使用将计算的结果再加上起始的地址结果:DB2.DBX180.0+8.0 = DB2.DBX188.0。
如700063#报警对应于那个地址。
70 00 63 #
0*8 + 63/8
0 + 7余7
这样报警号700063#实际对应的报警地址为DB2.DBX187.7