IEC 61131-3标准编程入门

简介: IEC 61131-3标准编程入门

IEC 61131-3标准分为两个部分:公共元素和编程语言,如图

a5d6c19ae0c844cea56489b77df934c8.png

公共元素部分规范了数据类型定义与变量,给出了软件模型及其元素,并引入配置(Configuration)、资源(Resources)、任务(Tasks)和程序(Program)的概念,还规范了程序组织单元(程序、功能、功能块)和顺序功能图。


语言元素

每个PLC程序可以看做是各种语言元素的集合。IEC 61131-3标准为编程语言提供语言元素,例如,分界符、关键字、直接量和标识符。语言元素示例如

0b94bbc322a64488a6b86e2c4c2a52ce.png

分界符

分界符(Delimiter)用于分隔程序语言元素的字符或字符组合。它是专用字符,不同分界符具有不同的含义。表

e55ed6a998954d8bb29faedd3d8bccee.png

关键字

关键字(keyword)是语言元素特征化的词法单元。关键字是标准标志符。在IEC 61131-3标准中,关键字是结构声明和语句的固定符号表示法,其拼写和含义均由IEC 61131-3标准明确规定。因此,关键字不能用于用户定义的变量或其他名称,这一点与高级编程语言是一致的。

关键字不区分字母的大、小写。例如,关键字“FOR”和“for”是等价的。为了更好地进行区别,关键字通常以大写字母表示。

1bd551c4c7d34efea44b47556deb3afc.png


关键字主要包括基本数据类型的名称、标准功能名、标准功能块名、标准功能的输入参数名、标准功能块的输入和输出参数名、图形编程语言中的EN和ENO变量、指令表语言中的运算符、结构化文本语言中的语言元素、顺序功能图语言中的语言元素。


直接量

直接量用来表示常数变量的数值,其格式取决于变量的数据类型。直接量有3种基本类型。


1)数字直接量

数字直接量可以用于定义一个数值,它可以是十进制或其他进制的数。数值文字分为整数和实数。用十进制符号表示的数中,用小数点是否存在表示它是实数还是整数。通常有二进制数、八进制数、十进制数、十六进制数。为了说明数值的基,可用元素数据类型名称和“#”符号表示,但十进制的基数10#可以省略。

对十进制数值,为了表示数值的正、负,可在数值文字前添加前缀分界符。如-15、-126.83。但对数制的基(即2、8、10和16)不能添加类型前缀的分界符。因此,-8#456是错误的数据外部表示,应表示为8#-456。

布尔数据用整数0和1表示,也可用FALSE和TRUE的关键字表示。


2)字符串直接量

字符串是直接量在单引号之间的表示形式,由单字节字符串或双字节字符串组成。

单字节字符串文字由一系列通用的字节表示或′ 、英文双引号 " 、 '、英文双引号"、

、英文双引号"、与十六进制数组成。例如,‘ABC’,‘“’,‘D 7 ’等。当美元符号 D7’等。当美元符号D7’等。当美元符号用做前缀,使特殊字符能包含在一个字符串内。非印刷体的特殊字符用于显示或打印输出的格式化文本。因此,美元符号和引号本身必须用附加的前缀“”标识。双字节字符串文字由一系列通用的字节表示或由 ”标识。 双字节字符串文字由一系列通用的字节表示或由”标识。双字节字符串文字由一系列通用的字节表示或由”、英文单引号’、与十六进制数组成。它们用双引号在其前后标识。例如,“ A ”, “ ′ ”,“ 与十六进制数组成。它们用双引号在其前后标识。例如,“A”,“'”,“与十六进制数组成。它们用双引号在其前后标识。例如,“A”,“

”,“"”,“$UI8T”等。

需要注意的是单字节字符串不能用单引号开始,双字节字符串不能用双引号开始。字符串可以是空串,如“”和‘’。


9ca4667f0eb94642864517ac4d031f79.png

3)时间直接量

时间直接量用于时间、持续时间和日期的数值。

时间直接量分为两种类型:持续时间直接量和日期直接量。持续时间直接量由关键字T#或TIME#在左边界定,支持按天、小时、秒和毫秒或其他任意组合表示的持续时间数据。持续时间直接量的单位位由下画线字符分隔。允许持续时间直接量最高有效位“溢出”(overflow)。例如,持续时间值t#135m_12s是有效的,编程系统会将该时间转换成“正确”的表达,即t#2h_15m_12s。时间单位可用大写或小写字母表示。持续时间的正值和负值是允许的。时间和日期的前缀关键字如表所示,它分为长前缀和短前缀格式。不论采用长前缀格式还是短前缀格式,表示的时间和日期都是有效的。

相关文章
|
并行计算 Ubuntu Docker
apollo快速入门之安装指南
apollo快速入门之安装指南
327 3
|
机器学习/深度学习 数据采集 人工智能
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(上)
大模型升级与设计之道:ChatGLM、LLAMA、Baichuan及LLM结构解析(上)
1265 0
|
3月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
301 27
|
传感器 自动驾驶 机器人
大疆Livox Mid360 使用指南
本文是大疆Livox Mid-360激光雷达的使用指南,包括Livox Viewer 2的安装与使用、Livox SDK2的安装与演示、Livox ROS的配置与启动,以及一些使用时的注意事项。文章还提供了关于Livox Mid-360的详细特点、接线信息、尺寸信息、主控端IP设置、修改Livox Mid 360的IP方法、坐标系定义和IMU内参的介绍。此外,还提供了官方资料和软件下载的链接。
5450 2
|
7月前
|
JSON JavaScript 前端开发
怎么安装JSON服务器?JSON服务器最新安装教程
JSON Server是一款轻量级工具,基于Node.js运行,可通过单个JSON文件快速模拟RESTful API,适用于开发与测试场景。其支持CRUD操作、自定义路由及高级功能如排序、搜索、分页等,同时允许通过中间件扩展功能。为确保安全性,建议在受控环境中使用,并避免处理敏感数据。此外,还有Mirage JS、Mockoon、WireMock和Postman等替代方案,可根据项目需求选择合适的工具。
253 0
SpringBoot实用开发篇第七章(监控技术)
SpringBoot实用开发篇第七章(监控技术)
Nest.js 实战 (一):使用过滤器优雅地统一处理响应体
这篇文章介绍了在Nest.js中如何处理接口统一返回格式的方法。首先定义了响应状态码枚举和类型,然后创建了HttpException异常过滤器来捕获HttpException类的异常并设置自定义响应逻辑。最后通过全局配置和效果预览展示了如何应用这些设置。
445 0
Nest.js 实战 (一):使用过滤器优雅地统一处理响应体
|
SQL API 数据库
揭开高效数据层构建的秘密武器:Entity Framework Core 分页查询的最佳实践与性能优化技巧全解析
【8月更文挑战第31天】本文以随笔形式详细探讨了如何在Entity Framework Core中实现分页查询的最佳实践。通过创建基于EF Core的项目,配置数据库上下文,并定义领域模型,文章展示了如何使用`Skip()`和`Take()`方法进行分页查询。此外,还介绍了如何使用惰性加载、显式加载和预加载来优化性能,并通过投影技术减少不必要的数据加载。最后,文章强调了分页查询对于提升应用性能和用户体验的重要性。
351 0
|
监控 Ubuntu 安全
百度搜索:蓝易云【Ubuntu安装Net-tools和SSH】
请注意,这些命令假设您已经具有适当的网络连接,并具有sudo或root权限。根据您的具体环境和要求,可能需要进行其他配置和调整。确保在进行任何与网络和安全相关的操作之前,详细了解您的需求和网络环境,并采取适当的安全措施。
253 1