针对S7-400极其以下PLC,1200往上据说有专门的块了呢,首先,我是不用库的,需要什么函数会自己写,OK进入正题。
首先,我们有一个DB块,里面有14个char,一个14位的char数组和一个14位的string。如下图。
我们的目的是将char1-char14拼接成一个string。
第一种方式:第一步,将char放进数组。
相信大家都能看明白,但是我还是要解释解释
L取值2
T赋值到临时变量DBNO(INT)
OPN DB [#DBNO]获取DB块,这一句往后到结束符,所有的DB号均为#DBNO
CALL BLKMOV 引用BLKMOVE块,用来移动指针。
Any 所有类型
SRCBLK:=需要移动的指针(源)
RET_VAL:=状态(可以忽略)
DSTBLK:=目标区域
明白了,我们看一下DB块里的内容,得到的结果是下图:
很明显,已经成功对应了。那下一步就是转换字符串。
首先,第一字符串的第二位为14,为什么?第二位是有效长度定义。
接下来继续使用BLKMOVE,将数组里的内容移动到字符串里,当然,这个时候是从第三位开始。
结果如下:
整段程序如下:
当然,不要再OB1里添加临时变量~记得调用该函数。
这时候有人提出了疑问,为什么不直接MOVE,那我们修改一下程序看一下:
改完了,程序逻辑没错,看一下结果:
很明显,结果也没错,所以这两种方式都可以实现,为什么还会有第一种方法,大概是,以后会用得到这个数组吧。。。
但是不定义有效长度是万万不可的,这样以后用来比较字符串的时候可能会出现问题。