SoMachine控制系统的执行具有以下特点:
●系统是多任务执行的。
●最大可执行任务数由控制器类型决定。
●不同的任务采用不同的执行方式。
●程序组织单元只有放入任务中,才会被控制器执行。
●只有程序组织单元POU才能加到任务栏中。功能块是不能加入到任务栏中的。
控制器扫描的顺序如图7-31所示。
图7-31 控制器扫描的顺序
以下是任务执行的不同方式。
1)周期执行方式。如图7-32所示,每一次扫描的周期一致,也就是每一次扫描输入和程序字头是规律的、定时的。这样在与外部信号的对接中,会规避竞争冒险。图中的I.P.是扫描内部功能。
图7-32 周期执行任务
2)事件任务。即引起执行一个中断任务。它按引起中断的方式在任务类型上分为事件(内部)和外部。当引起中断的信号来自内部的一些变量时,我们在类型栏目选择事件,并在事件的下拉菜单中选择变量。当引起中断的信号来自控制器硬件端口,则在类型栏目选择外部的,并在外部事件栏的下拉菜单中选择端口信号。事件任务的执行如图7-33所示。
图7-33 事件任务的执行
3)自由运行。这种扫描方式为一旦结束一个程序扫描就马上返回程序字头,开始新的一次扫描。图7-34中的I.P.是扫描内部功能。
图7-34 自由循环任务
在组态任务时,可根据不同要求,配置任务的执行方式和优先级别。图7-35示出了任务的优先级和程序组织单元POU的执行顺序。
图7-35 任务的优先级和程序组织单元POU的执行顺序
例如在M238逻辑控制器上,我们对端口I2点进行组态,使它具有启动事件功能,并且启动事件的信号为上升沿,如图7-36所示。
图7-36 配置一个引起中断的端口
然后,在任务组态栏目建立一个事件任务Event_Task,如图7-37所示。
双击事件任务“Event_Task(1)”,打开任务配置,在任务类型单元,选择外部“External(2)”,然后在外部事件栏的下拉菜单中,选择“I2(3)”,这就相当于把事件与外部端口联系起来。再把事件任务的程序Event_1加入到中断任务执行序列中,如图7-38所示。
在M258逻辑控制器和LMC058运动控制器上,我们可以在专家模板上对端口进行配置。
如在专家模板DM72F0上,点击鼠标右键打开下拉菜单,选择“添加设备”,并选择“Event Latch0”,建立一个子设备Event Latch0。双击子设备(1),打开配置画面,在方式Mode上,选择事件“Event”,信号触发选择上升沿“Rising”(2),如图7-39所示。
事件任务配置(M258/LMC058)
在M258控制器和LMC058运动控制器上配置中断程序,与M238一样,首先把鼠标移到任务配置,然后点鼠标右键,打开菜单,选择“添加对象”,添加一个中断任务“Event_Task”,如图7-40所示。
建立好程序名后,双击程序名打开程序配置,在程序类型栏目选择“External”(2),在外部事件信号External event栏目,选择“BLOCK0_I0”(3)。在POU程序组织单元栏目,选择把事件中断程序Event_1加入到此(4),如图7-41所示。
这样,我们就完成了一个中断程序的配置,当外部端口信号I0的状态发生变化,就会引起一个中断,使程序扫描进入中断程序,执行中断程序的指令。
图7-37 新建一个事件任务
图7-38 配置任务执行方式和优先级
图7-39 输入配置
图7-40 建立一个中断任务
图7-41 对任务进行配置(www.daowen.com)
那么在中断程序里I/O是如何刷新的呢?我们再来看看引起中断的I/O配置。在设备device配置框,双击专家模板DM72F0打开模板配置并点击专家I/O映射“Expert I/O Map-ping”。在总线循环选择栏,选择扫描中断任务“Event_Task”,如图7-42所示。
然后,在中断程序里,我们要使用PLC系统应用库里的立即I/O读写功能,如图7-43所示。
图7-42 配置专家模板及总线扫描对象
图7-43 控制器系统应用库中的立即I/O读写功能
这些系统库中的快速I/O读写,不依赖总线扫描,只反映当前状态。
该功能适用于嵌入式专用I/O功能块DM72F0和DM72F1。它将返回输入的当前物理值,当前物理值可能与该输入的当前逻辑值不同。该输入的变量值在下一个总线循环前不会改变。
立即输入功能如图7-44所示。
图7-44 立即输入功能
功能块的输入见表7-1。
表7-1 功能块的输入
功能块的输出见表7-2。
表7-2 功能块的输出
功能块的输入/输出见表7-3。
表7-3 功能块的输入/输出
调用这些功能块如图7-45所示,在程序编辑区调入运算块,打开输入助手,点击模块调用,在SEC中选取立即读写功能块。
选取写功能块
此功能用于设置嵌入式专用I/O(DM72F)的快速输出的当前物理值。
每个快速输出都有一个功能块:
DM72F0SetImmediateOutput0
图7-45 在模块调用SEC库中选取读写功能块
立即输出功能如图7-46所示。
图7-46 立即输出功能
功能块的输入见表7-4。
表7-4 功能块的输入
功能块的输出见表7-5。
实现DM72F*SetImmediateOutput*
SoMachine对于下列情况返回编译错误:
●在多个任务中使用DM72F*SetImmediateOutput*功能。
●在应用程序中使用与DM72F*SetImmediateOutput*关联的%Q。
●该输出已经专用于某一嵌入式专用I/O功能块功能(例如:PWM、频率发生器、编码器的反射输出、警报)。
表7-5 功能块的输出
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。