曾经第一次独立做个大项目,个人认为,六辊可逆冷轧机,以前自己使用LAD,但是总觉得屏幕太小,因为程序块面积太大,不能一view就是全部所需的,后来改用STL,从此爱上STL,方便,有时大家说LAD的逻辑编程很有优势,我觉得不是,STL的逻辑编程更有优势,A O 用的不亦乐乎,真的很方便,想怎么变就怎么变,不想LAD真的很麻烦,尤其是改程序。编卷径计算时,由于使用背景DB,于是需要使用指针才能进行下去,于是自己查找网上的例程,经过测试一切OK,当时使用TAR2的指令,具体的程序也不是很多,不过起了很大的作用,程序工整,易读。 我想指针对于算法和程序调用起到很大的作用,如果你的工艺程序与上述有关,那么首选应使用STL和指针,这样才能编写短小精悍的程序,并且可以发挥更大的效能。 如果大家有机会接触老外的程序,你会发现经常都是STL,经常都是指针,其实除了上述的两个目的,还有一个目的就是程序可以通用,适合各种生产的工况,原因在于使用了功能强大的指针。
L P##Input //指向存储地址指针Input首地址,并 LAR1 //装载到地址寄存器AR1中。 L W [AR1,P#4.0] //打开DB块 T #BLOCK_NO OPN DB [#BLOCK_NO] //如果是DB块,打开指定的DB块。 L W [AR1,P#2.0] //判断ANY指针中数据长度 _001:T #DATA_LEN //通常此处做loop循环!! L D [AR1,P#6.0] //找出需要计算数据区的开始地址 // do you job here....
使用指针时的注意事项(一) 重视某些寻址指令引起指针内容改变对程序的影响。 比如如下指令: L P#0.0 LAR1 L 20 next: T LW 20 OPN DB 1 //DB寄存器的地址为1 L DBD [AR1,P#0.0] L DBD [AR1,P#4.0] +R T LD 22 A DB10.DBX 0.0 //DB寄存器的地址变为10 JC _001 OPN DB 2 L LD 22 T DBD [AR1,P#8.0] JU _002 _001: L LD 22 T DBD [AR1,P#12.0] _002: NOP 0 +AR1 P#16.0 L LW 20 LOOP next 程序设计的目的能实现,根据DB10.DBX0.0的状态将DB1.DBD[X]+DB1.DBD[X+4]结果赋给DB1.DBD[X+8]或者DB1.DBD[X+12];但是很明显不能实现了,原因就是DB寄存器内容发生了变化,DB寄存器就是一个16位指针。一篇名为“详解西门子间接寻址”的帖子,初学者可以多参考。链接http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=333582&s_id=0&num=0