S7-315 2PN/DP挂CP340(RS232C)与第三方测量仪器通过ASCII协议通讯。发送数据块DB1,DB1的数据类型为16个字节的数组;接收数据块DB2,DB2的数据类型为16个字节的数组。
现在CPU与第三方仪器通讯正常,PLC可以通过改变DB1的值,发送DB1来切换仪器的参数值;第三方仪器也可以反馈数据到DB2中。
在DB2的16个字节中,可以看到仪器反馈到PLC的为10个字节;第1个字节为“空格”、第2~9个字节为数据、第10个字节为“回车”;以上数据显示均为ASCII码值
新建一个DB3,在其中建立一个变量其数据类型为String,将DB2的数据向DB3移动时,剔除掉第一个“空格”、剔除掉最后一个“回车”,将DB2中的2~9字节,逐一MOVE到DBB3的 String[1]~String[8]中,使用S_CONV(FC39),发现转换不到想要的实数值。
通过查找资料,在论坛中也有遇见此类问题的,将的都是寥寥几笔,试着写程序也没有成功。
附带说明:第三方仪表回传时数据有可能为6个字节,例如:9.9995、10.0000;也有可能是8个字节,例如:150.3338
当切换程序、设备故障时,还会反馈“OK”或“ERRO”字符串;
麻烦有解决过此类问题的,给出一个实践过的成功的解决思路或实例!谢谢