查看: 1471|回复: 11
收起左侧

[教程经验] 记录一下呢学习PLCopen规范的内容1

邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
PLCopen中的两类功能块
边沿触发——execute为输入,done为完成标志
电平触发——enable为输入,valid为输出(有效)
在version2.0的第一部分,添加了持续更新,将两种功能块联系起来。
如果持续更新为true,当功能块是边沿触发,只要持续更新为true,功能块将会将当前的输入参数应用到正在执行的运动中
如果持续更新为false,当功能块执行时,输入参数的变化将被忽略。

busy——FB没有完成,等待新的输出
active——FB已经控对轴产生了控制
commandaborted——该命令被其他命令打断
error——FB内部信号错误
errorid——错误代码

Inxx是什么意思?

通常使用电平触发比使用边沿触发更好,因为判断边沿触发需要两个PLC周期。

边沿触发FB块具有如下定义:
1. 输入变量xExecute是其标志
2. 上升沿检测模块定义了当检测到xExecute上升沿时开始操作
3. 除了xExecute和最后显示的xAbort,所有的变量都在上升沿触发时被采集。这两个输入变量被保存在本地,因此输入的变化不影响正在进行的操作
4. xExecute的值可以被置false,在xbusy为ture之后
5. xExecute的下降沿不会取消操作。操作会继续进行到ready,abort,或error状态
6. 只有输入变量xAbort为true时操作会被取消
7. 如果xAbort和xExecute的同时为true,则马上终止
8. xDone,xBusy,xError,xAborted在同一时刻只能有一个为true
9. 如果终止状态被检测到,在将xBusy设为false后将xAbort设true
10. 当xBusy下降沿时刻,xExecute被采样并保存其相反的值作为FB内部的复位请求
11. 即使xExecute的状态已经被置false,输出变量的状态最少会保持有效一个周期。在这种情况下,FB内部变量被自动重新初始化。在其他情况下(xExecute一直为true),FB在重新初始化前,等待xExecute的下降沿(标准握手机制)
12. 除xDone,xBusy,xError,xAbort,eErrorID之外的输出变量,只有当xDone是才有效
13. 如果正当复位等待阶段,并且xDone,xError,xAborted三个输出中有一个为true,输入变量xExecute可以再次被置true,并且该FB将会重新开始起动作(快速握手机制)

电平触发FB如下定义:
1. 使用xEnable定义
2. xEnable为true则开始执行操作,操作可以执行到ready,error状态。xEnable为false则被认为中止。这意味着FB的内部状态和输出变量将被重新初始化,并准备重新被触发(标准握手机制)
3. 输入变量不会被保存在本地,输入变量会实时影响操作
4. xDone,xBusy和xError同一时刻只有一个可以为true
5. 只要输出xBusy和xDone为true,输出变量就都是有效的
6. 输出变量至少都会有效一个周期,即使xEnable已经为false。在这种情况下,FB内部状态自动被初始化。在通过error状态中断操作时需要进行这种操作。
7. 除了xDone,xBusy,xError和eErrorID,其他输出只在xDone为True时有效
8. 当处于复位等待状态,并且xDone或xErorr一者为True时,输入变量xEnable可以再次被置true,FB将会重新运行(快速握手)

持续行为:
没有xDone输出没有done状态的电平触发模块

模块共同的性质
1. 如果调用的FB检测到start状态,则xBusy立刻被置true
2. 只要FB的操作开始,xBusy为true
3. 如果进入ready状态,xDone被置true,xBusy置false
4. 如果进入error状态,xError置true,xBusy置false。此外eErrorID输出错误码。
5. 如果FB的操作在一次调用中就能执行完成,ready状态或error状态立刻就会到达,因此xBusy不会被看到变true
6. xDone上升沿时,其他输出变量的值会被冻结
7. 只要xDone,xBusy或xError变true,说明FB的操作未完成,需要进一步的调用

时间限制的FB
1. udiTimeLimit us FB完成或时间超过udiTimeLimit,则退出
2. udiTimeOut us 执行操作时间超过该值则退出,并报警xError置true,输出对应xErrorID ERROR.TIME_OUT

eErrorID呈现出整型数据,不同的库合并时可能会冲突【这个要注意】

不同库的errorid用命名空间区分
各自的枚举中要把NO_ERROR与TIME_OUT的留出来
即使TMIM_OUT不用,也不能被别的用
每个枚举要有说明
枚举数据类型由命名空间区分{attribute ‘qualified_only’}

不同库的errorid可以通过设计一个函数重新映射到另一个枚举里

IEC61131-3中面向对象特性的介绍
不是必须的,更像模板作用




上一篇:codesys有神经网络模型吗?
下一篇:在中型PLC视图中,关于时间的设定值,当前值如何设置

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

nokia_game 2022-7-22 12:26:37 | 显示全部楼层
这个在PLCopen官网上是哪个文档?
回复 送花

使用道具 举报

LiyuLi 2022-7-26 10:06:58 | 显示全部楼层
内容详细,感谢分享
回复 送花

使用道具 举报

624413243 2022-8-28 22:58:15 | 显示全部楼层

内容详细,感谢分享
回复 送花

使用道具 举报

LiyuLi 2022-8-29 11:32:37 | 显示全部楼层
内容详细,感谢分享
回复 送花

使用道具 举报

AUS 2022-12-16 00:05:11 来自手机 | 显示全部楼层
LiyuLi 发表于 2022-7-26 10:06
内容详细,感谢分享

麻烦你少刷一点无用的消息,为了赚水滴也是够不择手段的
回复 送花

使用道具 举报

内容详细,感谢分享
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部