拓冰建站拓冰建站
首页 / 资讯中心 / 正文

【非标自动化】3、AutoShop快速理解(系统变量表)

这些“系统变量表”不只是给你看的它们本质上是 AutoShop 已经预先定义好的一批特殊变量用来让程序访问 PLC 自身的状态、通信状态、模块状态和系统参数。可以先把变量分成两类普通变量由用户自己定义 系统变量由PLC系统提前定义例如普通变量 StartButton CylinderExtend ProductCount 系统变量 PLC运行状态 当前错误列表 串口通信状态 EtherCAT主站状态 系统时钟系统变量可以理解为PLC操作系统向用户程序开放的一组“系统接口”。它很像手机或电脑系统提供的系统API只不过在PLC里表现为变量、结构体和软元件。一、这些变量到底是查看还是修改答案是有些主要用来读取有些允许写入有些虽然能写但不应该随便修改。不能看到变量表就认为所有内容都可以任意修改。大致可以分成三类。1. 只读状态变量这类变量由PLC系统自动更新程序主要读取。例如PLC当前是否运行当前错误列表EtherCAT主站状态EtherCAT从站状态以太网诊断信息扩展模块状态当前扫描周期通信连接状态。例如截图中的_ECATMaster EtherCAT Master运行状态 _ECATSlave EtherCAT从站运行状态 _CurErrLst 当前错误列表 _DevInfo 设备信息 _EthernetDiag 以太网诊断信息这些数据一般是PLC系统写入 用户程序读取例如程序可以判断如果EtherCAT主站故障 设备停止运行 报警灯亮但用户通常不应该直接把“主站正常状态”强行写成正常因为真实硬件可能仍然处于故障状态。2. 参数设置变量这类变量用于配置某些系统功能允许用户写入。例如截图中的_COMSet _COMProtocolSet注释分别是串口参数设置 串口不同协议的参数设置里面可能包含波特率数据位停止位校验方式协议类型Modbus站号通信超时时间。这种变量可以理解为用户写入配置 PLC系统按照配置工作但是通常不建议直接在程序里随意修改而是先通过AutoShop的通信配置页面进行配置。只有项目确实需要运行过程中动态改变通信参数时才考虑用程序修改。3. 系统控制或标志变量有些系统变量既可以读取也可能通过写入触发某个动作。例如清除错误复位某项诊断更新某个系统参数启用或关闭某项功能。这一类必须查具体变量说明不能只看变量名猜。因此使用系统变量前最好确认它是只读还是可写 写入后会发生什么 什么数据类型 什么时候生效 是否需要重新上电二、“掉电保持”这一列是什么意思截图中有保持 不保持这里不是表示能否修改而是表示PLC断电以后这个变量的内容是否保存。例如不保持PLC断电后数据可能丢失或重新由系统生成。例如当前通信状态当前错误状态当前运行状态当前扫描周期。这些本来就是实时状态重新上电后应该重新计算。保持PLC掉电后设置值仍然保存。例如截图中的串口配置_COMSet _COMProtocolSet标记为“保持”因为波特率、协议等设置不能每次断电后都恢复成空值。所以保持 ≠ 可写 不保持 ≠ 只读它只表示断电后的保存特性。三、系统变量表中的“数据类型”为什么都很奇怪截图中有很多类似_sCAN _sCOM _sMB_MST _sETCMS... _sETHERNET它们不是简单的BOOL或INT而是系统预定义的结构体。例如_COM不是一个单独数字而可能包含_COM ├── 通信是否正常 ├── 发送状态 ├── 接收状态 ├── 错误码 ├── 接收字节数 └── 当前协议状态可以把它理解成一个“通信状态对象”。类似C语言中的struct COMInfo { bool connected; int errorCode; int rxCount; int txCount; };PLC程序中可能通过成员访问例如概念上_COM.ErrorCode _COM.RxCount具体成员名称要展开数据类型或查看帮助文档。因此系统变量表里看到的很多变量不是一个值而是一整组相关数据。四、各个系统变量分类大致表示什么你截图中主要有以下几组。1._SYS_CAN这一组表示CAN总线相关信息。截图中有_CAN _CANLink _CANOpen分别可以理解为_CANCAN接口的基础状态例如CAN接口是否正常是否发生总线错误接收、发送状态错误计数总线是否关闭。_CANLink汇川CANlink协议的运行信息。CANlink是汇川基于CAN总线的通信方式可能用于汇川PLC、伺服或其他汇川设备之间的通信。_CANOpenCANopen协议的运行信息。CANopen是一种标准工业通信协议常用于伺服编码器I/O模块驱动器。简单理解_CAN底层CAN接口 _CANLink汇川自己的CAN通信 _CANOpen标准CANopen通信普通按钮点灯Demo暂时用不到。2._SYS_COM这一组表示串口及串口协议的实时信息。截图中按串口编号列出了大量变量_COM _MbMst _MbSlv _SerialSR _MbMstEx然后还有_COM1 _COM2 _COM3 ……可以理解为每一个串口都配了一套状态变量。例如串口0可能有_COM 串口0基础信息 _MbMst 串口0作为Modbus主站的信息 _MbSlv 串口0作为Modbus从站的信息 _SerialSR 串口0自由协议收发信息 _MbMstEx 串口0 Modbus主站扩展信息Modbus主站PLC主动向其他设备发出请求。例如PLC → 读取变频器频率 PLC → 写入温控器目标温度Modbus从站PLC等待其他设备读取或写入。例如HMI → 读取PLC数据 上位机 → 修改PLC参数串口自由协议不是使用标准Modbus而是自己按照设备协议发送和接收字节。例如某仪表协议规定AA 01 03 00 FFPLC就按照这个格式收发。这一组大部分变量主要用于查看串口运行状态判断通信是否完成获取通信错误码查看主从站状态调试通信问题。3._SYS_COM_SAVE这一组表示串口配置参数而且截图里“掉电保持”为保持。例如_COMSet _COMProtocolSet _COM1Set _COM1ProtocolSet ……可以理解为_COMSet串口本身参数 _COMProtocolSet串口所使用协议的参数串口本身参数可能包括波特率数据位停止位校验方式。协议参数可能包括使用Modbus还是自由协议Modbus站号主站或从站超时时间。这一组与_SYS_COM的区别是_SYS_COM 现在运行得怎么样 _SYS_COM_SAVE 串口配置成什么样可以类比_COMSet ≈ 设置页面 _COM ≈ 实时状态页面4._SYS_ECAT_MASTER这一组表示EtherCAT主站状态。截图中_ECATMaster注释为EtherCAT Master运行状态如果Easy PLC作为EtherCAT主站它会管理伺服驱动器远程I/OEtherCAT从站模块。这个结构体里可能包含主站是否运行网络是否正常当前从站数量是否有从站掉线EtherCAT状态机状态错误码总线周期状态。程序可以利用它实现如果EtherCAT网络未进入正常运行状态 禁止伺服动作 触发总线报警它主要是运行状态通常以读取为主。5._SYS_ECAT_SLAVE这一组表示PLC作为EtherCAT从站时的状态。截图中有_RTU_ECT_INFO _ECATSlave其中_ECATSlave表示EtherCAT从站运行状态。也就是说PLC不一定总是当主站它也可能被更上层控制器当作从站。例如上位运动控制器EtherCAT主站 ↓ Easy PLCEtherCAT从站_RTU_ECT_INFO从注释看与GI20 EtherCAT耦合器参数信息有关属于具体硬件配套信息。普通Easy523基础学习暂时可以忽略这一组。6._SYS_ETHERNET这一组表示网口和以太网协议的信息。截图中包括_Ethernet _MbTcpMst _MbTcpSlv _EthIPScanner _MbTcpMstEx _EthIPTask _FinsSlv _OpcUAServer _McSlv _EthernetDiag _EthIPSysDiag _EthIPConnDiag可以按层次理解。_Ethernet网口基础信息例如IP状态链路是否连接网线是否插入收发状态网络错误。_MbTcpMstModbus TCP主站信息。PLC主动通过以太网访问其他设备。_MbTcpSlvModbus TCP从站信息。其他设备通过网络读取PLC。_EthIPScannerEtherNet/IP扫描器信息。这里的Scanner相当于EtherNet/IP中的主动控制方类似主站角色。_EthIPTaskEtherNet/IP任务统计信息。用于查看EtherNet/IP任务是否正常、执行次数、错误等。_FinsSlvFINS TCP/UDP从站信息。FINS是欧姆龙常见的通信协议汇川PLC可能提供兼容通信接口。_OpcUAServerOPC UA服务器信息。PLC作为OPC UA服务器对上位机、SCADA或MES提供数据。_McSlvMC TCP/UDP从站信息。MC协议常见于三菱PLC通信生态用于兼容相关上位机或设备。_EthernetDiag以太网诊断信息。_EthIPSysDiagEtherNet/IP扫描器系统诊断信息。_EthIPConnDiagEtherNet/IP连接诊断信息。这一组可以概括为网口有没有正常工作 各种网络协议有没有正常工作 具体连接有没有报错7._SYS_INFO这一组是最基础、最值得初学阶段关注的系统信息。截图中包括_DevInfo _OSM _Program _CurErrLst _DateTime _M8000D8000 _LemStation _FPGA _PanelTest _CmpLst _GI20_ExtSlt _ExtCardInfo _ExtCard _LemStationLFR _OfflineTrace还有一些经典软元件M8000 M8001 M8002 M8003 M8011 M8012 M8013 M8014 ……_DevInfo设备信息例如PLC型号硬件版本固件版本序列号。_OSM系统监视器信息可能包括扫描周期CPU负载系统运行状态内存使用情况。_Program用户程序信息例如程序状态程序容量工程标识运行情况。_CurErrLst当前错误列表。这是调试时很实用的变量可以查看当前系统存在什么错误。_DateTimePLC当前日期和时间。可以用于生产记录时间段控制报警时间戳定时任务。五、M8000、M8001这些是什么这些属于PLC预定义的特殊辅助继电器也属于系统变量。它们虽然叫“M”但不是普通用户随便使用的M地址。截图中的注释已经给出了用途。M8000程序运行标志截图注释程序运行标志运行ON停止OFF也就是说PLC处于RUN状态 → M8000 ON PLC处于STOP状态 → M8000 OFF可以用它作为程序运行条件但通常程序在STOP状态本来就不执行。M8001程序停止标志截图注释程序停止标志停止ON运行OFF它与M8000相反。M8002运行第一个扫描周期标志截图注释程序运行第1个扫描周期标志 运行第1个扫描周期为ON否则为OFF这是非常实用的系统位。PLC刚从STOP切换到RUN时第一次扫描M8002 ON 之后扫描M8002 OFF可以用于初始化M8002 ↓ 初始化参数 清空临时状态 设置默认模式它类似普通软件中的初始化函数M8003非首个扫描周期标志截图注释表示第一个扫描周期为OFF 后续扫描周期为ON它与M8002基本相反。M8011、M8012、M8013、M8014周期时钟截图中分别表示M801110ms周期时钟 M8012100ms周期时钟 M80131s周期时钟 M80141分钟周期时钟这里不是说每10ms一直保持ON而是系统按照一定周期切换ON/OFF形成周期脉冲或方波。例如M8013可以用于每隔一定时间闪烁一次指示灯 产生简单周期动作 进行低频状态更新不过需要注意它具体是每周期翻转还是只产生一个扫描脉冲要以手册对对应PLC的详细说明为准。M8020、M8021、M8022计算结果标志截图中有M8020计算零位标志 M8021计算借位标志 M8022计算进位标志这与算术运算有关。例如计算结果是否为0减法是否发生借位加法是否发生进位。现代PLC程序里很多时候可以直接比较结果不一定经常直接使用这些系统位。M8029多周期指令执行完成标志某些指令不是一个扫描周期内完成的。例如复杂通信 数据处理 某些运动或文件操作执行完成后系统可能通过这个标志通知程序。六、_SYS_PN是什么从截图里的内容看它主要包含两部分PN Stack运行参数 远程模块、扩展模块的数据区PN通常指PROFINET。PROFINET是工业以太网协议常用于PLC远程I/O伺服工业设备组网。截图中大量类似_MOD1600END _MOD3200END _MOD4AD _MOD4DA _share_in32_real _share_out64_int这些变量多半是为特定远程I/O模块或扩展模块准备的数据映射区。例如16通道数字量输入模块DI 16通道数字量输出模块DO 4通道模拟量输入模块AI 4通道模拟量输出模块AO 温度模块可以理解为现场远程I/O模块 ↓ 网络 PLC中的系统变量数据区 ↓ 用户程序读取或写入例如远程DI模块采集的16个输入 ↓ 映射到某个系统数组 ↓ PLC程序读取这些BOOL值这一组通常只有使用对应的PROFINET、远程I/O或特定扩展模块时才会接触。基础Easy523 Demo暂时不用研究。七、系统变量应当怎样使用可以遵循一个原则不清楚用途的系统变量不要直接修改需要系统状态时读取需要系统配置时通过配置页面设置。初学阶段重点掌握以下几个即可M8002首次扫描 M8011/M8012/M8013周期时钟 _DateTimePLC日期时间 _CurErrLst当前错误列表 _DevInfoPLC设备信息以后学习通信时再认识_COM串口状态 _MbMstModbus RTU主站状态 _MbSlvModbus RTU从站状态 _Ethernet网口状态 _MbTcpMstModbus TCP主站状态 _MbTcpSlvModbus TCP从站状态学习EtherCAT时再认识_ECATMaster _ECATSlave没有必要现在逐项学习整张系统变量表。八、最后用一句话概括系统变量表相当于PLC内部的一套“系统状态和系统接口目录”系统状态类 PLC现在怎么样 通信状态类 串口、网口、总线现在怎么样 系统参数类 通信和系统被配置成什么样 模块映射类 扩展模块的数据存放在哪里 特殊标志类 首次扫描、周期时钟、运算结果等它们既不是普通用户变量也不只是静态说明文档。程序可以根据需要读取其中的状态其中一部分配置变量也允许写入但任何系统变量在修改前都应先确认手册是否说明其为可写变量以及写入后会产生什么效果。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门