自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 2.4.2 常量的定义与使用

增强代码的稳定性:常量的值是固定的,一旦定义,不能再修改。内存分配:常量在编译时就已经确定了值,而变量的内存是在程序运行时动态分配的。与变量不同,常量的值在程序开始运行时就已经确定,并且在后续的执行过程中不能被修改。使用常量替代硬编码的值:尤其在PLC控制程序中,避免直接硬编码某些值,改用常量可以让后期维护时修改更为方便。字符串常量(STRING):虽然ST语言并不常用字符串常量,但可以使用字符串常量来表示固定的文本数据。常量不可修改:常量在程序执行期间的值是固定的,不能被修改。// 错误:类型不匹配。

2025-02-16 18:23:48 1008

原创 2.4.1 变量的声明与作用域

/ 声明一个REAL类型的变量,初始值为25.0。// 声明一个BOOL类型的变量,未赋初始值。(8)配置变量(Configuration Variables)(5)输入输出变量(In-Out Variables)(2)全局变量(Global Variables)(4)输出变量(Output Variables)(7)静态变量(Static Variables)(1)局部变量(Local Variables)(3)输入变量(Input Variables)

2025-02-12 21:39:26 710

原创 2.3.3 数据类型的转换与强制类型转换

在ST(Structured Text)语言中,数据类型的转换是将一种数据类型转换为另一种数据类型的过程。例如,将DINT类型的4000000000转换为INT类型时,会超出INT的取值范围(-32768到32767)。将16位无符号整数转换为32位无符号整数(例如,65535 → 65535)。将8位无符号整数转换为16位无符号整数(例如,255 → 255)。将整数转换为浮点数,保留小数部分(例如,100 → 100.0)。将浮点数转换为整数,丢弃小数部分(例如,100.5 → 100)。

2025-02-06 22:20:40 540

原创 2.3.2 复合数据类型

ST(Structured Text)语言支持多种复合数据类型,包括数组(ARRAY)、结构体(STRUCT)、枚举(ENUM)和联合体(UNION)等。ST语言的复合数据类型(如数组、结构体、枚举、联合体、指针和引用)为复杂数据结构的组织和管理提供了强大的支持。联合体大小:由于realValue和dintValue都是4字节,因此联合体DataUnion的内存空间大小为4字节。// 定义一个DataUnion类型的变量。// 通过指针修改value的值。// 设置状态为运行。// 修改value的值。

2025-02-05 23:42:05 917

原创 2.3.1 基本数据类型

ST(Structured Text)语言支持多种基本数据类型,用于定义变量、常量以及函数参数等。这些数据类型涵盖了布尔值、整数、浮点数、字符和字符串等常见类型。ST语言的基本数据类型涵盖了布尔值、整数、浮点数、字符、字符串、时间等多种类型,能够满足工业自动化编程中的各种需求。通过合理选择数据类型,可以提高程序的效率和可读性。注意:CHAR类型并非所有的编程软件都支持,例如在Codesys中是没有Char类型的。

2025-01-29 10:26:02 492

原创 附录A:驼峰命名法变量前缀表

如所定义变量为常量,则在其最前端加上前缀小写字母“c”。常量(Constant)UNICODE字符串。

2025-01-25 13:27:58 189

原创 2.2.3 代码格式与风格指南

编写清晰、规范的代码是提高代码可读性、可维护性和团队协作效率的关键。虽然好多人说工控行业都是一帮电工,没有什么素质,这完全是误解,任何程序所在的行业,都需要个人保证其代码风格能够很好与团队进行协作,在过去一台设备一个人写的多,往往不注意这些,这也导致了设备交接困难,成了后来接手工程师永远的痛,但是时代在发展,如今多人协作使得代码的规范性越来越成为如今的工控开发行业的共识。通过统一的命名规范、清晰的缩进与对齐、合理的注释和模块化设计,再加上对工艺的了解,就能够编写出高质量的ST代码。

2025-01-25 13:26:24 692

原创 2.2.2 大小写敏感性

