CODESYS开发教程13-长字符串处理

CODESYS入门-HelloWord! 新建标准工程,在PLC_PRG中输入Hello World程序 Application-右键添加对象-视图,打开 Visualization中,从右边可视化工具箱中,基本的标签中选择一个矩形框,Common controls中选择一个按钮 关联string类型变量,选中矩形框,在右边属性-Texts-Text填%s(动态文本), Text variable-输入助手-选择sV... 阅读详情
AI摘要

这是一篇CODESYS开发环境的新手教程,重点讲解长字符串操作的库及相关函数。介绍了STRING类型的存储、大小等规则,指出长度超255的字符串处理方式,一是用CODESYS的StringUtils库,二是自己编程处理,还给出了示例及总结。

摘要:这是一篇写给新手的关于CODESYS开发环境的小白教程,一看就懂......

在以前的《CODESYS开发教程7-字符串及其基本操作》教程中,介绍了字符串及其基本操作,有朋友看了以后觉得不过瘾,希望有一些关于字符串的更加深入的介绍。今天的教程重点给大家讲解一下长字符串操作的库及相关函数,还有长字符串(长度>255)处理相关的一些骚操作,比如自己写的字符串长度函数、字符串中查找字符的函数等。

一、关于STRING类型的说明

CODESYS的STRING字符串类型有几点重要的规则需要给大家介绍一下。

1.字符串存储

字符串实际上是一个字符数组。比如定义一个字符串并赋值。

str   : STRING:=’CODESYS’;

str实际上是一个长度为7的字符数组,可以使用数组的方式来访问。也就是说,可以通过str[0]来获得字符串的首字符’C’。在实际存储中,字符是采用ASCII码的形式来保存的。在判断str[0]是否为字符C时,需要跟字符C的ASCII码来进行比较,即str[0]=16#43 或 str[0]=67 会输出TRUE。但是使用str[0]=‘C’则会报编译错误。

在CODESYS中没有字符变量,但是可以用BYTE来定义字符,比如16#4A为字母J。

2.字符串大小

在定义字符串类型的变量时,如果不指定字符串的长度,字符串变量允许的最多字符数为80。

str   : STRING:=’CODESYS’; //此时str实际为最大长度80个字符的数组str[0..79]

字符串变量实际需要的内存为字符串的长度加一个字节,即上面定义的str变量所占存储空间为81个字节(SIZEOF(str)=81)。

3.长字符串

CODESYS环境没有限制字符串变量类型的长度,因此长度超过255的字符串也是合法的(C语言的字符串最大长度为255)。例如可以定义个长度为1000字节的字符串:

str1 : STRING(1000);

需要注意的是,在《字符串及其基本操作》中介绍的字符串处理函数处理的字符数不能超过255,即只能对STRING(255)类型的字符串进行操作。长度超过255字符的字符串可以通过数组读取的方式取出来单独处理。

受字符数限制的字符串处理函数主要包括:CONCAT、DELETE、FIND、INSERT、LEFT左选、LEN、MID、REPLACE、RIGHT。

测试程序如下:

结果如下图所示:

如上图中所示, 字符串类型变量str1的长度为3,所占内存空间大小是81字节。

对于长字符串strLong,其实际长度为10000。使用LEN()函数获取的长度为255,而使用函数StrLenA()获取的长度为正常的10000,所占内存空间大小为10001字节。

4.关于长字符串支持的最长度

测试发现,编译器(3.5.16)支持的长字符串最大尺寸为4294967295,即2^32-1。用仿真运行测试了一下我用的这个控制器(微秒P4CM),发现最多只能支持2147483647,即2^31-1,超过该长度编译能通过,但是下载运行时会报错,要么是控制器内存不足,要么是底层数据类型的长度限制导致的。

​PROGRAM main
VAR
       i             : INT;
       str1 : STRING;
       strLong   : STRING(10000);
       t0           : INT;
       t1           : UINT;
       t2           : INT;
       t3           : DINT;
       t4 &
CODESYS开发教程7-字符串及其基本操作 这是一篇写给新手的关于CODESYS开发环境的小白教程,一看就懂...... 阅读详情

相关推荐

CODESYS字符串操作全攻略:从基础函数到实战技巧(含宽字符串处理)

本文全面解析了CODESYS中STRING与WSTRING字符串的核心操作,涵盖基础函数、宽字符串处理及实战技巧。针对工业自动化项目中的多语言支持、数据解析等场景,提供了从编码原理到超长字符串处理策略的完整指南,帮助工程师高效解决字符串处理难题。

