西门子1200PLC字符串拼接案例
案例需求:
1、输入一段字符串使用逗号分割
2、将输入的字符串在分割开头插入指定字符,如“W”
3、重新输出添加的字符
实现步骤:
1、了解指令
2、创建DB块
3、编写逻辑代码 使用SCL
//插入内容 "data".插入内容1 := CHAR_TO_STRING(IN := 'W'); "data".插入内容2 := CHAR_TO_STRING(IN := ','); #R_TRIG_Instance_1(CLK := "data".转换触发); "data".字符长度 := LEN("data".输入内容); //1、将字符串拆解存入字符数组中 Strg_TO_Chars(Strg := "data".输入内容, pChars := 0, Cnt => "data".移动量, Chars := "data".输入内容转换); IF #R_TRIG_Instance_1.Q THEN //2、查找字符数组 FOR #i := 0 TO "data".字符长度 DO // //3、判断分割符号 , IF STRING_TO_CHAR(IN := "data".输入内容转换[#i]) = ',' THEN //4、对字符数组进行字符插入并重新拼接,然后输出 "data".分割次数 := "data".分割次数 + 1; IF "data".分割次数 = 1 THEN//第一次分割 "data".输入内容暂存 := CONCAT(IN1 := "data".插入内容1, IN2 := STRING_TO_CHAR(IN := "data".输入内容转换[#n])); FOR #n := 0 TO #i - 2 DO // Statement section IF "data".输入内容暂存 := CONCAT(IN1 := "data".输入内容暂存, IN2 := STRING_TO_CHAR(IN := "data".输入内容转换[#n + 1])); END_FOR; "data".上一次分割位置 := #i; CONTINUE; ELSIF "data".分割次数 > 1 THEN//第二次分割 "data".输入内容暂存 := CONCAT(IN1 := "data".输入内容暂存, IN2 := STRING_TO_CHAR(IN := "data".插入内容2)); "data".输入内容暂存 := CONCAT(IN1 := "data".输入内容暂存, IN2 := STRING_TO_CHAR(IN := "data".插入内容1)); FOR #n := "data".上一次分割位置 TO #i - 2 DO "data".输入内容暂存 := CONCAT(IN1 := "data".输入内容暂存, IN2 := STRING_TO_CHAR(IN := "data".输入内容转换[#n + 1])); END_FOR; "data".上一次分割位置 := #i; CONTINUE; END_IF; END_IF; IF #i = "data".字符长度 THEN//最后一次分割 "data".输入内容暂存 := CONCAT(IN1 := "data".输入内容暂存, IN2 := STRING_TO_CHAR(IN := "data".插入内容2)); "data".输入内容暂存 := CONCAT(IN1 := "data".输入内容暂存, IN2 := STRING_TO_CHAR(IN := "data".插入内容1)); FOR #n := "data".上一次分割位置 TO #i - 2 DO "data".输入内容暂存 := CONCAT(IN1 := "data".输入内容暂存, IN2 := STRING_TO_CHAR(IN := "data".输入内容转换[#n + 1])); END_FOR; END_IF; END_FOR; END_IF;