在ST(Structured Text)语言中,大小写敏感性是一个重要的语法规则,直接影响变量、函数、关键字等的命名和使用。的,即不区分字母的大小写,这一点好多初学者不知道,尤其很多人有一些高级语言基础以后,总是误以为ST也是大小写敏感的,这是一个误区的重灾区,大家要格外注意!尽管语言本身不区分大小写,但为了代码的可读性和一致性,建议遵循统一的命名风格和关键字使用规范,关于这一点阿凡会在下一小节中展开讲解。ST语言不区分字母的大小写,即。如果语言是大小写不敏感的,则。被视为相同的关键字。

2025-01-23 21:33:38 348

原创 2.2.1 语句结构

ST(Structured Text)语言是一种基于IEC 61131-3标准的高级文本编程语言,其语法规则严格且清晰。这里的IF语句的结尾,END_IF后的分号并不是强制的,也可不加,不同的软件编程中对此要求不一致,例如西门子博图中则必须要加此分号,否则编译会报错。在咱们的InoProShop中还有进行注释的快捷方式,例如通过菜单栏的图示符号就可以快速对代码进行注释和去除注释了。这些语法规则是ST语言的基础,掌握它们对于编写清晰、规范的ST代码至关重要。同时也可以采用快捷键:Ctrl+M,来注释代码。

2025-01-22 22:50:14 96

原创 2.1.3 第一个工程,点灯!

双击打开“PLC_PRG”程序组织单元变量声明,声明一个开关和灯编写开关逻辑。

2025-01-21 21:28:09 543

原创 2.1.2 本书开发环境的安装与配置

在2.1.1小节阿凡有提到Codesys,Codesys适用于多种PLC品牌和硬件平台,本书演示及使用的是汇川技术公司的InoProShop。

2025-01-20 21:21:47 370

原创 2.1.1 常用ST编程工具介绍

在工业自动化领域,ST语言(StructuredText)是IEC61131-3标准中的一种重要编程语言。集成ST语言编程环境,支持SCL(StructuredControlLanguage,西门子对ST语言的实现)。支持IEC61131-3标准的所有编程语言(ST、LD、FBD、SFC、IL)。专为西门子PLC(如S7-1200、S7-1500)设计。支持面向对象编程(OOP)和高级功能(如动态内存管理)。支持与其他西门子自动化产品(如HMI、驱动)的无缝集成。

2025-01-18 13:04:50 241

原创 1.3 本书的目标与结构

本书的学习路径从基础到高级,结合实际案例和最佳实践,帮助读者逐步掌握ST语言的核心知识和应用技能。无论是初学者还是有经验的工程师,都能通过本书的学习路径快速提升ST编程能力,并将其应用于工业自动化领域的实际项目中。本书的学习路径从基础到高级,循序渐进,结合实际案例和最佳实践,帮助读者逐步掌握ST语言的核心知识和应用技能。:介绍ST语言的定义、背景、应用领域以及本书的目标读者和学习路径。:掌握ST语言中的高级特性,如数组、结构体、指针、面向对象编程等。需要掌握ST语言的高级特性,如函数块、数组、结构体等。

2025-01-18 13:04:10 64

原创 1.2 ST语言的应用领域

ST语言支持丰富的数学运算符和函数,能够高效实现复杂的数学运算,如PID控制、滤波算法、运动轨迹计算等。在需要对大量数据进行处理和分析的场景中,ST语言能够高效地完成数据采集、转换、存储和分析任务。ST语言适合实现复杂的条件判断和状态机逻辑,例如生产线上的多步骤控制、设备运行模式切换等。ST语言具有高度的标准化和通用性,能够在不同厂商的PLC平台上运行,支持跨平台开发。对于需要多层嵌套的逻辑控制,ST语言的结构化编程风格能够清晰地表达复杂的控制流程。通过ST语言,可以开发通用的功能库,供多个项目共享使用。

2025-01-18 13:03:26 186

原创 1.1.3 ST语言与SCL以及STL的关系

SCL是西门子(Siemens)为其PLC(可编程逻辑控制器)开发的一种高级文本编程语言,基于IEC 61131-3标准中的ST语言。

