调试与监控程序292
10.3 使用状态表和图像监控
在项目管理器中您可以为一个项目建立一个或多个状态表,在将程序下载至PLC之后监控和调试程序操作。使用以下方法之一打开状态表:
在资源管理器中状态表目录下双击任一状态表页图标或是在图标上单击鼠标右键选择【打开】菜单项即可启动状态表编辑器进入该状态。
如果在状态表编辑器中有一个以上状态表,使用状态表编辑器窗口菜单中的排列窗口菜单项或者选择其中的已打开窗口列表菜单项切换状态表。
10.3.1 状态表监控
如果您已经打开一个空状态表,编辑行,增加监控的 PLC 数据地址。在状态表任意行点击右键选择【插入】→【插入行】即可在选中行上方插入新行。
打开状态表,可查看或编辑表内容,可在地址列和新值列手动键入内容,在格式列下拉项选择格式。点击图标 即可启动状态表监控,进而采集状态信息。点击图标即可查看趋势视图。在控制程序的执行过程中,状态表中数据的动态改变可用两种不同方式查看:表格显示:在一表格中显示状态数据,每行指定一个要监视的 PLC 数据值。您可以指定存储区地址、格式、当前值及新值。
趋势图显示:用随时间而变的 PLC 数据绘图以跟踪状态数据,您可以就现有的状态表在表格视图和趋势视图之间切换。新的趋势数据亦可在趋势视图中直接赋值。使用以下一种方法启动在状态表中载入 PLC 数据的通信:
要连续采集状态表信息:开启状态表→使用菜单命令【调试】→【状态表监控】或使用【状态表监控】工具栏按钮。
要获得单个数值的【快照】,可使用【单次读取】功能:使用菜单命令【调试】→【单次读取】或使用【单次读取】工具栏按钮(已经开启状态表监控,【单次读取】功能被禁止)。提示
• 打开状态表并不意味着开始自动查看状态。您必须启动状态表监控,才能采集状态信息;• 如果表是空的,启动状态表监控没有任何意义:您必须首先将程序数据(操作数)放在【地址】列中,并为【格式】列中的每一个数据选择数据类型,以【建立】一个表;• 您可以采集 STOP(停止)模式的 PLC 状态,检查程序运行的初始或最终状态。PLC必须位于 RUN(运行)模式,才能从连续执行的程序采集数据。
如果 PLC 位于 RUN(运行)模式,程序在连续扫描的状况下执行。您可以启动状态表监控,连续更新状态表数值。您还可以使用【单次读取】功能,采集状态表数值的单个【快照】。您在查看状态表时,还可以将 PLC 设为 STOP(停止)模式,使用【首次扫描】或【多次扫描】
MagicWorks PLC 编程软件用户手册
293
功能,监控有限次数扫描的程序操作。
状态表监控提示
无论 PLC 位于何种操作模式,锁图标始终会显示。
如果 PLC 位于 RUN(运行)或 STOP(停止)模式,可使用写入、强制和取消强制功能。但是,在 STOP(停止)模式中,写入输出(Q 和 AQ)选项只有在【调试】→停止模式下写入-强制输出的项目被选中时才能。
状态值在 PLC 位于 RUN(运行)或 STOP(停止)模式时都被显示。 强制和取消强制工具栏按钮选项仅对字节、字和双字长度的 V、M、AI 和AQ存储区类型可用。工具栏按钮只有在所有选项可以被强制/取消强制时才会变成可用状态。 强制和取消强制工具栏按钮和弹出菜单选项仅对位、字节、字和双字长度的I 和Q存储区类型可用。工具栏按钮只有在所有选项可以被适当强制/取消强制(这是选择多行的情况)时才会变成可用。
强制和取消强制工具栏按钮和弹出菜单选项对所有完全或部分隐性强制数据无效。显性强制数值可以被强制为一个新数值,而无须取消强制后再强制新数值。在状态表中使用调试功能
您可以在程序状态监控过程中从程序编辑器,或者在状态表监控中将新数值写入或强制至操作数,以模拟控制过程的状态。
10.3.2 使用趋势视图
趋势图显示细节
使用下列方法在状态表的表格视图和趋势视图之间切换:
1)使用状态表编辑器菜单命令【视图】→【查看趋势视图】。
2)用鼠标右键点击状态表,然后复选或取消查看趋势图命令。
3)点击调试工具栏的趋势图按钮 。
趋势图用随时间而变的 PLC 数据绘制图形以跟踪状态数据:您可以把现有的状态表在表格视图和趋势视图之间切换。新的趋势数据亦可在趋势视图中直接定义查看。趋势显示的行号与状态表的行号对应。新的趋势数据属性亦可在趋势图中直接指定。
倘若在选取【切换趋势图】按钮之前没有使用【状态表监控】按钮,供趋势功能使用的状态采集将不会开始。如要启动 PLC 数据采集,您必须选取状态表监控按钮。如果状态表已启动,趋势图将会立即开始显示已采集的数据。
调试与监控程序294
通过点击【暂停趋势图】按钮 或选择菜单命令【调试】→【暂停趋势图】可以冻结趋势绘图。趋势视图词汇表
名称 含义
趋势显示
基于时间而绘制的 PLC 数据图形,可通过选取【切换趋势图】按钮从预先配置的状态表创建。
趋势绘图
对于状态表中已配置的每个地址,PLC 数据图形之屏幕位置会以时间为自变量得到显示。您不能调整趋势绘图的宽度。数据点或趋势点
数据点意指出自 PLC 中某地址的单个数据。数据点是在相应地址的趋势绘图中赋予最后一个像素时的数值。
范围
趋势数据的绘图分布在最小值和最大值之间。此范围通常定义了数值的某个固定跨度。
自由范围
如果没有给趋势绘图选取范围,则最小值和最大值之间的数据范围会动态变化。
采样速率或采集速率
定义由 PLC 采集数据的速率。此速率将是固定的,并且将基于选定的趋势显示时间单位计算得出。
趋势窗口
用于描述对趋势数据进行绘图的时间窗口;即由趋势绘图屏幕宽度代表的时间跨度。
实时趋势
实时趋势意指以实时方式采集和在趋势窗口中显示数据。一旦此数据填满趋势窗口,最先的数据就会从趋势绘图上消失。趋势图的单次读取和写入按钮与状态表上的相应按钮作用相同。【强制】、【取消强制】、【全部取消强制】及【读取全部强制】的作用与在状态表中相似。
实时趋势功能不支持历史趋势,即超出一个趋势窗口之时间跨度的趋势数据不会得到保留。将光标放在分隔趋势行的横线上直至出现双箭头光标。在光标为双箭头时,向上拖动以减少或向下拖动以增加高度。
您可以用秒或分为单位设置趋势绘图的时间基准,其默认值为 1s。配置的时间基准会在趋势图上用 s(秒)或 m(分)显示,其位置为此图顶部附近的趋势窗口时间刻度内。如果您更改趋势图的时间基准,整个图的数据都会被清除并用新的时间基准重新显示。在选定一个趋势行后,用鼠标右键点击会弹出菜单,点击【属性】可指定此行的趋势数据属性。
MagicWorks PLC 编程软件用户手册
295
通过【趋势数据属性】对话框,您可以对趋势绘图做出下列变更:
编辑地址(例如:将 VW0 更改为 VW10)。
增加一个新地址,如果选定的点以前没有得到配置。
更改显示格式类型。
基于选定的显示格式设置范围。
如果显示格式被修改,所有数据将会重新显示,并且可能因选定的新格式而改变。如果这些格式在数值上是兼容的,例如有符号或无符号数,趋势绘图将只会进行可能的范围变更。如果有些数值现在是在旧范围之外,并且范围已锁定,那么此绘图将以最大或最小范围值处中断。如果此绘图配置为自由范围,那么如有必要,这些数据将使用新的范围值重新显示。按照默认规定,固定范围跨度不会启用;因此,这些趋势图绘图将为自由范围。如要能够针对给定趋势点选取范围值,请复选【锁定范围】复选框;这将令此复选框下面的域可接受输入。由此对话框对地址或显示格式做出的任何更改将同时影响状态表和趋势图。10.3.3 使用对比趋势视图
提示:执行【插入对比趋势图】操作前需在状态表中写入变量,位变量不允许插入。1、插入对比趋势图:在【状态表】界面右键单击变量,选择【插入至对比趋势图】如下左图,或在【查看趋势图】界面右键选择【插入至对比趋势图】如下右图,打开对比趋势图视图界面。2、添加/移除变量:在【对比趋势图】界面右键点击列表可添加或删除变量,最多可添加三组变量,对已添加的变量可选【移除变量】,选择后将删除该项变量。
调试与监控程序296
选择【添加变量】后,将出现如下左图所示界面,输入要进行添加的变量地址,点击颜色条可进行图形颜色(列表中变量及右侧坐标中图形颜色)的设置,如下右图所示,设置完成后点击【确认】完成变量的添加。
添加变量后的对比趋势图如下图所示,界面右侧为变量点数据对比折线图。添加变量后坐标系统默认为自动跟踪显示最新数据曲线的数据,按住鼠标左键并移动可暂停跟踪功能,单击鼠标右键恢复跟踪功能。鼠标滑轮键在暂停跟踪功能时可缩放横坐标系统,【Alt 加滚轮】可缩放纵坐标,跟踪状态无法缩放。鼠标右键点击列表中的变量也可选择【暂停】或【恢复】画面。3、多通道:右键点击列表中的变量,勾选【多通道】选项,变量图线将以单个变量一组的形式在坐标图中显示出来。若变量列表变量点个数少于 2 个时多通道功能不可用。若监控变量个数为两个,且处于多通道状态时,作【移除变量】操作后会自动改变为单通道状态。如下图所示:
MagicWorks PLC 编程软件用户手册
297
4、添加光标:右键点击列表中的变量,选择【添加光标】,可为变量图线添加两组光标。鼠标左键双击光标可选中/取消选中光标,光标线选中后为红色。光标选中后,鼠标左键单击坐标系统任意位置,光标会移动至点击位置。单次只能选中一个光标。当两个光标都已添加时,移动任何一个光标,底部状态栏会显示两个光标之间的时间差,而变量列表中会显示每个变量的数据差,两个光标位置可自由放置。若坐标系统失去焦点会暂停计算光标间的时间差和数据差。对比趋势图处于多通道模式时,变量列表中一个变量对应一个坐标系统,因此选中变量添加光标后会添加至对应的坐标系统,坐标系统右上角标签文字与变量名一致。选中变量取消光标也只会取消对应坐标系统的光标,不会影响其他变量的光标状态。当变量对应坐标系统两个光标都添加后,底部状态栏前面会显示光标间的时间差,后面会显示光标间的该变量的数据差。只有当该坐标系统被选中时才开始计算时间差和数据差并显示。选中的坐标系统背景颜色为淡黄色,若坐标系统失去焦点会暂停计算坐标系统时间差和数据差,状态栏会维持显示最后一次计算的时间差和数据差。
5、可见和属性:右键点击列表中的变量,【可见】选项设置该变量对应图线在右图中的显示情况,勾选【可见】则该变量对应图线将显示在右侧,反之不显示,最多可选择两组变量【不可见】。选择【属性】选项,可设置图线颜色及触发变量。
调试与监控程序298
勾选【是否启用触发功能】,可设置【触发变量】和【触发条件】,触发条件可选【上升沿和下降沿触发】、【上升沿触发】、【下降沿触发】。
趋势图清除
在【查看趋势图】界面,点击右键,在弹出的菜单项选择【清除】,将清除趋势图内当前选定行的已收集数据。选择【全部清除】则清除此趋势图界面内全部条目的全部数据,包括未被滚动到可见范围内的数据。
10.3.4 追踪视图
追踪功能用于在一个或多个图表中配置和显示特定于应用程序的跟踪数据。在应用程序运行时,可以在【追踪视图】中查看跟踪变量的值曲线记录。要求是设置跟踪配置,将跟踪配置传输到 PLC,并开始跟踪记录。记录的数据将传输到上位机,并根据配置以图表形式显示。跟踪时可以浏览数据。
启动【追踪】功能,用户可在状态表 ->菜单 ->视图 ->追踪 或在状态表工具栏中点击图标启动追踪视图。
如下图所示:左边是数据显示图表,右边是变量列表,目前可添加最多8 个变量和8 个图表。
MagicWorks PLC 编程软件用户手册
299
配置对话框
对话框包括了对追踪工程的数据记录的追踪配置,点击【追踪视图】右上方的【配置】或鼠标右键是弹出菜单中的【配置】可以进入到配置对话框。
添加变量:添加一个要监控的变量,目前规格:最多可添加 8 个变量。 可在【追踪视图】右上角点击添加变量添加
可在【追踪记录】视图中右键菜单中添加
在图表视图中选中其中一个图表的【显示变量】结点在右键弹出菜单中添加删除变量:在追踪视图中选中一个变量右键删除变量,弹出确认对话框,确认后删除变量,注意:变量删除后不能撤消
分配变量:在追踪视图中选中一个变量在右键弹出菜单中选中【分配到图表】,可以把变量分配到指定的图表中。在添加变量的时候会默认分配到第一个图表中。目前可最多添加8 个图表。添加图表:图表视图中可通过右键菜单【添加图表】可在视图中插入一个新的图表。删除图表:图表视图中可选择要删除的图表通过右键菜单【删除图表】,并在对话框中确认后可删除图表。注意:图表删除后不能撤消。
记录设置:点击追踪记录中的【追踪】可在右边进行【记录设置】
启用触发器:通过使能一个变量来记录一段时间内的数据,点击右边复选框可以使能/不使能,当使能触发器时,还需要配置触发变量,触发沿和触发后采样时间。触发变量:当使能触发器的时候有效,被用作触发器的信号,有效的触发信号是一个变量,PLC中的一个位地址。例如 M0.0。
触发沿:当使能触发器的时候有效,定义触发边沿检测:
上升沿:对于 BOOL 触发变量,触发在值从 FALSE 变成 TRUE 的时候发生。下降沿:对于 BOOL 触发变量,触发发生在当值从 TRUE 变成 FALSE 的时候。上升沿和下降沿:对于 BOOL 触发变量,触发发生在值改变的时候。触发后采样时间:触发器在触发后继续采样指定的时间后停止采样。采样周期:定义的 PLC 采样的时间周期,可在下拉框中选择 PLC 周期、EtherCAT 周期、脉冲周期和 1ms 中断。
变量设置:对添加的变量或已经存在的变量进行配置
变量地址:输入要监控的 PLC 中的有效地址,当地址无效时会报错,必须配置。变量名称:当前变量的别名,可供用户更好地识别变量,可以不配置。显示格式:共有 4 种显示格式供用户选择:有符号、无符号、浮点型和位。曲线颜色:添加变量时会随机生成一种颜色,用户也可自行修改。
线类型:两点之间连线的类型是,可选择直线、阶梯和没有连线。
点类型:有圆点、交叉和无三种样式选择。
时间轴配置:点击图表视图中的时间轴结点可配置对时间轴进行设置。显示方式:监控数据的过程中时间轴(X 轴)的变化方式:
自动:时间轴自动缩放
固定长度:显示一段常数长度。
固定:固定显示一段数值从最小到最大。
最小值:段的初始值。显示模式为【固定】时有效。
调试与监控程序300
最大值:段的结束值。显示模式为【固定】时有效。
长度:常数段长度。
网格:时间轴方向图的网格线。
Y 轴配置
点击图表视图中的 Y 轴结点可配置对 Y 轴进行设置。
显示方式:监控数据的过程中 Y 轴的变化方式:
自动:时间轴自动缩放。
固定:固定显示一段数值从最小到最大
最小值:段的初始值。显示模式为【固定】时有效。
最大值:段的结束值。显示模式为【固定】时有效。
网格:Y 轴方向图的网格线。
描述:Y 轴被标记为【描述】。
跟踪图的预览图:可以预览表配置好的图表,也可进行图表的颜色。追踪视图右键菜单
配置:可打开配置对框,如果当前处于监控状态,将会自动暂停
下载配置:将配置好的变量下载到 PLC,如果数据有误将会报错,否则会自动开始读取数据。如果修改过变量就必须重新下载数据之后才能读:如添加、删除过变量,修改过变量的地址,显示格式等。
注意:下载前要确保软件已边上 PLC 并选用的是【CTH300/200 Local(TCP/IP)】通信接口,否则无法边接到 PLC。
开始/暂时读数:下载数据后,可以开始/暂停读数。
光标: 光标是一个跟踪光标,平行于 y 轴中垂直的黑线。可以用于标识光标位置的时间和对应的 y 值,如果光标所在的时间点没有对应的 Y 值,将显示离光标最近的一个点的值。在没有跟踪光标可用时,添加一个光标到跟踪图。
当一个跟踪光标可用时,再添加一个光标到跟踪图。
当两个跟踪光标可用时,删除显示的跟踪光标。
无任何痕迹光标跟踪图:在这种模式下,你可以通过鼠标指针轨迹图运行。集中于光标的X值,会以普通风格显示在状态栏中(例如,时间: 1m23s456ms Value: 1)。一个跟踪光标的跟踪图:在状态栏和 y 值, 输出结果主要标志是跟踪光标的时间。例子:Time:1m23s456ms。
两个跟踪光标的跟踪图:在状态栏中,输出两次,由该两个跟踪光标(例如标记的时间间隔,Time: 1m23s456ms - Time: 1m24s456ms (∆ 1s))。
跟踪图的用户输入:如果一个或两个跟踪光标可用,那么你可以沿着X 轴移动。鼠标:拖动跟踪光标的三角形到其它位置。在状态栏中同步更新 y 值。键盘:方向键左右可移动黑色跟踪光标。
显示/隐藏变量:如果不想查看某个变量,可以在右边变量列表中选中变量右键弹出菜单中【隐藏变量】,变量就不会在图表中显示。如果某个变量已经被隐藏了又想重新查看变量的曲线,可以在右边变量列表中选中变量右键弹出菜单中【显示变量】,该变量就会重新显示到图表上。重置视图:根据时间轴和 Y 轴配置的显示模式,使视图恢复默认刷新状态。多通道:追踪视图中以第一个图表为模板为每一个变量分配置一个图表并重新初始化图表。注意:使用的【多通道】功能后旧的图表配置数据将被删除。
MagicWorks PLC 编程软件用户手册
301
单通道:追踪视图把所有变量都放到第一个图表中并重新初始化图表。注意:使用的【单通道】功能后旧的图表配置数据将被删除。
保存轨迹:将读取的数据保存到一个*.cttrace 的文件中。
装载轨迹:从*.cttrace 文件中读装载保存的数据。
MagicWorks PLC 编程软件用户手册
302
11 诊断
诊断信息
时间戳不匹配
11.1 诊断信息
通过出现的诊断符号,可查看是否有可供模块使用的诊断消息。诊断符号说明了相应模块的状态,对于 CPU 则说明了其工作模式。
打开 MagicWorks PLC 软件→选择菜单项【PLC】→在项目管理器界面打开【硬件组态】→【获取诊断信息】即可打开诊断窗口。
表 11-1 诊断信息格式
列名 意义 备注日期 诊断事件发生的日期,格式为:年.月.日
时间 诊断事件发生的时间,格式为:时:分:秒:毫秒
类型 诊断事件的类别
过程变量
SOE 事件发生时,过程变量的值(仅 SOE 事件才
有过程变量)
最多可组态16个SOE事件;过程变量的类型和显示格式可在CPU【属性】→【SOE 配置】中组态11.1.1 PLC 非致命错误
非致命错误可能降低 PLC 的某些性能,但不会使 PLC 无法执行用户程序和更新I/O。表 11-2 内存非致命错误信息
支持的事件类型 类型编码 编码 事件描述CPU 非致命错误 0x7
0x00 无错误
0x01 在执行 HDEF 方框之前启用HSC
0x02 输入中断分配冲突,分配至已经分配给HSC的点0x03 输入分配冲突,分配至已经分配给输入中断或其他HSC 的 HSC
0x04 尝试在中断程序中执行 ENI、DISI 或HDEF指令0x05
尝试在完成第一个 HSC/PLS 之前执行第二个带有相同号码的 HSC/PLS,与主程序中的HSC/PLS发生中断程序冲突
MagicWorks PLC 编程软件用户手册
303
0x06 间接编址错误
0x07
TODW(日写入时间)或TODR(日读取时间)数据错误
0x08 超出最大用户子程序嵌套层数0x09 在端口0中同时执行 XMT/RCV 指令0x0A 尝试通过执行另一条用于相同HSC 的HDEF指令重新定义 HSC
0x0B 在端口1中同时执行 XMT/RCV 指令0x0C 保留
0x0D 保留
0x0E 保留
0x0F 在比较触点指令中遇到非法数字数值0x10 保留
0x11 保留
0x12 保留
0x13 非法 PID 回路表
0x80 程序过大,CPU 无法生成可执行代码;请缩小程序大小
0x81 保留
0x82 非法指令;检查指令助记符0
0x83 缺少 MEND,或主程序中不允许存在指令;增加MEND 指令或移除不正确的指令0x85 缺少 FOR;增加 FOR 指令或删除NEXT指令0x86 缺少 NEXT;增加 NEXT 指令或删除FOR指令0x87 缺少标签(LBL、INT、子程序);增加适当的标签0x88 缺少 RET 或子程序中不允许存在指令;在子程序结尾处增加 RET 或移除不正确的指令0x89 缺少 RETI 或中断程序中不允许存在指令;在中断程序结尾处增加 RETI 或移除不正确的指令0x8B 至 SCR 段非法 JMP 或从SCR 段非法JMP0x8C 重复标签(LBL、INT、SBR);为其中一个标签重新命名
0x8D 非法标签(LBL、INT、SBR);核实未超出允许使用的标签数
诊断304
0x90 非法参数;核实指令允许使用的参数0x91 范围错误(包括地址信息);检查操作数范围0x92 指令计数域错误(包括计数信息);核实最大计数0x93 超过 FOR/NEXT 嵌套层数0x94 用地址信息向非易失性内存写入范围错误0x95 缺少 LSCR 指令(载入 SCR)0x96 缺少 SCRE 指令(SCR 结束)或在SCRE前出现不允许使用的指令
0x97 用户程序包含不带号码及带号码的EU/ED指令0x98 尝试在配备不带号码 EU/ED 指令的程序中执行运行时间编辑
0x99 过多隐含程序段
0x9A 在用户中断中尝试转入自由端口模式0x9B 非法索引(字符串操作,已指定该操作中的一个起始位置数值0)
11.1.2 PLC 致命错误
严重错误导致 PLC 停止执行程序。取决于错误的严重程度,严重错误可以使PLC无法执行任何一个或全部功能。处理严重错误的目的在于使 PLC 进入安全状态,使PLC 能对现有错误条件的询问作出应答。
检测到严重错误时,PLC 执行下列任务。
更改为 STOP(停止)模式;
打开系统故障 LED 和停止 LED;
关闭输出;
MagicWorks PLC 在 PLC 信息对话框中显示由 PLC 生成的错误代码以及简要说明。欲打开该对话框,选择菜单命令【PLC】→【信息】。
一旦纠正了引起严重错误的条件后,必须采用下列方法之一重新启动PLC。 关闭 PLC 电源后再重新打开;
将模式开关从 TERM(有条件)或 RUN(运行)转至 STOP(停止)位置。(只有在PLC出现严重错误和故障指示灯亮起时,模式开关才以此种方式工作。)重新启动 PLC 会清除严重错误条件并开始启动诊断测试。如果发现另一个严重错误条件,PLC再次设置系统故障 LED;否则,PLC 开始正常操作。
有几种可能的错误条件会使 PLC 无法通讯,在这种情况下,您无法检视PLC 错误代码。此类错误表示硬件故障,要求修理 PLC 模块;改变程序或清除 PLC 内存不能解决这一问题。PLC 一直处于该状态,直到严重错误得到纠正。下表列举可从 PLC 读取的严重错误代码说明。表 11-3 PLC 致命错误信息(CTH300-H 系列 PLC 适用)
MagicWorks PLC 编程软件用户手册
305
支持的事件类型 类型编码 编码 事件描述CPU 致命错误 0x8
0x00 不存在严重错误
0x01 保留
0x02 保留
0x03 扫描看门狗超时错误0x04 保留
0x05 保留
0x06 保留
0x07 保留
0x08 保留
0x09 保留
0x0A 保留
0x0B 保留
0x0C 保留
0x0D 保留
0x0E 保留
0x0F 保留
0x10 内部软件错误
0x11 比较触点间接编址错误0x12 比较节点非法浮点数值错误0x13 保留
0x14 比较节点范围错误
11.1.3 模块诊断事件(CTH300 系列 PLC 适用)
表 11-4 EtherCAT 寄存器 SMB400~SMB465 诊断
SMB 错误描述
SMB400 找到的 EtherCAT 从站的个数
SMB401
EtherCAT 错误:
0:没有错误
1:组态参数错误
2:没有找到从站
诊断306
3:状态切换错误
4:写组态时发生错误
5:从站个数错误
6:从站不匹配
SMB402
第1个从站的状态:
0:没有连接
1:初始化状态
2:预操作状态
4:安全操作
8:操作状态
16#80:产品 ID 不匹配
16#81:厂商 ID 不匹配
16#82:SDO 写入出错
其它:错误的状态
SMB403~SMB465 从站2状态~从站64状态
表 11-5 模块诊断事件
支持的事件类型 类型编码 编码 事件描述模块诊断事件(在特
殊存储区
SMB500 ~
SMB531中显示)
0xC
0x00 模块无故障
0x01 模块忙
0x02 模块超时未响应
0x03 模块类型不匹配
0x04 模块版本不匹配
0x05 软件错误
0x06 模块等待标志超时
0x07 总线应答错误
0x08 总线 CRC 校验错误
0x10 内存偏移量超范围
0x11 模块没有准备好
0x12 模块组态错误
0x13 模块不支持本条指令0x15 模块内部诊断
0x16 模块没有电源
表 11-6 特殊存储区 SMB500~SMB531 诊断功能
SMB 错误
SMB500 第1个模块(Rack0,Slot3)错误
SMB501 第2个模块(Rack0,Slot4)错误
SMB502 第3个模块(Rack0,Slot5)错误
SMB503 第4个模块(Rack0,Slot6)错误
SMB504 第5个模块(Rack0,Slot7)错误
SMB505 第6个模块(Rack0,Slot8)错误
MagicWorks PLC 编程软件用户手册
307
SMB506 第7个模块(Rack0,Slot9)错误
SMB507 第8个模块(Rack0,Slot10)错误
SMB508 第9个模块(Rack1,Slot3)错误
SMB509 第10个模块(Rack1,Slot4)错误
SMB510 第11个模块(Rack1,Slot5)错误
SMB511 第12个模块(Rack1,Slot6)错误
SMB512 第13个模块(Rack1,Slot7)错误
SMB513 第14个模块(Rack1,Slot8)错误
SMB514 第15个模块(Rack1,Slot9)错误
SMB515 第16个模块(Rack1,Slot10)错误
SMB516 第17个模块(Rack2,Slot3)错误
SMB517 第18个模块(Rack2,Slot4)错误
SMB518 第19个模块(Rack2,Slot5)错误
SMB519 第20个模块(Rack2,Slot6)错误
SMB520 第21个模块(Rack2,Slot7)错误
SMB521 第22个模块(Rack2,Slot8)错误
SMB522 第23个模块(Rack2,Slot9)错误
SMB523 第24个模块(Rack2,Slot10)错误
SMB524 第25个模块(Rack3,Slot3)错误
SMB525 第26个模块(Rack3,Slot4)错误
SMB526 第27个模块(Rack3,Slot5)错误
SMB527 第28个模块(Rack3,Slot6)错误
SMB528 第29个模块(Rack3,Slot7)错误
SMB529 第30个模块(Rack3,Slot8)错误
SMB530 第31个模块(Rack3,Slot9)错误
SMB531 第32个模块(Rack3,Slot10)错误
SMB1512~SMB1549 保留
SMB1550~SMB1589 H36-000S2本机 CAN 口信息
SMB1550 主站状态
诊断308
0x00:初始化
0x01:断开连接
0x04:停止
0x05:运行
0x7F:预运行
0xFF:组态数据出错
SMB1551
从站1状态(按节点 ID 排列)
0x00:初始化
0x01:断开连接
0x04:停止
0x05:运行
0x7F:预运行
SMB1552 ~SMB1581
从站2状态(按节点 ID 排列)~从站31状态(按节点 ID 排列)
SMB1582
从站32状态(按节点 ID 排列)
0x00:初始化
0x01:断开连接
0x04:停止
0x05:运行
0x7F:预运行
SMB1583 CAN 模块软件版本号
SMB1584 ~SMB1589 保留
SMB1590~SMB2047 保留
11.1.4 运行模式转换
表 11-7 运行模式转换诊断信息
支持的事件类型 类型编码 编码 事件描述运行模式转换 0x5
0x01 上电事件
0x02 开机事件
0x03 停机事件
11.1.5 同步错误
表 11-8 同步错误诊断信息
支持的事件类型 类型编码 编码 事件描述同步错误 0x6
0x00 无错误
0x01 使用的 DB 块不存在或者使用DB 越界
MagicWorks PLC 编程软件用户手册
309
11.1.6 SOE 事件诊断
SOE 监视记录方式:每个扫描周期监视记录一次。
表 11-9 SOE 事件诊断信息
支持的事件类型 类型编码 编码 事件描述SOE 事件 0xB
BOOL变量状态变化事
件:
(1)DI、DQ状态ON→
OFF,OFF→ON
(2)BOOL 型 ON→
OFF,OFF→ON
扫描周期结束监视事件,最多组态16个 SOE 事件,按顺序编码1-16,可组态过程变量(支持有符号整型,无符号整型,有符号双整型,无符号双整型,浮点型便测量固态,能组态对应事件文本并在诊断信息显示。11.2 时间戳不匹配
以下对话框的警告信息表示:程序块与 PLC 中程序块的时间戳不同,继续操作可能有危险。时间戳不同只是说明程序的最后修改时间不同,并不能说明程序块的内容不相同,此时您可以点击对话框上的【比较】按钮将 PLC 中的程序块上载上来进行比较,一旦比较通过,继续按钮将会使能。或者您可以退出此对话框,选择保存菜单保存项目中的程序块文件,然后回到项目管理器界面执行下载程序块操作,这样可使 PLC 中的程序块和项目中的程序块时间戳相同,从而允许您运行状态。
程序块的时间戳说明:
每个程序包含两个不同的时间戳:创建时间戳和最近修改时间戳。利用【新建】菜单建立程序块时,系统会同时设置块的创建时间戳。用户其后的保存操作会影响最近修改时间戳而不会影响创建时间戳。
备注:加密程序块时间戳一致时可进行程序状态监控。
MagicWorks PLC 编程软件用户手册
310
12 打印
MagicWorks PLC 程序创建成功后,即可使用【打印】功能输出项目文档。 支持打印的项目
打印功能的基本操作
12.1 支持打印的项目
通过打开相关项目,支持打印的项目内容包括:
▪ 程序块(DB 块、OB 块、FB 块、FC 块)
▪ 初始化 V 内存数据块
▪ EasyCAN 组态
▪ 硬件组态
▪ 状态表
▪ 交叉引用(交叉引用、字节引用、位引用、沿使用)
▪ 符号表
12.2 基本操作
参考下文执行打印的基本步骤:
1、打开相应的对象,在屏幕上显示要打印的信息。
2、在应用程序窗口中,使用以下一种方法,打印程序和项目文档。▪ 点击【打印】按钮 。
▪ 菜单项选择【文件】→【打印】菜单命令。
▪ 按 Ctrl+P 捷径键组合。
根据当前所在的应用程序,菜单栏中出现的第一个条目可能不是【文件】,而是该应用程序处理的对象,例如【符号表】。
3、选择打印功能后,弹出打印对话框,用于设置一些参数并打印当前项目文件。
MagicWorks PLC 编程软件用户手册
311
在此,您可以【选择打印机】和设置要打印的【页面范围】,【首选项】用于修改打印选项,【查找打印机】用于查找需要使用的打印机,【份数】用于选择打印的总份数。<备注> 暂不支持选择组件打印。
页面设置
想要设定打印的格式,可以使用页面设置功能。选择【文件】→【页面设置】菜单命令,即可打开页面设置对话框,界面如下图:
【页面设置】对话框允许您配置以下选项:
▪ 纸张:选择纸张尺寸和纸张来源。
▪ 方向:调整页面方向,可选择纵向或横向。
▪ 页边距:调整打印件的左、右、上、下与页边的距离。
打印预览
打印312
如果想在纸张上实际打印之前先查看打印的效果,可以使用打印预览功能。选择【文件】→【打印预览】菜单命令或点击工具栏按钮 ,即可启动打印预览。
通过窗口上方的工具按钮,您可以实现预览页面的放大、缩小,有多页时可以翻页查看,如果效果满意,还可以点击右上方的打印按钮将预览内容打印到纸张上。预览窗口中的各按钮功能如下:
功能 图形 说明
宽度适应 预览文档的显示宽度根据当前预览窗口的大小自动调整页面适应 预览文档的显示大小不随预览窗口的大小调整设置显示比例 选择文档预览时显示的比例(相对文档的实际大小)缩小 每点击此按钮一次,预览文档显示的大小按一定比例缩小放大 每点击此按钮一次,预览文档显示的大小按一定比例放大拉长 预览文档的高度增加
拉宽 预览文档的宽度增加
第一页
切换到文档的第一页预览,当文档数量只有一页时,此按钮无效
上一页
切换到当前页的上一页预览,当文档数量只有一页时,此按钮无效
转到指定页 切换到指定页预览
下一页
切换到当前页的下一页预览,当文档数量只有一页时,此按钮无效
MagicWorks PLC 编程软件用户手册
313
最后一页
切换到文档的最后一页预览,当文档数量只有一页时,此按钮无效
单页显示 预览窗口中每次显示一页文档
双页显示 预览窗口中每次显示两页文档,左右排列页面总览 预览窗口中显示所有的文档,自动排列页面设置 点击进入页面设置对话框
打印 点击进入打印对话框
关闭 关闭预览窗口
MagicWorks PLC 编程软件用户手册
314
13 MQTT 协议
13.1 概述
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于客户端/服务器的发布/订阅(publish/subscribe)模式的通讯协议,该协议构建于TCP/IP协议上。CTH300-H 系列 PLC(固件版本 V2.0 及以上)均支持该协议,目前合信的CPU 只能做客户端。客户端与服务器可实现以下功能:
客户端:发布和订阅
①发布其他客户端可能会订阅的信息;
②订阅其它客户端发布的消息;
③退订或删除应用程序的消息;-----使用指令失能
④断开与服务器连接。-----使用指令失能
<备注> 合信 CPU 只做客户端。
服务器:消息代理(Broker),中转站,分发信息
①接受来自客户的网络连接;
②接受客户发布的应用信息;
③处理来自客户端的订阅和退订请求;
④向订阅的客户转发应用程序消息。
13.2 指令详解
COMM_MQTT(V1.0).ctmwl 库实现的是 MQTT 的客户端功能,包括连接服务器,向主题发布消息,订阅消息等功能。支持连接到一个消息代理,支持订阅 8 个主题。包含的功能块有 MQTT_client-connect、MQTT-publish 以及 MQTT_subcrib,通过功能块可实现 PLC 的 MQTT 协议通信。
MQTT_client-connect(MQTT 客户端连接)
功能:此指令用于连接到 MQTT 服务器。
MagicWorks PLC 编程软件用户手册
315
参数
参数名
输入/
输出
参数描述 类型 备注enable IN 指令执行条件 BOOL
当执行条件由off变on时,执行连接服务器功能。
当执行条件由on变off时,与服务器断开连接。
ipAddress IN 服务器的IP地
址
DWORD MQTT服务器的IP地址。port IN 服务器的端口
号
WORD MQTT服务器的端口号。clientid IN 从站ID的指针 指针
从站ID指针,指向从站ID字符串的变量。系统中有多个从站,建议设成不同的ID。keepAlive IN 保活时间 BYTE 保活时间,单位:秒。username IN 用户名指针 指针 用户名指针,指向用户名字符串的变量。password IN 密码指针 指针 密码指针,指向密码变量的指针。connetid OUT 连接ID DINT 连接ID
connsta OUT 连接状态 BYTE
0:没有连接
1:连接成功
busy OUT 指令执行位 BOOL 当指令执行时,busy位被置位。当指令完成busy复位。err OUT 错误位 BOOL 如果检测到有错误,error位被置位;当指令的执行条件off时,error位被复位。errid OUT 错误代码 WORD 错误代码,详见错误码MQTT-publish(MQTT 消息发布)
功能:此指令用于向相应的主题发布消息,一个服务器可以发送的主题个数不受限制。触发指令后,服务器会收到一条发布消息。
参数
参数名
输入/
输出
参数描述 类型 备注
MQTT协议316
execute IN 指令执行条
件
BOOL 当执行条件由off变on时,执行消息发布connetid IN 连接ID DINT 连接服务器指令生成的id
topic IN 主题指针 指针 指向主题字符串变量的指针。qos IN 消息等级 BYTE
0:【至多一次】(qoS=0),消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
1:【至少一次】(qoS=1),确保消息到达,但消息重复可能会发生。2:【只有一次】(qoS=2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。pmsg IN 消息指针 指针 消息指针,存放发布的消息msglen IN 消息长度 WORD 消息长度
retain IN retain标记 BOOL
retain标记为True,消息将在服务器端保存。MQTT服务器只会为每一个topic保存最近收到的一条retain消息,即客户端再次发布一条新的retain消息时,服务器上原来的retain消息会被覆盖。每当MQTT客户端连接到MQTT服务器并订阅了某个主题,如果该主题下有retain消息,那么MQTT服务器会立即向客户端推送该条retain消息。
done OUT 完成位 BOOL 当消息发布成功done位由off 变为on
当指令的执行条件off时,busy位被复位。busy OUT 指令执行位 BOOL
当指令执行时,busy位被置位。当指令完成busy复位。当指令的执行条件off 时,busy位被复位。err OUT 错误位 BOOL 如果检测到有错误,error位被置位;当指令的执行条件off 时,error位被复位。errid OUT 错误代码 WORD 错误代码,详见错误码提示
如果客户端想让 MQTT 服务器删除某个 topic 下保存的 retained 消息,则需要给MQTT 服务器发送一条 retain 标志位为 1 的空消息。删除了某个 topic 下保存的 retained 消息,若客户端没有再发布retained 消息,则 MQTT 服务器对该 topic 就没有 retained 消息。
举例说明:
retain=1,发布消息 ab,长度为 2 字节,不管先触发订阅还是先触发发布,订阅客户端都收到消息ab。
retain=0,发布消息 cd,长度为 2 字节,先触发订阅,再触发发布,则订阅客户端收到的消息为cd。先触发发布,再触发订阅,则订阅客户端收到的消息为ab。retain=1,发布消息 ef,长度为 0 字节,即可删除服务器中保存的 retain 消息。
MagicWorks PLC 编程软件用户手册
317
retain=0,发布消息 gh,长度为 2 字节,先触发订阅,再触发发布,则订阅客户端收到的消息是gh。先触发发布,再触发订阅,则订阅客户端收不到消息。MQTT_subcrib(MQTT 消息订阅)
功能:此指令用于订阅并接收相应主题的消息。
参数
参数名
输入/
输出
参数描述 类型 备注enable IN 指令执行条件 BOOL
当执行条件由off变on时,执行订阅相应的消息,订阅成功后一直等待并接收订阅的消息。
当执行条件由on变off时,取消订阅相应的消息。
connetid IN 连接ID DINT 连接服务器指令生成的id
topic IN 主题 指针 指向主题字符串变量的指针。qos IN 消息等级 BYTE
0:【至多一次】(QoS=0),消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。1:【至少一次】(QoS=1),确保消息到达,但消息重复可能会发生。2:【只有一次】(QoS=2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
pmsg IN 消息指针 指针 接收消息的指针。done OUT 连接状态 BYTE on:订阅成功
busy OUT 指令执行位 BOOL
当指令执行时。busy位被置位。当指令完成busy复位。当指令的执行条件off时,busy位被复位。
MQTT协议318
err OUT 错误位 BOOL 如果检测到有错误,error位被置位;当指令的执行条件off 时,error位被复位。errid OUT 错误代码 WORD 错误代码,详见表17-1 错误码表recvLen OUT 接收到消息的长
度
WORD 消息长度。
recvid OUT 接收的消息的id WORD 接收的消息的id,每接到一条消息,recvid自动加一。
表 17-1 错误码表
errid 错误详情
0 无错
1 Port 变量错误
2 IP 地址变量错误
3 用户名变量错误
4 密码变量错误
5 从站 ID 变量错误
6 内存分配出错
7 连接忙
8 通讯失败
9 连接 ID 错误
10 主题变量错误
11 消息长度错误
12 消息变量错误
13.3 结合服务器对 MQTT 进行说明
步骤 1 安装服务器(第三方服务器,本例选用 Mosquitto 服务器)直接双击安装文件 进行安装
注意:默认的安装目录有空格,需要修改安装目录,如下图所示,直接选择路径为C:\\mosquitto。
MagicWorks PLC 编程软件用户手册
319
步骤 2 启动服务器
打开运行对话框并输入 cmd,然后输入 cd\\(进入 C 盘)回车,输入cd mosquitto(进入安装目录 mosquitto 文件夹)回车,输入 mosquitto.exe -c mosquitto.conf -v 回车,即可启动服务器,下图表示服务器已经启动。
步骤 3 设置服务器 IP 及端口号
打开服务器安装目录下的 mosquitto.conf 文件,参考格式设置 IP 和端口号,例如任意加入一行listener 1000 192.168.1.150,表示端口号设置为 1000,IP 地址设置为192.168.1.150(IP为本地 IP,也就是安装服务器的电脑的 IP 地址,否则启动服务器会失败,提示请求的地址无效)。步骤 4 设置服务器登录方式
登录服务器有两种方式,一种是匿名登录,另一种是用户名和密码登录。 匿名登录
打开 MQTT 的安装目录,打开 mosquitto.conf 文件,添加 allow_anonymous true,之后退出服
MQTT协议320
务器(通过按键【ctrl+c】退出),再登录服务器(mosquitto.exe -c mosquitto.conf -v)。 设置用户名和密码登录
打开 MQTT 的安装目录,打开 mosquitto.conf 文件并添加以下内容:allow_anonymous false
password_file /mosquitto/pwfile.example
在命令提示符界面输入 mosquitto_passwd -c pwfile.example abc1 回车,之后输入密码1234回车,再输入确认密码 1234 回车即设置成功,即用户名为 abc1,密码为1234。步骤 5 编辑程序
程序示例
网络 1:设置服务器 IP 地址,端口、客户端 ID、用户名以及密码。
网络 2:像主题发布信息,信息长度为 50 字节。
网络 3:订阅信息。
步骤 6 程序下载并读取数据
将程序下载至 PLC,通过初始化 V 数据块,可以直观看到参数值是如何设置的,初始化V数据块中设置的值对应 MQTT 指令的输入参数值。
MagicWorks PLC 编程软件用户手册
321
通过状态表监控,可看到发布指令发布的主题和信息,订阅指令收到发布指令发布的信息,即验证 MQTT 通信成功。
MagicWorks PLC 编程软件用户手册
322
附录
通过本附录您可以快速查阅以下内容:
术语解释
指令集
特殊存储器(SM)标志位
中断事件优先级列表
国际助记符
A 术语解释
表 A-1 专业术语解释
缩写 全称 中文释义AI Analog input 模拟量输入AQ Analog output 模拟量输出CAN Controller Area Network 控制器局域网COB-ID Communication Object Identifier 通信对象ID
DB Data Block 数据块FB Function Block 功能块FBD Function Block Diagram 功能块编程语言FC Function 功能
HSC High-speed counter 高速计数器PTO Pulse Train Output 脉冲串输出PDO Process Data Object 过程数据对象PLC Programmable Logic Controller 可编程控制器STL Statement List 指令表编程语言LAD Ladder Logic 梯形图编程语言IEC
International Electro Technical
Commission
国际电工委员会MES Manufacturing Execution System 制造执行系统NETWORK 梯形图编程中的程序单元,网络
MagicWorks PLC 编程软件用户手册
323
OB Organization Block 组织块OEM Original Equipment Manufacturer 原厂委托制造OPC OLE for Process Control 用于过程控制的OLEPID Proportion Integration Differentiation 比例、积分、微分SDO Service Data Object 服务数据对象SOE Sequence Of Event 事件顺序记录TD2X 文本显示器,显示屏为两行TD4X 文本显示器,显示屏为四行B 指令集
B.1 指令一览表
类别 STL 指令名称
位
逻
辑
指
令
LD 常开触点载入指令
A 常开触点与指令
O 常开触点或指令
LDN 常闭触点载入指令
AN 常闭触点与指令
ON 常闭触点或指令
LDI 常开触点立即指令
AI 常开触点与立即指令
OI 常开触点或立即指令
LDNI 常闭触点立即指令
ANI 常闭触点与立即指令
ONI 常闭触点或立即指令
NOT 逻辑栈顶取反指令
EU 上升沿检测指令
ED 下降沿检测指令
ALD 与载入指令
附录324
OLD 或载入指令
LPS 逻辑进栈指令
LDS 载入堆栈指令
LRD 逻辑读取指令
LPP 逻辑出栈指令
= 输出指令
=I 立即输出指令
S 置位指令
SI 立即置位指令
R 重设指令
RI 立即重设指令
AENO 功率流与指令
NOP 空操作指令
比
较
指
令
LDBx 字节比较(=,<,>,<=,>=,<>)载入指令LDWx 整数比较(=,<,>,<=,>=,<>)载入指令LDDx 长整数比较(=,<,>,<=,>=,<>)载入指令LDRx 浮点数比较(=,<,>,<=,>=,<>)载入指令ABx 字节操作数比较(=,<,>,<=,>=,<>)与指令AWx 整数比较(=,<,>,<=,>=,<>)与指令
ADx 双整数比较(=,<,>,<=,>=,<>)与指令ARx 浮点数比较(=,<,>,<=,>=,<>)与指令OBx 字节操作数比较(=,<,>,<=,>=,<>)或指令OWx 整数比较(=,<,>,<=,>=,<>)或指令
ODx 双整数比较(=,<,>,<=,>=,<>)或指令ORx 浮点数比较(=,<,>,<=,>=,<>)或指令LDSx 字符串比较(=,<>)载入指令
ASx 字符串比较(=,<>)与指令
OSx 字符串比较(=,<>)或指令
传 MOVB 字节移动指令
MagicWorks PLC 编程软件用户手册
325
送
指
令
MOVW 字移动指令
MOVD 双字移动指令
MOVR 浮点数移动指令
BMB 块移动字节指令
BMW 块移动字指令
BMD 块移动双字指令
SWAP 高低字节交换指令
BIR 移动字节立即读指令
BIW 移动字节立即写指令
SRCP 存储配方到存储卡
LRCP 从存储卡装载配方
SDL 存储数据记录到存储卡
整
数
计
算
指
令
+I 整数加法指令
-I 整数减法指令
*I 整数乘法指令
/I 整数除法指令
+D 双整数加法指令
-D 双整数减法指令
*D 双整数乘法指令
/D 双整数除法指令
MUL 整数与双整数相乘
DIV 整数与双整数相除
整
数
计
算
指
令
INCB 字节递增指令
DECB 字节递减指令
INCW 整数递增指令
DECW 整数递减指令
INCD 长整数递增指令
DECD 长整数递减指令
浮 +R 实数加法指令
附录326点数运算指令 -R 实数加法指令 *R 实数乘法指令 /R 实数除法指令 SQRT 平方根指令 SIN 正弦运算指令 COS 余弦运算指令 TAN 正切运算指令 LN 自然对数运算指令 EXP 自然指数运算指令 PID PID 环路运算指令转换指令 BTI 字节至整数转换 ITB 整数至字节转换 ITD 整数至双整数转换 ITS 整数转换为字符串 DTI 双整数至整数转换 DTR 双整数至实数转换 DTS 双整数至字符串 ROUND 进位取整指令 TRUNC 截位取整指令 RTS 实数至字符串转换 BCDI BCD 至整数转换 IBCD 整数至 BCD 转换 ITA 整数至 ASCII 转换 DTA 双整数至 ASCII 转换 RTA 实数至 ASTII 码转换指令 ATH ASCII 至16进制转换 HTA 16进制至 ASCII 转换 STI 字符串至整数转换 STD 字符串至双整数转换
MagicWorks PLC 编程软件用户手册
327
STR 字符串至实数转换
DECO 解码指令
ENCO 编码指令
SEG 段指令
实
时
时
钟
TODR 读取实时时钟
TODW 设置实时时钟
TODRX 读取扩展的实时时钟
TODWX 设置扩展的实时时钟
移
位
循
环
指
令
SLB 向左移位字节
SLW 向左移位字
SLD 向左移位双字
SRB 向右移位字节
SRW 向右移位字
SRD 向右移位双字
RLB 向左旋转字节
RLW 向左旋转字
RLD 向左旋转双字
RRB 向右旋转字节
RRW 向右旋转字
RRD 向右旋转双字
SHRB 移位寄存器位指令
逻
辑
计
算
指
令
INVB 反转字节指令
INVW 反转字指令
INVD 反转双字指令
ANDB 与字节指令
ANDW 与字指令
ANDD 与双字指令
ORB 或字节指令
ORW 或字指令
附录328 ORD 或双字指令 XORB 异或字节指令 XORW 异或字指令 XORD 异或双字指令计数器指令 CTU 向上计数指令 CTD 向下计数指令 CTUD 向上/向下计数指令 HDEF 高速计数器定义 HSC 高速计数器指令 PLS 脉冲输出指令 PTO 脉冲输出指令定时器指令 TON 打开延时计时器 TONR 保留性打开延时计时器 TOF 关闭延时计时器 BITIM 读取开始时间计时器 R_UTIM 读取当前微秒值指令 CITIM 计算间隔时间计时器字符串指令 SLEN 取字符串长度指令 SCPY 复制字符串指令 SSCPY 从字符串复制子字符串指令 SCAT 并置字符串指令 SFND 在字符串中查找字符串指令 CFND 在字符串中查找一个字符指令表指令 FILL 内存填充指令 ATT 增加至表格指令 FNDx 表格查找(=,<,>,<=,>=,<>)指令 FIFO 先入先出指令 LIFO 后入先出指令中 CRETI 从中断程序有条件返回指令
MagicWorks PLC 编程软件用户手册
329
断
指
令
ENI 启用中断指令
DISI 禁用中断指令
ATCH 附加中断指令
DTCH 分离中断指令
CEVNT 清除中断事件指令
程
序
控
制
指
令
FOR FOR-NEXT 循环开始
NEXT FOR-NEXT 循环结束
JMP 跳转至标签指令
LBL 标签指令
WDR 监视器重设指令
DLED 诊断 LED 指令
CALL 调用子例行程序指令
LSCR 载入顺序控制中继
SCRE 顺序控制中继结束
SCRT 顺序控制中继转换
CSCRE 有条件顺序控制中继结束
CRET 从子程序有条件返回指令
END 有条件结束
STOP 停机指令
通
信
指
令
CANW CANopen SDO 写指令
CANR CANopen SDO 读指令
XMT 自由口传输指令
RCV 自由口接收指令
NETR 网络读取指令
NETW 网络写入指令
UDPNETR 以太网网络读功能
UDPNETW 以太网网络写入功能
MBSNDMSG 发送 Modbus 消息
SPA 设置端口指令
附录330
GPA 获得端口地址指令
EBUSR 读取模块信息指令
EBUSW 写入模块信息指令
EBUSGETDIA 获取模块内部诊断信息指令
EBUSSNDCMD 发送模块操作命令指令
B.2 指令详解
位逻辑指令
标准触点指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表:
LD bit
A bit
O bit
LDN bit
AN bit
ON bit
梯形图:
输入输出参数 数据类型 适用操作数
位 BOOL I, Q, M, SM, T, C, V, S, L
操作数说明:如果参数 bit 的数据类型为 I 或 Q,标准触点指令从内存或过程映象寄存器读取引用值。
功能说明:
当参数位变量 bit 为 1 时,常开触点(LD、A、O)接通。
当参数位变量 bit 为 0 时,常闭触点(LDN、AN、ON)接通。
在 STL 中,常开触点用载入(LD)、与(A)、或(O)指令表示,常开指令将地址位数值置于栈顶。
常闭触点由负装载(LDN)、与非(AN)、或非(ON)指令表示,常闭指令将地址位数值的逻辑非置于栈顶。
在 LAD 中,常开和常闭指令用触点表示。
示例程序:
STL:
ORGANIZATION_BLOCK 主程序:OB1
MagicWorks PLC 编程软件用户手册
331
Network 1
LD I0.0
A I0.1
O I0.2 = Q0.0 //如果 I0.0 与 I0.1 同时为 1,或者 I0.2 为 1,则 Q0.0 点亮Network 2
LDN I1.0
AN I1.1
ON I1.2 = Q1.0 //如果 I1.0 与 I1.1 同时为 0,或者 I1.2 为 0,则Q1.0 点亮梯形图:
ORGANIZATION_BLOCK 主程序:OB1
立即触点指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表:
LDI bit
AI bit
OI bit
LDNI bit
ANI bit
ONI bit
梯形图:
输入输出参数 数据类型 适用操作数
位 BOOL I
功能说明:
当实际输入点为 1 时,立即常开触点(LDI、AI、OI)接通。
附录332
当实际输入点为 0 时,立即常闭触点(LDNI、ANI、ONI)接通。
立即指令执行时获取实际输入值,不更新 CPU 进程映象寄存器。立即触点的参数值会立即更新,而不依赖于 CPU 的扫描周期。
在 STL 中,立即常开触点用立即载入(LDI)、立即与(AI)和立即或(OI)指令表示,立即常开指令立即将实际输入值装载、与、或至栈顶。
立即常闭触点用立即载入非(LDNI)、立即与非(ANI)和立即或非(ONI)指令表示,立即常闭指令立即将实际输入点数值的逻辑非装载、与、或至栈顶。
在 LAD 中,立即常开和立即常闭指令用触点表示。
取反指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: NOT
梯形图:
输入输出参数 数据类型 适用操作数
无 无 无
功能说明:
取反(NOT)触点将输入的使能位状态取反。当使能位为 1,取反(NOT)触点断开,当使能位为 0,取反(NOT)触点接通。
在 STL 中,取反(NOT)指令将堆栈顶部的数值从 0 改变为 1,或从1 改变为0。在 LAD 中,取反(NOT)指令用触点表示。
边沿检测指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表:
EU
ED
梯形图:
输入输出参数 数据类型 适用操作数
无 无 无
功能说明:
上升沿检测(EU)指令比较本次扫描与上次扫描的输入能流的变化,如能流有上升沿变化时(OFF→ON),将能流置为 ON 状态一个扫描间隔;其他情况下将能流置为OFF 状态。
MagicWorks PLC 编程软件用户手册
333
下降沿检测(ED)指令比较本次扫描与上次扫描的输入能流的变化,如能流有下降沿变化时(ON→OFF),将能流置为 ON 状态一个扫描间隔;其他情况下将能流置为OFF 状态。在 STL 中,上升沿检测指令一旦在堆栈顶部数值中检测到 0 至 1 转换时,则将堆栈顶值设为1;否则,将其设为 0。
下降沿检测指令一旦在堆栈顶部数值中检测到 1 至 0 转换时,则将堆栈顶值设为1;否则,将其设为 0。
对于运行时编辑操作,您必须为边沿检测指令输入一个参数。有关详情,请参阅在运行模式中进行程序编辑。
在 LAD 中,边沿检测指令用触点表示。提示
因为边沿检测指令要求执行【打开至关闭】或【关闭至打开】转换,所以无法在首次扫描时检测上升沿或下降沿。在首次扫描中,CTSC-200 设置由这些指令指定的位状态。在其后的扫描中,这些指令才能检测到指定位的转换。
逻辑堆栈指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表:
ALD
OLD
LPS
LDS n
LRD
LPP
梯形图: 梯形图无此指令
输入输出参数 数据类型 适用操作数
LDS 指令操作数 n 无 常数(0~8)
功能说明:
与载入指令(ALD)采用逻辑与操作将堆栈第一级和第二级中的数值组合,并将结果载入堆栈顶部。执行 ALD 后,堆栈深度减 1。
或载入指令(OLD)采用逻辑或操作将堆栈第一级和第二级中的数值组合,并将结果载入堆栈顶部。执行 OLD 后,堆栈深度减 1。
逻辑进栈指令(LPS)复制堆栈中的顶值并使该数值进栈。堆栈底值被推出栈并丢失。逻辑出栈指令(LPP)将堆栈中的一个数值出栈。第二个堆栈数值成为堆栈新顶值。逻辑读取指令(LRD)将第二个堆栈数值复制至堆栈顶部。不执行进栈或出栈,但旧堆栈顶值被复制破坏。
载入堆栈指令(LDS)复制堆栈中的堆栈位 n,并将该数值置于堆栈顶部。堆栈底值被推出栈并丢失。
附录334
输出指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: = bit
梯形图:
输入输出参数 数据类型 适用操作数
输出位 bit BOOL I, Q, M, SM, T, C, V, S, L
使能位(LAD) BOOL 使能位
功能说明:
输出指令(=)将输出位的新数值写入过程映像寄存器。
在 STL,位于堆栈顶端的数值被复制至指定的位。
在 LAD 中,当输出指令被执行时,CPU 将过程映像寄存器中的输出位打开或关闭,指定的位被设为等于使能位。
立即输出指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表:
=I bit
梯形图:
输入输出参数 数据类型 适用操作数
输出位 bit BOOL Q
使能位(LAD) BOOL 使能位
功能说明:
执行指令时,立即输出指令(=I)将新值写入实际输出和对应的过程映像寄存器位置。执行【立即输出】指令时, 实际输出点的值被立即设为等于使能位。\"I\"表示立即输出;执行指令时,新值被写入实际输出和对应的过程映像寄存器位置。这与非立即输出不同,非立即输出仅将新值写入过程映像寄存器而不马上更新实际输出。
对于 STL,立即输出指令将位于堆栈顶端的数值复制至指定的实际输出位bit。置位复位指令
设置 ENO = 0的错误条件 0006(间接地址)、 0091(操作数超出范围)影响的特殊内存位 无
MagicWorks PLC 编程软件用户手册
335
指令列表:
S bit, n
R bit, n
梯形图:
输入输出参数 数据类型 适用操作数
位 bit BOOL I, Q, M, SM, T, C, V, S, L
位数 n 字节 VB, IB, QB, MB, SMB, SB, LB, AC, 常数, *VD, *AC, *LD功能说明:
当能流有效时,置位打开或复原从指定地址 bit 开始的 n 个点,最多可以置位和复位255个点。如果【复位】指令指定一个定时器位(T)或计数器位(C),指令将复位定时器或计数器位,并清除定时器或计数器的当前值。
立即置位复位指令
设置 ENO = 0的错误
条件
0006(间接地址)、0091(操作数超出范围)影响的特殊内存位 无
指令列表:
SI bit, n
RI bit, n
梯形图:
输入输出参数 数据类型 适用操作数
位 bit BOOL Q
位数 n 字节 VB, IB, QB, MB, SMB, SB, LB, AC, 常数, *VD, *AC, *LD功能说明:能流有效时,立即置位指令(SI)和立即复位指令(RI)将立即置位打开或复位清零从指定地址 bit 开始的 n 个点,可以置位或复位 1 至 128 个点。执行立即置位复位指令时,新值被写入实际输出点和相应的过程映象寄存器位置。这与非立即指令不同,非立即指令只将新值写入过程映象寄存器而不会在扫描周期中立即更新物理输出点。
功率流与指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表:
AENO
梯形图: 梯形图无此指令
输入输出参数 数据类型 适用操作数
附录336
无 无 无
功能说明:AENO 是 ENO 位的逻辑与运算,运算的结果放入栈顶。ENO 是LAD中指令盒的布尔输出。如果指令盒在 EN 输入位置被使能而且执行时无错,则 ENO 输出向下一个指令盒传递能流。ENO 位用于堆栈顶部,影响其后指令执行的使能位。STL 指令没有EN 输入;堆栈顶值必须为逻辑 1,有条件指令才能执行,STL 中也没有 ENO 输出,但采用AENO 指令可存取ENO输出位。AENO 可用于生成与方框 ENO 位相同的效果。
空操作指令
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: NOP n
梯形图:
输入输出参数 数据类型 适用操作数
n 字节 常数(0~255)
功能说明:
空操作指令(NOP)对用户程序执行空操作,可以用在用户程序需要短暂延时的地方。复位主双稳态触发器
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表: STL 中不存在此指令
梯形图:
输入输出参数 数据类型 适用操作数
S BOOL Power Flow
R1 BOOL Power Flow
xxx BOOL I, Q, M, V, S
OUT BOOL Power Flow
功能说明:复原主双稳态触发器(RS)是一种复原主要位的锁存器。如果设置(S)和复原(R)信号均为真实,则输出(OUT)为虚假。【位】参数指定被设置或复原的布尔参数。供选用输出反映位参数的信号状态。
MagicWorks PLC 编程软件用户手册
337
设置主双稳态触发器
设置 ENO = 0的错误条件 无
影响的特殊内存位 无
指令列表:
STL 中不存在此指令
梯形图:
输入输出参数 数据类型 适用操作数
S1 BOOL Power Flow
R BOOL Power Flow
xxx BOOL I, Q, M, V, S
OUT BOOL Power Flow
功能说明:设置主双稳态触发器(SR)是一种设置主要位的锁存器。如果设置(S1)和复原(R)信号均为真实,则输出(OUT)为真实。【位】参数指定被设置或复原的布尔参数。供选用输出反映位参数的信号状态。比较指令
字节比较指令
设置 ENO = 0的错误条件 非法间接地址
影响的特殊内存位 无
指令列表:
LDB= IN1, IN2
AB= IN1, IN2
OB= IN1, IN2
LDB<> IN1, IN2
AB<> IN1, IN2
OB<> IN1, IN2
LDB>= IN1, IN2
AB>= IN1, IN2
OB>= IN1, IN2
LDB<= IN1, IN2
AB<= IN1, IN2
OB<= IN1, IN2
LDB> IN1, IN2
AB> IN1, IN2
OB> IN1, IN2
附录338
LDB< IN1, IN2
AB< IN1, IN2
OB< IN1, IN2
梯形图:
输入输出参数 数据类型 适用操作数
IN1 字节 IB, QB, MB, SMB, VB, SB, LB, AC, 常数, *VD, *LD, *ACIN2 字节 IB, QB, MB, SMB, VB, SB, LB, AC, 常数, *VD, *LD, *AC功能说明:
无论使能位状态如何,\"比较\"指令均会执行。字节比较指令用于比较两个字节型的值,字节比较不带符号。
在 STL 中,比较结果为真时,栈顶为 1。
在 LAD 中,比较结果为真时,触点打开。
<注意> 执行比较指令时如出现以下错误为致命错误,会使 CTSC-200 立即停止执行程序: 非法间接地址
比较实数指令中存在非法实数(例如,NAN)
为防止出现以上错误,请确保在使用比较指令前指针已正确初始化并且参数中不存在非法实数。双整数比较指令
设置 ENO = 0的错误条件 非法间接地址
影响的特殊内存位 无
指令列表:
LDD= IN1, IN2
AD= IN1, IN2
OD= IN1, IN2
LDD<> IN1, IN2
AD<> IN1, IN2
OD<> IN1, IN2
LDD>= IN1, IN2
AD>= IN1, IN2
OD>= IN1, IN2
LDD<= IN1, IN2
AD<= IN1, IN2
OD<= IN1, IN2
LDD> IN1, IN2
AD> IN1, IN2
OD> IN1, IN2
LDD< IN1, IN2
MagicWorks PLC 编程软件用户手册
339
AD< IN1, IN2
OD< IN1, IN2
梯形图:
输入输出参数 数据类型 适用操作数
IN1 双整数 ID, QD, MD, SD, SMD, VD, LD, HC, AC, 常数, *VD, *LD, *ACIN2 双整数 ID, QD, MD, SD, SMD, VD, LD, HC, AC, 常数, *VD, *LD, *AC功能说明:
无论使能位状态如何,【比较】指令均会执行。双整数比较指令用于比较两个双整型的值,双整数比较带符号(如 16#7FFFFFFF > 16#80000000,因为 16#80000000 为负)。在 STL 中,比较结果为真时,栈顶为 1。
在 LAD 中,比较结果为真时,触点打开。
<注意> 执行比较指令时如出现以下错误为致命错误,会使 CTSC-200 立即停止执行程序: 非法间接地址
比较实数指令中存在非法实数(例如,NAN)
为防止出现以上错误,请确保在使用比较指令前指针已正确初始化并且参数中不存在非法实数。字符串比较指令
设置 ENO = 0的错
误条件
非法间接地址
遇到长度超过254个字符的字符串字符串的起始地址和长度无法放入一个指定的内存区影响的特殊内存位 无
指令列表:
LDS= IN1, IN2
AS= IN1, IN2
OS= IN1, IN2
LDS<> IN1, IN2
AS<> IN1, IN2
OS<> IN1, IN2
梯形图:
输入输出参数 数据类型 适用操作数
IN1 字符串 VB, 常数字符串, LB, *VD, *LD, *AC
附录340
IN2 字符串 VB, LB, *VD, *LD, *AC
ASCII 常数字符串数据类型的格式:
字符串是一系列字符和对应的内存地址,每个字符作为一个字节存储。字符串的第一个字节是定义字符串长度(即字符数)的整数。如果常数字符串被直接输入程序编辑器或数据块,那么该字符串必须用双引号字符起始和结束 (\"字符串常数\")。
字符串的最大长度是 255 个字节(254 个字符加上长度字节)。下面的内存图显示了字符串数据类型的格式(一个方格代表一个字节):
功能说明:
无论使能位状态如何,【比较】指令均会执行。字符串比较指令用于比较两个字符串是否相同。在 STL 中,比较结果为真时,栈顶值为 1。
在 LAD 中,比较结果为真时,触点打开。
<注意> 执行比较指令时如出现以下错误为致命错误,会使 CTSC-200 立即停止执行程序: 非法间接地址
长度超过 255 个字符的字符串
字符串的起始地址和长度无法放入一个指定的内存区
为了防止出现以上错误,请确保在使用比较指令前指针和存放 ASCII 字符串的内存位置已正确初始化并且为 ASCII 字符串保留的缓冲区可完全放置在指定的内存区中。整数比较指令
设置 ENO = 0的错误条件 非法间接地址
影响的特殊内存位 无
指令列表:
LDW= IN1, IN2
AW= IN1, IN2
OW= IN1, IN2
LDW<> IN1, IN2
AW<> IN1, IN2
OW<> IN1, IN2
LDW>= IN1, IN2
AW>= IN1, IN2
OW>= IN1, IN2
LDW<= IN1, IN2
AW<= IN1, IN2
OW<= IN1, IN2
LDW> IN1, IN2
AW> IN1, IN2
OW> IN1, IN2
LDW< IN1, IN2
AW< IN1, IN2
OW< IN1, IN2
MagicWorks PLC 编程软件用户手册
341
梯形图:
输入输出参数 数据类型 适用操作数
IN1 整数
IW, QW, MW, SW, SMW, T, C, VW, LW, AIW, AC, 常数, *VD, *LD,*AC
IN2 整数
IW, QW, MW, SW, SMW, T, C, VW, LW, AIW, AC, 常数, *VD, *LD,*AC
功能说明:
无论使能位状态如何,\"比较\"指令均会执行。整数比较指令用于比较两个整数型的值,整数比较带符号(如 16#7FFF > 16#8000,因为 16#8000 为负)。
在 STL 中,比较结果为真时,栈顶为 1。
在 LAD 中,比较结果为真时,触点打开。
<注意> 执行比较指令时如出现以下错误为致命错误,会使 CTSC-200 立即停止执行程序: 非法间接地址
比较实数指令中存在非法实数(例如,NAN)
为防止出现以上错误,请确保在使用比较指令前指针已正确初始化并且参数中不存在非法实数。实数比较指令
设置 ENO = 0的错误条件
非法间接地址
非法实数
影响的特殊内存位 无
指令列表:
LDR= IN1, IN2
AR= IN1, IN2
OR= IN1, IN2
LDR<> IN1, IN2
AR<> IN1, IN2
OR<> IN1, IN2
LDR>= IN1, IN2
AR>= IN1, IN2
OR>= IN1, IN2
LDR<= IN1, IN2
AR<= IN1, IN2
OR<= IN1, IN2
LDR> IN1, IN2
AR> IN1, IN2
OR> IN1, IN2
LDR< IN1, IN2
AR< IN1, IN2
OR< IN1, IN2
梯形图:




