|
邀请回答
马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册 ![](source/plugin/zhanmishu_wechat/template/static/img/wechat_login.png)
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视图中,关于时间的设定值,当前值如何设置
|