2025-01-18 12:01:57 1167

原创 1.1.2 ST语言与其他PLC编程语言的对比

更适合实现复杂的逻辑控制、数学运算和数据处理任务,适合需要高可读性和可维护性的项目。

2025-01-18 11:59:55 689

原创 1.1.1 ST(Structured Text)的定义与背景

在工业自动化发展的早期,不同厂商的PLC使用各自专有的编程语言,导致代码的可移植性和通用性较差。为了解决这一问题,国际电工委员会(IEC)于1993年发布了IEC 61131-3标准,定义了五种通用的PLC编程语言,其中包括ST语言。IEC 61131-3是国际电工委员会(IEC)制定的工业自动化编程语言标准,旨在规范可编程逻辑控制器(PLC)的编程语言和方法。ST语言的设计初衷与梯形图(Ladder Diagram, LD)有一定的关联,它们的定位和目标也有所不同。代码的可读性与维护性的局限性。

2025-01-18 11:42:51 438

原创 1.指南引言

而ST(Structured Text,结构化文本)语言,作为IEC 61131-3标准中定义的高级编程语言之一,因其强大的表达能力和灵活性,逐渐成为复杂控制逻辑和算法实现的首选工具。阿凡旨在为读者提供一份全面、系统的ST编程指南,从基础语法到高级技巧,从理论到实践,逐步引导读者掌握ST语言的核心知识,并将其应用于实际工业自动化项目中。阿凡相信,通过系统化的学习和实践,您将能够熟练运用ST语言,解决复杂的工业控制问题,并为智能制造和自动化技术的发展贡献自己的力量。让我们一起开启这段ST编程的学习之旅吧!

2025-01-18 11:39:59 269

原创 ST编程指南详细写作大纲

以下是我打算的一个大纲。

2025-01-18 11:35:31 587

原创 汇川CodeSysPLC教程04-1 基础变量定义

变量,就是你程序里用来存储数据的容器。你可以把它看作是一个装得下不同数据的小盒子,而且这个盒子会有一个名字。你可以随时往里装数据,或者从里取出数据。(* 变量 Temperature 存了一个温度值 25 *)在这个例子中,就是变量,25是它存储的数据。(* 温度变成了 30 *)

2024-11-28 20:08:34 1218

原创 【汇川CodeSysPLC教程 03-4资源使用表】

资源使用表,它用来显示该工程对这一个PLC内存的分配和使用情况。

2024-11-19 22:31:54 861

原创 【汇川CodeSysPLC教程 03-3-13全局变量列表】

特性保持(Retain)持久化(Persistent)掉电后保持是是重启后保持是是程序更新后保持否(会丢失)是(不会丢失)典型场景计数器、状态数据,在短期保留重要数据用户设置、系统配置,长期保存重要数据。

2024-11-17 15:59:59 1895

原创 汇川CodeSysPLC教程 03-3-6程序组织单元

大家好,我是阿凡工控分享,在了解完基本的组态配置后,我们需要了解一些基本的应用设置,这些是我们实际工程中不可缺少的部分,本期我将以作为工程设置的第三章的开篇。

2024-09-01 10:27:51 1460

原创 低成本学习CodeSys的几种方法

有粉丝朋友问我,如何低成本学习CodeSys的相关内容。本期就介绍下集中低成本学习的方法。

2024-08-04 15:30:14 828

原创 汇川CodeSysPLC教程03-2-6 ModBus TCP

ModBus TCP是一种基于TCP/IP协议的工业网络通信协议,常用于工业自动化和控制系统。它是ModBus协议的一个变种,ModBus协议最初由Modicon(现在是施耐德电气的一部分)在1979年开发。基于TCP/IP:ModBus TCP使用以太网和TCP/IP协议进行通信,这使得它能够在现有的以太网络基础设施上运行,具有高传输速度和广泛的兼容性。客户端-服务器模型:ModBus TCP采用客户端-服务器模型。客户端发送请求,服务器处理请求并返回响应。

2024-07-27 14:46:22 2656