weixin_28475533的博客 222

CODESYS与LabVIEW通过OPC UA实现工业数据互通

本文详细介绍了如何通过OPC UA实现CODESYS与LabVIEW之间的工业数据互通,包括环境搭建、变量配置、LabVIEW优化及常见问题排查。OPC UA凭借其跨平台、高安全性和丰富的数据类型支持,成为工业自动化领域数据通讯的理想选择。文章还提供了硬件组网、软件版本匹配及安全证书配置等实用技巧。

weixin_30562507的博客 405

CODESYS可视化标准计算器制作详细案例(二)

在可视化界面或触摸屏上,很少有带计算器功能的脚本程序,当我们在工控现场需要使用计算器时,往往依靠电脑或手机上的计算器,如果把计算器的功能移值到界面上,或者为PLC提供一个计算公式,那么,非常方便的即时使用,也可以将结果作为数据,再进一步处理应用。本篇在写文章的同时,也在不断研究和加入新的功能,但整体的思路是不变的,因此个别代码和界面后续会出现变更。

weixin_44166380的博客 891

codesys 简单案例_CODESYS-2.3-EXAMPLE 基于CODESYS 2.3的工程应用案例程序 - 下载 - 搜珍网...

《PLC工程应用实例解析》中的全部源程序/6.1.4 基于自由协议的和利时G3系列PLC双CPU通信实例3109Master.pro《PLC工程应用实例解析》中的全部源程序/6.1.4 基于自由协议的和利时G3系列PLC双CPU通信实例3109Slave.pro《PLC工程应用实例解析》中的全部源程序/6.1.5 基于自由协议的和利时G3系列PLC与仪表通信实例.pro《PLC工程应用实例解析》中...

weixin_39605706的博客 1329

CODESYS与威纶通触摸屏的工业自动化集成指南

本文详细介绍了CODESYS与威纶通触摸屏在工业自动化中的集成方法,包括环境搭建、工程配置、触摸屏设置及联调技巧。通过实战经验分享,帮助工程师高效实现设备联动,提升自动化产线的稳定性和效率。

weixin_30316097的博客 533

Codesys变量类型全解析:从基础到实战避坑指南

本文全面解析Codesys变量类型,从基础数据类型到高级应用技巧,涵盖整数、浮点数、字符串、时间类型等,并提供实战避坑指南。帮助PLC开发者掌握变量选择与优化策略,提升程序稳定性和执行效率,特别适合工业自动化领域的编程人员。

weixin_29016865的博客 196

Codesys入门-新建工程+任务调用+编译+调试

程序组织单元(Program Organization Unit, POU)由声明区和代码区组成,是用户程序的最小软件单元,它相当于传统编程系统中的块(Block),按功能程序组织单元(POU)可分为函数(FUN)、功能块(FB)、程序(PRG)。:Codesys采用多任务的方式来执行用户程序的“任务”,而每个“任务”分配了不同的执行周期,有些全局变量可能要在不同的POU之间被访问和修改,于是需要对全局变量进行交互同步,也是在任务的“时间对准点”进行的,实例:声明了INT类型,变量名为输入;

刺客 1万+

CODESYS集成Zigbee2MQTT的MQTT客户端实战指南

MQTT是一种轻量级发布/订阅消息传输协议,广泛应用于工业物联网设备互联;Zigbee2MQTT则作为Zigbee网关中间件,将低功耗无线传感器数据桥接到MQTT Broker。其核心原理在于通过主题(Topic)路由实现松耦合通信,但PLC侧需解决JSON结构解析、多Broker容灾、QoS可靠投递等工程难题。技术价值体现在毫秒级响应、断线自动恢复与双向无损数据映射,适用于智能产线温控、照明控制、设备状态监控等场景。本文聚焦CODESYS平台下MQTT-C库与json-codesys模块协同开发,系统性应

weixin_29185167的博客 305

S7-1200与Codesys Profinet主从对接实战:GSDML、设备名与IO映射避坑指南

Profinet IO通信基于工业以太网,通过GSDML设备描述文件实现主站与从站的互操作。其核心原理是主站依据GSDML组态从站设备,并通过设备名寻址建立周期性IO数据交换。技术价值在于实现跨厂商设备的确定性实时通信,应用场景涵盖PLC与伺服、远程IO及智能设备的集成。在S7-1200作为主站、Codesys控制器作为从站的对接中,GSDML版本兼容性、设备名一致性及IO字节长度对齐是常见工程难点。本文围绕这些关键环节,提供从组态配置到程序读写及故障排查的完整实践参考。

