地址分布 触摸屏的系统地址从dm500开始。 a1下的数字用的是一个触摸屏中的n标签,其功能如图2-a所示。 地址是触摸屏的内部地址区域,我用的是ls2000; n标签上有一个运算,从上到下分别是ls2000+1~ls2000+10。 a2下的数字用的是一个触摸屏中的两位e标签,其功能如图2-b所示。 地址是plc的内部地址区域,我用的是dm1000~1001。 从上到下分别是dm1000~dm1018。 a3下的数字用的也是一个触摸屏中的两位e标签,其功能如图2-c所示。 地址是plc的内部地址区域,我用的是dm2000~2001。 从上到下分别是dm2000~dm2018。 b1是触摸键,用来设定起始日期和终止日期日期。 b2=22915,用来触发统计总的工件数。 c1~c4用的是一个触摸屏中的t标签,其功能如图2-d所示。 地址是触摸屏的内部地址区域,c1=ls50102,c2=ls50103,c3=ls50100 ,c4=ls50101。 触摸屏程序 pro-face的触摸屏有d-script editor功能,请大家看以下的程序。 id : 0000 trigger : bit rising , edge bit address : ls050100 formula : if ([w:ls1000]<=758) 123;[w:ls1000]=[w:ls1000]+2 125; endif date type : bcd data length : 16 bit 此程序的是用来向下翻行,即指示值(a1)小于758时,将画面向下翻一行。 id : 0001 trigger : bit rising , edge bit address : ls050101 formula : if ([w:ls1000]<=720) 123;[w:ls1000]=[w:ls1000]+40 125; endif date type : bcd data length : 16 bit 此程序的是用来向下翻页,即指示值(a1)小于720时,将画面向下翻一页。 id : 0002 trigger : bit rising , edge bit address : ls050102 formula : if ([w:ls1000]>=40) 123;[w:ls1000]=[w:ls1000]-40 125; endif date type : bcd data length : 16 bit 此程序的是用来向上翻页,即指示值(a1)大于等于40时,将画面向上翻一页。 id : 0003 trigger : bit rising , edge bit address : ls050103 formula : if ([w:ls1000]>=2) 123;[w:ls1000]=[w:ls1000]-2 125; endif date type : bcd data length : 16 bit 此程序的是用来向上翻行,即指示值(a1)大于等于2时,将画面向上翻一行。 id : 0004 trigger : timer fn , timer duration : 1 formula : [w:ls2000]=[w:ls1000]/2 date type : bcd data length : 16 bit 此程序的显示指示数a1。 plc程序 [network] name="calendar"(本段是将每天的日期转换到触摸屏中) [statementlist] ld 253.13 out tr0 cmp dm0502 hr92 //dm0502是系统的年 and not 255.06 ld tr0 and 049.02 or ld and not tim252 and not 049.03 and not 049.04 out 049.02 tim 252 #0010 ld tr0 mov dm0502 hr92 cmp dm0503 hr93 //dm0503是系统的月 and not 255.06 ld tr0 and 049.03 or ld and not tim253 and not 049.04 out 049.03 tim 253 #0010 ld tr0 mov dm0503 hr93 cmp dm0504 hr94 //dm0504是系统的日 and not 255.06 out 049.04 ld tr0 mov dm0504 hr94 and tim252 ld tr0 and tim253 or ld ld tr0 and 049.04 or ld out tr1 add #0002 dm0070 dm0070 //dm0070是指针字 cmp dm0070 #0800 and 255.05 ld tr1 and 255.06 or ld mov #0000 dm0070 ld tr1 add dm0070 #2000 dm0076 //间接寻址,dm2000 add dm0070 #2001 dm0077 //间接寻址,dm2001 add dm0070 #1000 dm0074 //间接寻址,dm1000 bset #0000 *dm0076 *dm0077 mcro 10 dm0502 dm0626 //子程序入口 xfer #0002 dm0628 *dm0074 //日期写入触摸屏 [network] name="count&reset"(本段是程序记数与复位) [statementlist] ld 253.13 out tr0 and 228.10 //触摸屏上清零键 difu 080.10 ld tr0 and 080.10 bset #0000 dm0066 dm0067 //dm0066~67位计数值 ld tr0 and 081.15 //计数角度微分 and hr64.04 //计数角度位置 out tr1 inc dm0066 //工件数的低位 and 255.06 inc dm0067 //工件数的高位 ld tr1 inc *dm0076 //每天工件数的低位 and 255.06 inc *dm0077 //每天工件数的高位 [network] name="sum"(本段是程序统计) [statementlist] ld 253.13 out tr0 and 229.15 //触摸屏上统计键 difu 080.15 ld tr0 and 080.15 set hr70.00 //统计开始标志 mcro 10 dm0602 dm0606 //触摸屏设定起始日期 mcro 10 dm0612 dm0616 //触摸屏设定终止日期 bset #0000 dm0080 dm0083 //指针2 ld tr0 and hr70.00 out tr1 add dm0080 #2000 dm0086 //间接寻址,dm2000 add dm0080 #1000 dm0084 //间接寻址,dm1000 cmpl *dm0084 dm0608 and 255.05 ld tr1 and 255.06 or ld out 048.01 ld tr1 cmpl *dm0084 dm0618 and 255.07 ld tr1 and 255.06 or ld out 048.02 ld tr1 and 048.01 and 048.02 addl *dm0086 dm0081 dm0081 and 255.04 inc dm0083 ld tr1 add dm0080 #0002 dm0080 cmp dm0080 #0800 and 255.05 ld tr1 and 255.06 or ld rset hr70.00 xfer #0003 dm0081 dm0091