原创 汇川CodeSysPLC教程03-2-14 与HMI通信

PLC与HMI连接采用何种连接方式,通常是参考双方支持哪些接口。PLC(可编程逻辑控制器)与HMI(人机界面)之间的通讯方式主要有以下几种:串行通讯(Serial Communication):以太网通讯(Ethernet Communication):现场总线通讯(Fieldbus Communication):无线通讯(Wireless Communication):光纤通讯(Fiber Optic Communication):这些通讯方式各有优缺点,具体选择取决于应用场景、通讯距离、数据传输速率以及

2024-07-09 21:59:18 3143

原创 汇川CodeSysPLC教程 Modbus变量编址

汇川HMI的专用协议使用不同功能码:在访问SM时,使用0x31 ,0x35,0x3f (在访问位变量的命令的基础上加了0x30);在访问SD时,使用0x33,0x36,0x40 (在访问寄存器变量的命令的基础上加了0x30)。汇川PLC的Word型寄存器的起始地址为偶数Byte地址;DWord型寄存器的起始地址为偶数Word地址对齐,其索引号呈2倍关系,这样方便地址的计算。线圈:位变量,只有两种状态0和1。汇川PLC中包含Q区及SM区等变量。寄存器:16位(字)变量,本PLC中包含M区及SD区等变量。

2024-07-08 22:54:42 3931

原创 汇川CodeSysPLC教程03-2-10 如何组态

大家好,我是阿凡工控分享,本期我们将调整教程的顺序,和粉丝朋友们讨论后,后续我将优先出绿旗标注的部分,便于小白水平的你循序渐进,其他水平的朋友有些需求可能要稍后了,如果有问题请见谅,另外关于粉丝朋友的催更,本人真是心有余而力不足,最近项目紧张,连着几天干了个通宵,所以更新这部分可能做不到那么快,请见谅。

2024-06-30 15:19:14 3298

原创 汇川CodeSys PLC教程 03-2-5EtherNet

以太网的本质是提供一种标准化的、可靠的、可扩展的网络通信方法,使得各种设备能够互联互通,进行数据交换。它通过定义物理层和数据链路层的规范,实现了广泛的兼容性和互操作性,是现代局域网的基础技术。

2024-06-17 23:51:56 3416

原创 IPV4和IPV6的区别在哪里

IPv4和IPv6是两种不同版本的互联网协议,它们在多个方面存在显著的区别,包括地址格式、地址空间、配置方式和功能特性等。

2024-06-16 22:10:32 653

原创 星型、环型、总线型和网状型拓扑结构是什么意思?

拓扑结构(Topology)是指对象在保持某些基本性质不变的情况下,不考虑距离和角度等几何细节的形状和空间关系。换句话说,拓扑结构研究的是物体在连续变形(如拉伸、压缩、扭曲等)下保持不变的性质。这一点不太好理解,我们需要通过一些举例来理解。想象你有一块橡皮泥,不管你怎么拉伸、压缩、扭曲,只要你不撕裂或粘合新的部分,它的基本性质就没有改变。拓扑学关注的是这种“橡皮泥”在变形过程中保持不变的性质。

2024-06-16 14:56:19 1464

原创 什么是局域网?

局域网(Local Area Network,简称LAN)是一种计算机网络,覆盖较小的地理范围,如一个办公室、一幢建筑或一个校园。局域网通常用于连接同一地点内的计算机和设备,以便它们可以共享资源(如文件、打印机、互联网连接)和进行通信。在家庭中,局域网常用于连接电脑、手机、平板、智能电视和其他智能设备,以共享互联网连接和本地资源。在企业中,局域网则用于连接员工的电脑、服务器、打印机和其他网络设备,以支持内部通信和业务运营。

2024-06-16 14:43:25 524

原创 怎么学习汇川Codesys PLC教程?

各位好,我在B站和抖音上都有发布视频的,搜索我的名称“阿凡工控分享”即可。在优快云上发表文章也是想把我的一点见解和经验分享出来,进一步的方便大家进行学习。

2024-06-12 22:10:24 924

