【WinCC“脚本”专题】不懂数据类型,又怎能用好C脚本?

2024-03-06 08:04

本文主要是介绍【WinCC“脚本”专题】不懂数据类型,又怎能用好C脚本?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WinCC的C脚本的编程语言符合ANSI-C标准,它的数据类型与ANSI-C的数据类型一致。要用好C脚本,当然要对各种数据类型了然于胸了。

一、ANSI-C数据类型

所谓"数据类型"是按照所定义的变量的性质、表示形式、所占据的存储空间等特点来划分的。在C语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型四大类,如图1所示。

1、基本数据类型

祝贺已超 1 万工控人加入 PLC 工业自动化精 英群

"基本数据类型"的值不可以再分解为其他类型,它包括:整型、实型、字符型和枚举类型。其中实型数据又分为单精度浮点数类型和双精度浮点数类型。

在基本数据类型中,其前面可以有"修饰符",使其更准确的适应各种情况的需求,修饰符如下:

  • signed:有符号

  • unsigned:无符号

  • long:长型符

  • short:短型符

其中,所有上述4中修饰符均可以修饰字符型和整型两种基本类型,而long还可以用于double型。C中根据ANSI标准而组合的数据类型的字长和取值范围,如下表所示。

若干注意事项:

(1)整型数默认是有符号的,所以int、short、long int定义的变量为有符号整型数,其前面的signed可以省略;

(2)为了使用方便,C编译程序允许使用如下的整型简写形式:

  • short int 简写为:short

  • long int 简写为:long

  • unsigned short int简写为:unsigned short

  • unsigned int简写为:unsigned

  • unsigned long int简写为:unsigned long

2、构造类型

在C语言中,构造数据类型包括数组类型、结构类型和联合类型。构造数据类型采用基本数据类型来构造一个新的数据类型。一个构造类型的数据可以分解成若干个"成员",每个"成员"都是一个基本数据类型或已定义的构造类型。

3、指针类型

指针是一种特殊的数据类型,其值用来表示某个变量在内存中的地址。指针是C语言中非常重要的一部分,是C语言的精华。

4、空类型

空类型一般以void来声明,主要用在没有返回值的函数声明中。一般来说,C语言中的函数都需要向调用者返回一个函数值,这个返回的值具有一定的数据类型。如果函数没有返回值,那么也不能不指定数据类型,而需要设置为空类型。

二、WinCC脚本中变量的声明和使用

在WinCC的C脚本中,声明和使用变量的方法和其他C语言开发环境下是类似的。

1、局部变量的声明和使用

在"函数"或"动作"的函数体内部定义的变量即为局部变量,如图2所示。它们的生命周期只局限于定义它们的函数体内。

局部变量的声明和使用规则和其他C语言开发环境一样,由"类型+变量名"构成。以图2为例,分别定义了整型数组a[5]、短整型i、字符型a1、无符号整型m等。

2、全局变量的使用

全局C变量定义在函数的"函数名"前,运行系统中的每一个函数和动作都能访问全局C变量。

全局C变量在某一个函数的"函数名"前定义,如图3所示。若要在其他"函数"或"动作"中访问该全局变量,则首先要用关键字"extern"声明它,然后就能够正常使用该变量了(编译时不会发生编译错误)。

全局变量只能在一个地方定义,且当其值发生变化时,所有访问到它的函数和动作都能识别到其变化。

三、WinCC变量和C脚本变量的关系

WinCC的变量即定义在"变量管理器"中的变量,它的变量数据类型如图4所示。除了"原始数据类型"和"文本参考"数据类型外,其他数据类型都能与C语言的基本数据类型找到对应。

C脚本中,经常要读写WinCC的变量,可调用"内部函数"的"tag"目录下的函数来实现,如图5所示。

图5中,通过调用函数"GetTagWord"将WinCC变量"X坐标"读入并赋值个C脚本的变量"i",经过运算后,在将"i"的值通过函数"SetTagWord"写入WinCC变量"X坐标"中。

在应用中,需要注意C脚本变量的数据类型要和所访问的WinCC变量的数据类型要尽量一致,且调用对应类型的set或get函数。以图5为例,WinCC变量"X坐标"的数据类型为无符号16位数,则应将C脚本中的"i"声明为"unsigned"类型,且应调用"Word"类型的set或get函数。

祝贺已超 1 万工控人加入 PLC 工业自动化精 英群

文章来自网络,已找不到原创,侵权立删

西门子TIA博途

1.S7-PLCSIM Advanced使用入门

2.使用PLCSIM Advanced仿真博途PID

3.使用PLCSIM Advanced仿真博途Modbus_TCP

4.使用PLCSIM Advanced仿真博途S7-1500 OPC UA

西门子TIA博途SCL学习

1.西门子PLC用TIA博途SCL语言写的一个产生随机实数的指令块(学习1)

2.TIA博途SCL编程学习2_sin(x)

3.TIA博途SCL编程学习3_两个数的计算器

4.TIA博途SCL编程学习4_选择法排序

5.TIA博途SCL编程学习5_一串数字的加法

6.TIA博途SCL编程学习6_数组逆序

7.西门子TIA博途S7-1200/1500学习7间接寻址指令PEEK的使用