weixin_28285943的博客 232

【TensorRT】TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型(上篇)

开发了TensorRT C# API 2.0版本,该版本在开发时充分考虑了上一版本应用时出现的问题,并进行了改进。同时在本版本中,我们对接口进行了优化,使用起来更加简单,并同时提供了相关的应用案例,方便开发者进行使用。

grape_yan的博客 3038

yolov10+bytetrack实现多目标跟踪

在训练yolov10权重的时候一定要注意将类别信息改成自己的信息。把类比什么的改成自己的数据集,数据集的路径也要替换自己的路径。就可以训练自己的数据集了,训练完之后得到自己的权重文件。自己创建一个.yaml文件用于自己数据集的路径选择。工具标注自己的数据集,一定要分清楚自己的类别信息。使用以下代码可以按照比例划分自己的数据集。之后打开命令框输入以下命令进入标注页面。只需要输入好自己数据集的路径就可以开始。将代码里面的nc改成自己的真实类别。修改完之后,运行train.py。然后标注自己的数据集就行。

l15717690526的博客 1522

Hyper-V创建Ubuntu虚拟机设置固定IP

本文记录使用hyper-v创建ubuntu虚拟机,为虚拟设置固定IP且通过物理机可访问。

2622

Protege本体建模实战:从零构建电影知识图谱并导入Neo4j

本体建模是知识图谱构建的基石,通过类、属性、实例和约束系统描述领域知识,为数据提供可复用的语义骨架。OWL作为本体描述语言的标准,配合Protege工具可实现可视化建模,并借助推理机验证逻辑一致性,提升模型可靠性。在工程落地中,本体模型常需导入图数据库如Neo4j,以支持高效的关联查询与业务应用。本文以影视领域为背景,完整演示Protege中定义类层级、创建对象/数据属性、填充实例,以及导出OWL文件并通过Python脚本转换为Neo4j节点与关系的全过程,同时梳理命名空间、匿名节点、编码等易踩坑点,帮助读

weixin_29047545的博客 279

抖音用户评论和ID的采集方法

随着5G时代的普及,各大运营商的套餐纷纷推出,使得流量成本进一步降低。同时5G线路高宽带、低延迟的技术特性和手机普及,让视频用户访问量快速增加。 由于大量的视频工具和拍摄APP的提供,让短视频的拍摄、制作包括发行都变得更加简单便捷,越来越多的普通人可以投入视频创作,创造了更丰富的互联网内容,视频作者从视频推广中能获取粉丝和推广收益。 目前抖音就是目前最重要的短视频平台之一,要及时获取上面的用户评论和ID,需要结合爬虫代理实现采集方案,下面的代码就能快速采集相关信息: package htmlunit; i

ssbt_2020的博客 6787

PAM4信号测试实战:从眼图分析到误码率测量的技术演进

在高速数字系统设计中,信号完整性测试是确保数据传输可靠性的核心环节。其基本原理在于通过时域和频域分析,精确评估信号在传输过程中的质量衰减与失真。随着数据速率向56Gbps及以上演进,传统的NRZ编码面临带宽瓶颈,而PAM4调制技术通过在每个符号周期内承载更多比特信息,成为提升信道效率的关键路径。这项技术的工程价值在于,它允许在相同带宽下实现翻倍的数据吞吐量,这对于数据中心互联、PCIe 6.0及800G以太网等高速接口至关重要。然而,PAM4信号电平间距更小,对噪声和抖动极为敏感,导致其原始误码率显著升高,

weixin_42522817的博客 655

芯片原厂linux驱动开发的分享

大家好,我是XX,来自湖南XX学院,电子信息18级,也曾在创新基地控制组学习过两三年,毕业后就职于一家芯片原厂的解决方案部,担任驱动工程师的职位,算上实习期,我的工作时长已有两年。在此我想将这两年期间学习与积累到的一些经验输出出来,与大家一同分享。知识面有限,只能简单介绍一些驱动开发方向的一些经验,且由于经验尚浅,文中难免会有一些疏漏和错误之处,还请大家积极地批评指正。

嵌入式技术开发 845

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiR

【YOLO11[基础]】分类任务的热力图可视化实践 | 论文必备 | 分类任务 | 即插即用 | 可选GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiResCAM, LayerCAM, RandomCAM, EigenGradCAM等

静谧、淡雅 2389

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: CODESYS开发教程12-任务配置
下一篇: CODESYS开发教程14-指针使用
--莫名--
博客等级 码龄24年 653粉丝 35原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值