原创 汇川CodeSysPLC教程03-2-4 RS485

RS485是一种用于串行通信的标准,通常用于工业自动化和远距离数据传输。它在电气工程和计算机科学领域中广泛应用。双向通信:RS485支持双向通信,即可以在一条线路上同时发送和接收数据,这使其在多点通信系统中非常有效。多点连接:RS485允许多达32个设备连接在同一条总线上,这对于需要多个设备互相通信的系统非常有用。长距离传输:RS485的通信距离可以达到1200米(4000英尺),这使其在需要远距离数据传输的场景中非常有用。差分信号传输:RS485使用差分信号传输,即通过两根线(A和B)传输信号。

2024-06-09 21:28:01 3015

原创 汇川CodeSysPLC教程03-2-3 Modbus ASCII

前面我们提到,在Modbus出现的早期变体当中,其中有一个就是ModBus ASCII,相比较于RTU的2进制传输,ASCII使用的是文本传输,整个数据包都是可打印字符。如何理解所谓的文本传输呢?首先我们需要理解什么是ASCII?LRC 校验是一种简单但有效的错误检测方法,通过累加消息中的每个字节并计算其补码,可以检测出在传输过程中发生的错误。Modbus ASCII 协议使用 LRC 校验来确保数据的完整性和可靠性。

2024-06-09 12:07:51 2111

原创 DataGridView取消默认选中行

DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行。在DataGridView绑定数据之后加上了ClearSelection()。这样一来,不论是启动窗体之后还是重新更新数据,都不会有默认选中行了。//加载表格生成后,放在最后面。代码就是这几个,只要放对地方,其中任意一个都能实现取消选中的效果。

2023-02-11 13:30:25 3109

原创 winform程序窗体设计器隐藏问题

在删除项目工程无用的nuget组件时,系统提示丢失掉了某程序集的引用,删除时没有在意,一般删库的过程中,系统会自动编译把问题消除掉,但是发现窗体设计器没有了,C#窗体只显示类的标记。

2023-01-13 17:18:40 583

原创 西门子分布式IO的通道映射是怎么建立的

PLC变量是如何与地址映射起来的?我们在地址总览中可以看到系统默认分配的地址现在我们需要查看其中某一个分布IO模块的地址选择GoTo跳转到模块的组态画面图示可以看到输入输出地址,在这里可以自由编辑地址,输入输出不必相同,同时如果出现地址冲突的问题,系统会自动提示。模块的地址更改的时候,这里会产生一个问题,那就是已经和模块建立映射关系的变量是不是需要进行重新绑定呢?难道需要一个个绑定映射么?实际上,当进行更改的时候,系统会自动弹出提示! 选项1 如..

2022-05-25 15:19:53 6315

原创 Modbus字节序说明

最近做ModBus TCP方面的测试有点多,尽管对于ModBus协议算是比较了解了,也经常知道字节传输序列的不同对工程师带来了很多不必要的麻烦,这不是一个技术难题,仅仅只是过去各家各户开发遗留下来的标准统一问题,所以这里写下这篇文章作为备忘。在Modbus通信中,目前我们主要有16bit(AB)、32bit(AB CD)和最新的64bit(AB CD EF GH)三种数据长度。每个字母代表一个字节。针对16bit传输,只存在正序(AB)或反序(BA)两种方式,也就所谓的正序先传高位,以及反序先传低位,为

2021-09-16 22:04:42 9527

原创 Python: 如何判断Excel文件是否被人打开

Python: 如何判断远程服务器上Excel文件是否被人打开.这篇博文,提供了一个非常好的思路来判定一个Excel文件是否被打开,判断是否有“~$”开头的同名文件在同级目录下存在:比如test.xlsx被打开后会存在~$test.xlsx文件,如果没被打开则没有该文件。接下里我们只需要使用os.path.exists('xxx.xls‘)方法来判定其返回值即可。以下是代码实现:#判定文件是否打开 def fileIsOpen(self,filename): filepath

2021-09-16 10:32:30 2292 1

Codesys RTE安装说明

Codesys RTE安装说明

2024-08-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除