8.TIA博途SCL编程学习8_计算N天后的日期

9.TIA博途SCL编程学习9_百鸡百钱

10.TIA博途SCL编程学习10_字符串日期转换成DATE数据类型

11.TIA博途SCL编程学习11_多条件与运算

12.TIA博途SCL编程学习12_数组求和两种算法比较

13.TIA博途SCL编程学习13_电机正反转加点动

14.TIA博途SCL编程学习14_填表格

15.TIA博途SCL编程学习15_素数判断

16.TIA博途SCL编程学习16_歌德巴赫猜想验证

17.TIA博途SCL编程学习17_选择法排序

18.TIA博途SCL编程学习19_分数段人数统计

19.TIA博途SCL编程学习19_分数段人数统计

20.TIA博途SCL编程学习20_换钱

21.TIA博途SCL编程学习21_4个数字中的3个数字的排列组合

22.TIA博途SCL编程学习22_奖金计算

23.TIA博途SCL编程学习23_求最大公约数和最小公倍数

24.TIA博途SCL编程学习24_一串数字的加法

25.TIA博途SCL编程学习25_找出1-1000之间的完数

26.TIA博途SCL编程学习26_小球反弹高度

27.TIA博途SCL编程学习27_猴子吃桃

28.TIA博途SCL编程学习28_一个分数序列加法

29.TIA博途SCL编程学习29_五位数分解

30.TIA博途SCL编程学习30_捡鸡蛋

31.TIA博途SCL编程学习31_HelloWorld

32.TIA博途SCL编程学习32_幂

33.TIA博途SCL编程学习33_水仙花数

34.TIA博途SCL编程学习34_完数

35.TIA博途SCL编程学习35_另类比大小

36.TIA博途SCL编程学习36_自然数反转

37.TIA博途SCL编程学习37_数字加密

38.TIA博途SCL编程学习38_三种方法求最大公约数

39.TIA博途SCL编程学习39_友好数

40.TIA博途SCL编程学习40_平方回文数

41.TIA博途SCL编程学习40_斐波那契数列

42.TIA博途SCL编程学习41_大数乘法

43.TIA博途SCL编程学习42_三位数的组合

44.TIA博途SCL编程学习43_新娘和新郎

45.TIA博途SCL编程学习44_韩信点兵

46.TIA博途SCL编程学习45_过桥问题

47.TIA博途SCL编程学习46_分鱼问题

48.TIA博途SCL编程学习47_跳跃游戏

49.TIA博途SCL编程学习47_狼追兔子

50.TIA博途SCL编程学习50_扑克牌顺子判断

51.TIA博途SCL编程学习51_邮票组合

52.博途SCL编程实例泵顺启逆停的状态机

53.TIA博途SCL编程学习52_邮票组合抓捕交通肇事犯

54.TIA博途SCL编程学习53_求车速

55.TIA博途SCL编程学习54_公式法计算圆周率(Π的近似值)

WinCC中的画面模板应用实例及其组态实现方法

罗克韦尔AB软件学习视频下载

WinCC 输入/输出域没有所需要的预定义输出格式该怎么办?

在WinCC中如何使用VBS读取变量归档数据到EXCEL

西门子S7-1500作为智能设备共享功能

WinCC冗余项目使用

S7-1500 和S7-400 S7双边通信(TIA博途和STEP7)

这篇关于【WinCC“脚本”专题】不懂数据类型,又怎能用好C脚本?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779362

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

centos6一键安装vsftpd脚本

centos6一键安装vsftpd脚本 手动安装vsftpd参考教程:Centos下安装Vsftpd的图文教程 vsftpd脚本功能: 1.安装 (命令执行:sh xxx.sh)2.添加ftp用户 (命令执行:sh xxx.sh add)3.卸载vsftpd (命令执行:sh xxx.sh uninstall) 测试环境:centos6 x64 centos6 x86(测试centos7以

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

Lua 脚本在 Redis 中执行时的原子性以及与redis的事务的区别

在 Redis 中,Lua 脚本具有原子性是因为 Redis 保证在执行脚本时,脚本中的所有操作都会被当作一个不可分割的整体。具体来说,Redis 使用单线程的执行模型来处理命令,因此当 Lua 脚本在 Redis 中执行时,不会有其他命令打断脚本的执行过程。脚本中的所有操作都将连续执行,直到脚本执行完成后,Redis 才会继续处理其他客户端的请求。 Lua 脚本在 Redis 中原子性的原因

CentOs7上Mysql快速迁移脚本

因公司业务需要,对原来在/usr/local/mysql/data目录下的数据迁移到/data/local/mysql/mysqlData。 原因是系统盘太小,只有20G,几下就快满了。 参考过几篇文章,基于大神们的思路,我封装成了.sh脚本。 步骤如下: 1) 先修改好/etc/my.cnf,        ##[mysqld]       ##datadir=/data/loc

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

PHP抓取网站图片脚本

方法一: <?phpheader("Content-type:image/jpeg"); class download_image{function read_url($str) { $file=fopen($str,"r");$result = ''; while(!feof($file)) { $result.=fgets($file,9999); } fclose($file); re