首页 > 其他分享 >西门子1200PLC字符串拼接案例

西门子1200PLC字符串拼接案例

时间:2023-11-22 16:45:16浏览次数:74  
标签:1200PLC STRING data 西门子 CHAR 拼接 内容 暂存 输入

案例需求:

 

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;

 

标签:1200PLC,STRING,data,西门子,CHAR,拼接,内容,暂存,输入
From: https://www.cnblogs.com/sql-bk/p/17849671.html

相关文章

  • Modbus转Profinet--TS-180 网关连接西门子 PLC 和工业称重仪表
    项目随着科技的高速发展,工业自动化行业对日益多样的称重需求越来越高,上海某公司在国内的一个工业自动化项目中,监控中心系统需要远程实时采集工业称重仪表测量的各种称重参数。该系统使用的是西门子S7-300PLC,支持PROFINET以太网协议,工业称重仪表为该公司生产的称重显示控制......
  • MODBUS转PROFINET网关TS-180 网关连接西门子 PLC 和工业称重仪表
    随着科技的高速发展,工业自动化行业对日益多样的称重需求越来越高,上海某公司在国内的一个工业自动化项目中,监控中心系统需要远程实时采集工业称重仪表测量的各种称重参数。该系统使用的是西门子S7-300PLC,支持PROFINET以太网协议,工业称重仪表为该公司生产的称重显示控制器,提供......
  • oracle把查询结果以逗号拼接
    1.这种是后面有逗号的selectxmlagg(xmlparse(contentfiles||','wellformed)orderbyfiles).getclobval()asfilesfrom(selectfield008asfilesfromufp2h3p81666516120213unionallselectfield002asfilesfromufq9k2s21700208561930)2.后面没有逗号SELECTLIST......
  • shell脚本定义变量和文件路径拼接
    在shell脚本定义变量为xx="xxx"例如把一个路径或文件名定义为一个变量inputPath="/mnt/RNASeq/Result"fileName="202308071824_210901003_2D230327074US2S2745DX"在路径"/mnt/RNASeq/Result"下面有多个文件夹,例如:L01、L02、···每个文件夹下存在多个fa文件,例如“2023080......
  • 西门子HMI第一次下载:由于缺少面板映像,下载失败。请安装缺少的面板映像。请参阅文档
    第一次下载HMI时提示:由于缺少面板映像,下载失败。请安装缺少的面板映像。请参阅文档。 原因:组态时的HMI固件版本与触摸屏实际的版本不相符组态版本:16.0.0.0硬件实际版本:15.1.0.0  查看HMI硬件固件版本:1、点击Settings2、找到......
  • 字符串拼接引起的内存溢出问题
      stringans;while(!st.empty()){ans=st.top()+ans;st.pop();} 这段代码实现将栈中的字符取出,并拼接到字符串的开头由于字符串的特性,每次在开头添加一个元素将会导致整个字符串的重新分配和复制。在每次增加一个元素后,字符串 ans 的长度都会增加,并且......
  • mysql字符串拼接的4种方式总结
    前言第一种:第二种:第三种:第四种(运算,只对数字有效):附:MySQLgroup_concat()详解总结 前言总是记不住字符串拼接,每次都要百度去搜索,所以在这里记录一下,好方便后续的查找,如有错误和问题可以提出,谢谢。字符串拼接分为几种方式,在这里会一一举例写出:第一种:mysql自带语法C......
  • java代码中拼接的长字符有么又快速去掉+好的方法?
    在Java中,拼接长字符时使用+运算符会导致性能下降,因为每次拼接都会创建一个新的字符串对象。为了提高性能,可以使用StringBuilder或StringBuffer类来代替+运算符。这两个类都提供了操作字符串的方法,并且在拼接长字符时效率更高,因为它们是可变的。示例代码如下:StringBuilder......
  • js 拼接字符串带变量(js方法参数单双引号拼接的问题记录)
    小结:外面单引号,里面双引号,然后方法参数给转义的单引号即可(看下面的onClick事件即可)//刷新二级信号表格(增删改操作后)functionreloadSignal(subId){//清空$("#msgAll"+subId).empty();//js手工添加表格varhtmlStart='<spanstyle="posit......
  • sqlserver查询库中所有表的字段并进行拼接
    --查询库中所有表的字段信息SELECTTABLE_NAME,COLUMN_NAME,DATA_TYPEFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_SCHEMA='dbo'ORDERBYTABLE_NAME,ORDINAL_POSITION;--查询库中所有表的字段并进行拼接SELECTTABLE_NAME,STUFF((SELECT','+COLUMN_N......