- 博客(25)
- 收藏
- 关注
原创 SoftMotion Code:DriveInterface.Analog—AnalogPositionController
该功能块实现带速度前馈的位置环P控制器,属于AnalogDrive.lib库。主要功能包括:1)通过位置误差计算和速度前馈生成控制输出;2)支持死区时间补偿,处理系统延迟;3)提供位置跟随误差监控。参数包括位置/速度增益、死区时间、速度范围等。核心算法融合速度前馈、位置变化率和滞后补偿,经限幅处理后输出。采用环形缓冲区存储历史速度数据,用于死区补偿计算。适用于存在机械间隙、通信延迟等场景的运动控制系统,可有效改善响应滞后问题。
2025-10-14 23:26:33
460
原创 SoftMotion: DriveInterface: Analog
本文档详细说明了PLC_Config运动控制系统的参数配置要求。主要内容包括:1)总线接口和轴组参数说明(多数参数未使用);2)支持V/V、V/P等5种控制类型,并规定了循环通信必须包含的位置/速度数据;3)关键结构体Analog_AXIS_REF的定义,包含编码器分辨率、限位开关等核心参数;4)首次IEC周期必须完成的10项基本参数配置;5)循环输入/输出的5项必要数据;6)系统功能特性(电子齿轮比、多控制模式等)及AnalogAutoAdjust自动调参功能的使用条件和流程(需先禁用位置环)。特别强调自
2025-10-12 21:19:46
970
1
原创 Softmotion in CoDeSys2.3 User Manual-9
摘要 SM_Error.lib库是SoftMotion系统中必备的错误处理模块,提供两类错误管理功能:驱动器错误(需通过特定指令读取清除)和模块错误(可通过该库转换为字符串)。关键功能包括:错误状态查询(SMC_ReadFBError)、错误清除(SMC_ClearFBError)和错误信息转换(SMC_ErrorString)。该库预定义了标准化的模块错误代码(如限位超程SMC_DI_SWLIMITS_EXCEEDED、控制模式错误SMC_SCM_NOT_SUPPORTED等),并通过AXIS_REF数据
2025-10-08 14:59:42
970
原创 Softmotion in CoDeSys2.3 User Manual-5
摘要:SM_PLCopen.lib是基于PLCopen运动控制规范1.0版的IEC61131-3标准库,包含单轴控制(如MC_MoveAbsolute、MC_Stop等)、同步运动(电子凸轮/齿轮/相位同步)和附加功能三大模块。它支持可视化模板实时监控,需配合Drive_Basic.lib使用,提供两种激活模式(使能/执行输入)和完备的状态反馈(Done/Error等输出)。特色功能包括凸轮曲线编辑、挺杆控制、叠加运动及多种运动轮廓(位置/速度/加速度)控制,严格遵循轴状态机管理,适用于工业运动控制系统的开
2025-10-07 18:39:55
1328
原创 Softmotion in CoDeSys2.3 User Manual-4
摘要 CoDeSys集成CAM编辑器提供了电子凸轮曲线的图形化设计工具,支持线性映射和五次多项式映射两种函数关系。用户可通过"Resources"选项卡创建新凸轮,定义主轴/从轴缩放比例及周期性属性,并通过点、线段和挺杆(凸轮开关)构建凸轮曲线。编辑器支持三种显示模式(导数曲线、凸轮元素表格和挺杆表格),并提供对象拖拽和参数对话框两种编辑方式。凸轮数据在编译时自动生成全局结构体,可通过IEC程序调用PLCopen标准函数访问。该工具实现了从机械凸轮到电子凸轮的无缝转换,满足运动控制系统的
2025-10-06 12:02:48
1202
原创 SoftMotion Code - 02: MC_MoveVelocity
MC_MoveVelocity功能块摘要:该功能块用于控制轴以预设速度进行连续运动,通过AXIS_REF结构体定义轴参数。功能块通过Execute上升沿触发,使用Velocity、Acceleration、Deceleration参数控制运动特性,Direction定义方向(仅旋转轴有效)。运动过程中会检测轴状态、驱动器状态和所有权,支持正弦/梯形两种加速曲线。输出参数包括速度到达指示、命令中断和错误状态。代码实现了完整的运动控制逻辑,包括参数校验、相位计算、实时状态更新等功能,支持异常处理和周期位置检测。
2025-10-05 20:27:48
1035
原创 SoftMotion Code - 01: MC_Power
摘要:MC_Power功能块用于控制驱动器电源启停及制动器状态,是运动控制的前提条件。输入参数包括使能位、调节器控制位和制动控制位,输出参数包含状态标志和错误信息。代码逻辑包含轴数据有效性检查、安全停机保护机制,并区分物理轴和虚拟轴处理。物理轴处理需满足通信正常和使能条件,确保任务周期有效,同时处理驱动器禁用时的异常状态;虚拟轴则直接同步状态参数。该功能块通过严谨的状态检查和错误处理机制确保驱动器安全运行。
2025-10-05 11:03:27
457
原创 Softmotion in CoDeSys2.3 User Manual-2
SoftMotion驱动接口是一个标准化接口,用于IEC程序与驱动硬件的抽象连接。该接口包含PLC配置、内部库和驱动程序三部分,支持通过对话框或参数表进行配置。接口支持多种总线类型(如Sercos、CAN),提供运动控制参数设置、单位转换、限位保护等功能,并允许选择不同的速度曲线模式(梯形、S形、抛物线形)。针对不同总线类型提供专用配置选项,如Sercos的PackProfile校验和CAN的同步设置。该接口设计实现了驱动硬件与程序的解耦,便于系统维护和扩展。
2025-10-04 18:06:14
1153
原创 Softmotion in CoDeSys2.3 User Manual -1
摘要: CoDeSys 2.3中的SoftMotion工具包提供了一套完整的运动控制解决方案,涵盖单轴运动、电子凸轮到复杂多轴协同控制。其核心组件包括驱动接口(Drive Interface)、配置/CNC/CAM编辑器,以及CNC、PLCopen等标准库,支持动态配置和IEC61131-3编程,确保平台兼容性。通过循环目标值设定和图形化编程界面,开发者无需深度硬件知识即可实现多维轨迹规划(如直线、样条曲线)和同步控制(如电子齿轮、凸轮曲线)。适用于需要集成运动控制与逻辑/过程控制的场景,示例程序可加速学习
2025-10-03 15:55:06
713
原创 面向对象程序设计-使用指南V1.0
第3版的IEC61131-3标准使面向对象编程(OOP)成为可能。与此同时,PLCopen也定义了相应的功能块库的概念,包括OOP和PLCopen通用行为模型(请参阅PLCopen网站2017年5月4日发布的“创建PLCopen兼容库V1_0”),以及运动控制、安全和通信功能块集。从一开始OOP就需要做出几个选择:是否所有功能块都在一个类中?以PLCopen运动控制功能块为例,我们是否需要AxisRef作为轴的引用,甚至MC_作为FB名称的一部分?它们如何包含方法?我们是只使用方法,还是也直接访问变量?
2024-09-11 13:09:06
2663
2
原创 将“运动控制功能块”移植到OOP中示例
今天继续推进《将“运动控制功能块”移植到OOP中》的学习,反复学习了6,7,8三个示例。三个示例本身很简单,通过状态机实现轴多轴的时序配合,通过itfAxis和itfCommand接口实现功能调用。但是在状态机中,对于运动控制相关的Method并没有循环调用,只在状态转移时调用一次,这是如何实现真正的运动控制过程控制的还很迷糊。为了一探究竟,我突然萌生了一共奇特的想法:我计划在接下来的几天把经典的Codesys的PLCopen库重新在西门子的1500上实现,且采用AX的面向对象的设计思想。
2024-09-09 17:45:20
1272
原创 将“运动控制功能块”移植到OOP中
随着 “运动控制功能块(原第1部分和第2部分)”规范的发布,PLCopen运动控制工作组提供了一套标准化功能块,以简化运动控制软件的模块化和重复使用。本文件介绍了运动控制规范的面向对象实现,可与程序标准功能块(FB)集相结合。建议的面向对象(OO)实现的总体设计是用一个轴的类将不同功能作为方法来实现,而不是以前使用的多个FB。该软件设计的一个优点是与程序化运动控制FB兼容:标准运动控制库可以在内部调用轴类,将两种方法结合到一个应用程序中。因此,通过OO实现的用户无需熟悉详细的OO原理或语言元素即可使用。
2024-09-07 00:09:55
2652
1
原创 离开TIA博图的日子---第15天
对于基于TIA建立的工艺对象数据块和AX中的PosAxis类及TO_PositionAxis之间的关系基本理解。对于TO_Position的AX中是一个抽象类,但是通过大量的TO_Struct类型,定义的Axis相关的成员变量,或者说是轴的相关属性,包括基础配置:如轴类型,计量单位,是否是虚拟轴等,也包括与硬件相关的接口如TO_Struct_Actor等。通过PosAxis的Attach完成了TIA的工艺DB和AX中轴对象的引用。在研究了这些的基础上,本应该继续完善演艺设备相关类的定义及数据结构建立的。
2023-12-16 23:17:38
1117
3
原创 离开TIA博图的日子---第13天
如下图所示,在昨日的基础上,已经通过Interfaces完成了演艺设备行为定义,今日本该正式进入设备Class的设计。考虑到Dev类必须Attach具体的工艺对象,故在类的设计前必须深入理解我们的演艺设备工艺对象TO。常言说,他山之石可以攻玉,我相信在自动化领域西门子这座山还是大山。故在设计演艺设备工艺对象前,我决心好好学习AX的关于关于MotionControl的TO设计。
2023-12-15 00:51:26
1620
原创 离开TIA博图的日子---第12天
在系统中所有的被控对象都抽象为设备,包括我们常见的吊杆,升降台,也包括来自音频的TIMECODE或者来自灯光的DMX512信号,在系统中都是演艺设备EntertainmentDev。在曾经的设计中,苦于TIA不支持OOP,故设备的描述并不能层层抽象继承完成,故我们常常建立一个很大的结构数据,把所有设备的属性都包含其中,只是对于不适用于该设备的属性不使用,这导致数据结构相当的臃肿。此刻,休息的闹钟已第二次敲响,为了不重蹈上周低产出的覆辙,此刻我还是从长计议,选择关机睡觉,明天继续......
2023-12-14 00:36:50
586
1
原创 离开TIA博图的日子---第11天
按照例程,编译项目,load程序进PLC,建立Mon文件,把需要监控的变量Add到Mon文件中,这个和博图添加监控表一样。今日为了更深入的理解程序Debug的方法,我硬是把官方文档最开始的入门指南又照着例程走了一遍,基本算是理解了调试工具一二。这基本算是黑盒测试,只有输入激励,观察输出结果,这当然不是现代程序测试的方法。在终端中正确地打印了变量的当前值,我想这应该是工具配置问题,至少工具本身已经成功运行。通过网络调试助手,建立Tcp连接,发送数据包,收到回复(但不正确,明天继续)。
2023-12-13 00:23:58
507
原创 离开TIA博图的日子---第10天
今天开始测试OperationDesk类,虽然我通过直接把程序下载到真实的PLC,通过Mon完成了基本功能的测试,但是对于AxUint还是没有真正的理解,对于什么是Mock,如何使用还需要再下功夫。昨天,前天,我选择战术性休息,连电脑都不愿意打开,完全让自己进入职业休息的状态:睡觉,喝酒,看娃娃书, 今天算是满血复活了。
2023-12-11 17:35:26
545
原创 离开TIA博图的日子---第7天
今天盯着屏幕坐了一天,但是似乎项目开发进度毫无进展,更糟糕的是还没有方向。或许这是我这种大龄程序员的现状,体力和脑子都已经有些跟不上需求了,或许我需要休息一下了。本着求真求实的态度,我如实记录!
2023-12-08 22:19:53
541
原创 离开TIA博图的日子---第6天
Abstract类到Base类,再到具体实现类这样的设计在C++的语言中是可行的,也是方便的,但是在ST中,引用和强制类型转换并不像C++那样自由,几个操作台的引用赋值调用已经让我调试感到紧张。在这种知识惯性的框架下,考虑到未来各种操作台的扩展问题,即多态特性,在设计OD模块的时建立了AbstractOD的抽象类,用于应用层通过REF引用的调用。当需要在工作组中去使用阀门的方法,可以在工作组的某个方法里,用接口变量的方式,关联不同的具体实现的阀门类。在理解INTERFACE的过程中。
2023-12-08 01:57:17
626
原创 离开TIA博图的日子---第5天
时间的相对论在物理课上总很很难理解,但在codeing的时候却是如此的明了,或许正如大家熟悉的愉快的相处总是短暂的。在效率工具的加持下,今天终于完成了控制器与操作台的通信协议实现。在前几日终不得法的纠结下,看了一遍又一遍AX OpenUser开放通信层的学习下终于唔出了类在ST中的应用实践。针对昨日我提到的关于块调用参数不方便直接插入的困惑,在西门子AX团队的支持下,我顺利地安装好library toolbox插件。这是一个效率工具,直接解决了块调用的直接拖入,也解决了库全貌的快速浏览。
2023-12-07 07:30:22
584
原创 离开TIA博图的日子---第4天
比如在开放式通信中,AX提供了OUC和OpenUser两个Lib,OpenUser是基于类开发的,OUC是基于功能块开发的。我在选择库的时候理所当然的喜欢基于类的开发,然后在过程中才发现OpenUser还不完善,缺少很多必要的文档说明,功能也不完整,这导致又更换库重新开发。看着我5天的工作成就,我承认此刻我的内心还是比较惶恐的,毕竟实际工程项目的DeadLine是确定且紧张的。实践证明今天的这样调整是正确的,虽然今天的进展速度没有我理想那么好,但是至少往前推进了。其次,在库的调用中没有博图那么方便。
2023-12-06 00:49:45
744
原创 离开TIA博图的日子---第3天
我一遍又一遍地看着官网的ST语言参考,看着类,方法,重载,FB,FC。经过前两日对AX的了解,已经基本可以完成最简单的编译下载,今天开始着手用于正式的项目程序开发,毕竟我们用一个新的平台的目的还是产品开发,就像我们谈恋爱的目的还是结婚生子,一切不以结婚为目的的恋爱就是耍流氓,一切不以项目产出为目标的平台测试也是耍流氓。我不断地安慰自己做程序就是这样的,就像原子的能级一样,在一个能级不断提高转圈久了自然就会跃迁到下一能级,这需要一个不断做功的过程。夜晚,行业聚会,宿醉,至此刻酒醒。嗟乎,今日终不得法!
2023-12-05 03:56:43
706
原创 离开TIA博图的日子---第2天
是的,这就是我们熟悉的各种功能的可执行文件,包括常用的开发功能如ST程序的编译,程序的下载,还包括查找设备,设置PN名称及参数,当然也包括相关的应用库。No.它是基于dotnet的,所以,在你想更深入地了解它时,它给你机会去反编译它,更深入的了解它的每一句代码。接下来,为了更深入的了解它,我需要知道每一个命令代码下去,它到底有什么变化。正如预期,这里是linx-x64,但是细心的你会发现,它有一个@ax-vscode,为了一探究竟,继续深入@ax-vscod,是的,如你所料,这是VSCODE的插件。
2023-12-03 23:51:58
1577
1
原创 离开TIA博图的日子---第1天
文档说需要编写“IMATIC AX Hardware Declaration Language”,看着这还得用硬件描述语言,我心里琢磨着,这AX还挺矜持的嘛,我这想直接进入主题还挺难的嘛。下载安装包118M,简单的下一步,下一步,完成,Launch,基于VS Code的AX映入眼帘。是的,对于IT工程师而言,它说熟悉的,它是简约的,它看着也是美妙的。初识,它是美艳的,也是强大的。但是,它是开放的吗?人在兴奋的时候,思维就会特别活跃,很快,PLC运行诊断相关界面展示出来,看着它是那样的熟悉,又那么的美妙。
2023-12-02 17:31:37
3004
5
原创 离开TIA博图的日子---第0天
这虽然让项目代码管理麻烦,好在也还能接受,也方便在给项目领导展示项目的时候,体现一下工作量。从今天起,我记录离开TIA博图的每一步,看我如何彻底地摆脱它,让它看到我离开它的日子过得有多好!但是随着TIA的版本更新越来越快,当我才把V17用习惯的时候,V18出现了,当我终于由于部分硬件必须使用V18,我鼓足了很大的勇气安装好V18的时候,V19诞生了。看看几个需要维护的已经归档的项目,看看这巨大的安装包,看看我的电脑硬盘剩余空间,我常常要点支烟,看着屏幕发呆。还好LAD的程序都不大,还勉强能应付。
2023-12-01 17:57:06
2769
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