请教两个问题
两把扫描枪和CP313用DP通讯,扫描枪读上来的数据是字符串的格式,我通过MOV保存在DB1里,在DB1里建了一个字符数据组。两把枪的数据都保存在DB1里面,每把把枪的数据是32位的 因此在DB1里面建的数据位是64位字符。这样做对吗,还是每一把枪单独建一个数据组保存在不同的数据块里面。
因为读上来的数据是用来比较的,我想把每把枪的30位集合成数据串,(去掉前面两位)进行比较怎么把单个的字符做成数据组呢。
谢谢
最佳答案
1、字符串怎么样写到DB块里?
可以应用系统功能来传送,如SFC20.使用SFC20”BLKMOV"(块移动),可将源存储区的内容复制到目标存储区。源区域与目标区域不能交叉。如
CALL SFC20 //调用SFC20
SRCLBLK :=P#M54.0 BYTE 20 //源存储器区
RET_VAL :=MW10 //执行SFC20出错时的错误代码
DSTBLK :=P#DB2.DBX0.0 BYTE 20 //目标存储器区
2、如何取字符串中间指定字符?
功能FC26,它提供字符串的中间部分(从第P个字符(含第P个字符)开始的L个字符)。
3、字符串变量数据转换的相关一些 IEC 的标准功能:
使用 IEC 的标准功能 FC37, FC38 和 FC39 这些功能块可以实现字符串与其它数据类型(例如双整数)之间的相互的转换。
FC37 STRNG_DI: 将字符串转换为双整数
FC38 STRNG_I: 将字符串转换为整数
FC39 STRNG_R: 将字符串转换为实数
4、上述功能的具体用法,详见:
<S7-300400的系统软件和标准功能>下载:
http://www.ad.siemens.com.cn/products/as/simaticplc/download/070625_151.pdf
提问者对于答案的评价:
谢谢大家热心的回答
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc244860.html