刚接触西门子,感觉指针功能非常强大,今天尝试使用指针编写,想实现这样一个功能,把指定数据块的起始地址后连续的N个字节数据复制到指定目标数据块的起始地址后的N个字节中。但在OB1中调用,用PLCSIM模拟的时候,就立刻停机了,查看了一下诊断缓区,提示读取时发生区域长度错误。搞了一个下午,很是郁闷,都没发现问题所在,只能上来请教高人了。麻烦哪位高手帮忙分析一下问题所在,谢谢!FB功能块程序如下:
L 0
T #source_db_number 临时变量,数据类型为word
L 0
T #denst_db_number 临时变量,数据类型为word
L 0
T #loop_count 临时变量,数据类型为word
L P##source_pointer 输入参数,数据类型为pointer
LAR1
L W [AR1,P#0.0]
T #source_db_number
L D [AR1,P#2.0]
LAR1
L P##dest_pointer 输入参数,数据类型为pointer
LAR2
L W [AR2,P#0.0]
T #dest_db_number
L D [AR2,P#2.0]
LAR2
L #len 输入参数,数据类型为word
m001: T #loop_count
OPN DB [#source_db_number]
L B [AR1,P#0.0]
OPN DB [#dest_db_number]
T B [AR2,P#0.0]
+AR1 P#1.0
+AR2 P#1.0
L #loop_count
LOOP m001