摘要:这是一篇写给新手的关于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 &

最低0.47元/天 解锁文章
8353





