AI 摘要

PLC 学习笔记 四:指令知识提供了关于PLC程序中启动方式的详细指南。文中介绍了暖启动和冷启动的区别,以及不同类型的区块和存储区的功能。此外,该文章还涵盖了数据类型、常规输入输出、运算符、定时器以及计数器的使用方法和特点。通过阐述这些内容,读者可以更好地了解如何在PLC程序中使用和配置不同的指令来实现所需的控制功能。
  • 启动
    • 暖启动(默认)-程序执行在调用第一个启动 OB 时开始,所有非保持性位存储器内容都将被删除,并且所有非保持性数据块内容将被复位为程序设定的起始值;保持性位存储器和保持性数据块中的内容将被保留
    • 冷启动(CPU自检)-从头开始重新执行程序,不论是否是保持行数据,所有数据都被重置为存储在程序中的起始值 当电源关闭时CPU处在“STOP”操作模式,则断电后重新上电的启动方式为冷启动
  • 区块
    • OB组织块-系统和程序接口相当于BIOS(设置时必须是OB200或更大)
    • FB功能块-编好的程序块(内置+自定义) FC与FB功能相同但FB中数据可保存在DB块中而FC不能且FC不可重复调用
    • OB数据块-分为DB(断电保护)存储转运数据 ,DI 仅FB能调用
  • 存储区
    • 数据类型: 位(bit) Bool 1 字节 Byte 8 有符号字节 Slnt 8 (平分正数到复数) 无符号字节 Uslnt 8 字 Word 16 双字 Dword 32 整数 Int 16 (平分正数到复数) 双整数 Dint 32 (平分正数到复数) 无符号整数 Uint 16 无符号双整数 Udint 32 浮点数 Real 32 双精度浮点数 Lreal 64 (MD32 36 40 ) 字符 Char 8 字符串 String 0-254字节 时间 Time 32 MS S M H D(最大24Day) I/Q 0.0 0.1 0.2-位(BOOL) M 0.0 0.1 0.2-位(BOOL) MB 0 1 2 3-字节 (byte8位0-255) MW 0 2 4 6-字 (Word16位0-65535) 常用于储存数值XXX MD 0 4 8-双字 (Dword32位0-42亿) |P| 沿触发 下方填 MXX.X DONE 状态位 MXX.X BUSY 状态位 MXX.X ERROR 错误位 MXX.X ErrorID 错误信息 MWXXX ErrorBits 错误代码 MWXXX STATUS 状态信息 MWXXX STATE 运行状态 MWXXX VALUE 反馈信息 MDXXX Position 当前位置 MDXXX QB0设为二进制10000000中1是0.7最后一位是0.0 ADDR/RD P#DB3.DBX0.0 BYTE 10 DB块访问格式为P#DB3.DBX0.0 INT 1 P#为指针寻址,变量包含了目标数据的地址,需要间接查询 :p为直接寻址,不经过过程映像区,可直接根据变量名称找到数据
    • I-输入寄存器 Q-输出寄存器 V-(断电保护)变量存储器 M-内部标志位存储区字节数大,功能和V一样但没有断电保护)SM-特殊标志位存储器 L部分存储器
  • 常规
    • DI-开关量输入 DQ-开关量输入 AI-模拟量输入 AQ-模拟量输出
    • IB0-I区(i0.0-i0.7)QB0-Q区(Q0.0-Q0.7) 系统时钟存储器中M1.0FirstScan首次循环为上电后接通一次 仿真I区:转至离线->SIM表格->添加地址 或 在监控与强制表中修改强制表 或将I区改为M区 轮询-客户端按规定时间定时向服务端发送请求,服务器接到请求后马上返回响应信息并关闭连接 帮助-右击不明白的指令后按F1
  • 运算符 置位输出只有复位才能停止 上升沿或下降沿符号下方需填入一个M存储区 程序中不能出现双线圈(一个线圈只能出现一次) 置复位位域下方填入(后续)位数(连续),一次控制多个口 限制两冲突程序可在另一程序中加入对应本程序的常闭触点 SR置复位优先(1所在的地方为优先)上升沿触发上方填I区下方填M区 一键启停电路应在SR1的R1所在路上加入对应Q段常闭触点,在RS1的S1所在路上加入对应Q段常开触点(两个上升沿上方填相同I区地址,下方填不同M区地址)
  • 定时器
    • TP生成脉冲-(运行设定时间)PT设定时间(MS.S.M.H.D) ET当前时间(双字MDXXX)
    • TON 接通延时-(经过设定时间后运行)输入端使用起保停电路(下方设TON IN端)
    • TOF 关断延时-(断开后开始计时)经过设定时间后停止
    • TONR时间累加器-可在中途复位,不会自动清零
  • 计数器
    • CTU加计数器-上方填写背景数据块(DB)PV为设定计数量,每接通一次CU当前计数量CV(MWXXX)加一,到达设定量PV后Q启动,按下R复位Q停止
    • CTD减计数器-LD装载值运行前需将PV值装载(在LD端加入开关)
    • CTUD加减计数器-QU加计数器输出 QD减计数器输出
  • 比较
    • ==等于-上方值等于下方值时接通
    • IN_Range值在范围内-值在范围内时接通 VAL为当前值
    • OUT_Range值不在范围内-值不在范围内时接通 使用定时输出信号时(让灯闪烁)须在设备组态-属性-系统和时钟存储器-时钟存储器位勾选启用时钟存储器字节(1Hz=1S)
  • 数学函数
    • CALCULATE计算指令-可自定义计算公式(OUT:=IN1+IN2+IN3)
    • INC递增-需要一个开关触发EN,每开启一次IN/OUT加一,必须使用沿触发,若不使用可能会出现按一次递增多次
    • MIN获取最小值-在OUT口输出最小的IN值
    • LIMIT设置限值-若设定值IN小于MN则在OUT输出MN,若IN在MN和MX之间则输出IN,大于MX则输出MX
  • 移动操作
    • MOVE移动值(传送指令)-将IN端值传送到OUT口,OUT口可对应多个函数IN口 要通过MOVE接通QB0的某几个位可在IN端输入二进制(2#11011011第0.2和0.5不导通)OUT指向QB0
  • 移位指令
    • SHR右移-(沿触发)IN:需要移位的存储区 N:移动位数 OUT移动目标存储区
    • ROR循环右移-移至最大位数后从头开始
  • 模拟量 完成组态设备后在右上角设备视图-目录-AQ中拖动模拟量输出模块至设备,双击模块弹出属性-常规-AQ2 变频器频率范围0-50Hz对应电压0-10V对应电流0-20mA
    • NORM_NX标准化-MIN和MAX填写频率范围,VALUE:模拟量输入通道 设定频率(填写MD区地址MDXXX)OUT:过程变量(MDXXX)输入实际值,输出百分比
    • SCALE_X缩放-MIN和MAX填写0-27648对应电压5530-27648对应电流 OUT处填写AQ通道地址(在模块-常规中查看)VALUE处放入标准化NORM_X的输出变量(百分比小数模式)
    • 模拟量输入(测出外部量)-用标准化测出模拟量百分比(0-24678)-再用缩放输出实际值(0-最大量程)
    • 模拟量输出(所需输出量)-用标准化算出需要的工程值百分比-再用缩放输出所需模拟量
  • 转换指令
    • CONV转换值-将一种数据类型转换为另一种数据类型
    • ROUND取整-将浮点数四舍五入
    • TRUNC截尾取整-直接舍弃小数留下整数(正数相当于向下取整,负数相当于向上取整)
    • CEIL向上取整-直接把小数进一位
    • FLOOR向下取整-直接舍弃小数
  • BD数据块(方便管理与监控) DBX0.0--M0.0位 DBB2--MB2字节 DBW10--MW10字 DBD20--MD20双字 左侧任务栏-程序块-添加新块 使用DB块必须先定义才能使用 DB地址在左侧任务栏DB数据块右键属性去掉勾选优化块的访问并编译即可在定义表的偏移量中看到变量地址
  • FC函数块(局部)
    • InOut-输入输出,可用于起保停的线圈关联开关
    • Temp-临时变量,储存中间过程变量,每个扫描周期都会清零(生成管脚且不能填M区)
    • Constant-常量,储存固定的数值,如圆周率
    • Return-返回值 可在OB中重复调用,创建时不可出现绝对地址 使用FC块必须在变量声明表先声明再使用 当更改FC块后需在主程序该块上右键更新块调用 定时器在声明时放入InOut数据类型为IEC_TIMER,在FC块使用时拖拽后点击取消再在块上方选择对应声明,在主程序中调用该FC块还需创建DB块IEC_Time型数据并将获得的偏移量填入 NORM_X标准化VALUE处填入的SCALE_X缩放OUT是过程量,应在Temp中定义
  • FB函数块(全局)
    • Static 静态变量,不生成管脚(可不填入管脚),可做内部储存区使用
  • 步进驱动器
    • PUL-脉冲输入
    • DIR-控制方向
    • ENA-当接上线时为自由状态,未接时为默认自动状态 PUL+和DIR+接Q端 DIR-和PUL-都接到驱动器GND上 使用时程序必须在PLC属性-常规-脉冲发生器中勾选启用该脉冲发生器(信号类型PTO既有脉冲又有方向)
  • 步进电机 程序左侧任务卡新增工艺对象-运动控制-轴 驱动器必须大于步进电机且PLC为晶体管输出
    • 细分-电机运行时的真正步距角是固有步距角的几分之一,如电机固有步距角为一度,细分为10时,其步距角为0.1度 扩展参数-机械-每转脉冲数和负载位移根据电机说明填写
    • 回原点-主动:回原点选正方向滑台会往右移 参考点开关选上侧时滑台会停在右侧 回原点速度需小于逼近速度,同时需勾选允许限位开关处自动反转
    • 判断电机线组:短接任意2根线用手拧电机轴,若难以拧动即为一组,每组接到驱动器A或B口 电机旋转时和预期方向相反可在电机设置-扩展参数-机械中勾选反向信号
  • 电机接法 三相交流电机内部定子有3个绕组对应三相电源,每个绕组两个头(u1-u2 v1-v2 w1-w2)共6个,分别引到接线柱上,三相电机只接到u1v1w1无法形成回路
    • 星形-u2v2w2直接短接
    • 三角形-u2接v1,v2接w1,w2接u1 电压相同情况下,星接电流仅三角形三分之一转矩也只有三角形三分之一
  • 运动控制指令
    • MC_Power启用/禁用轴-Axis轴工艺对象(X轴或Y轴)Enable启用轴 StartMode启动模式(1位置受控制的定位轴) StopMode停止模式(0紧急停止) Status轴状态 Error错误位 ErrorID错误信息 只要控制轴就必须加入轴启动命令
    • MC_Reset复位轴-Execute轴复位(接通一次即可)Done复位结束(碰到限位开关后使用)
    • MC_Home归位轴/回原点-Execute处须用上升沿触发 Position回原点后轴位置 Mode设定模式
    • MC_Halt暂停轴-Execute处须用上升沿触发
    • MC_MoveAbsolute以绝对方式定位轴-必须先回到原点后才能启用 Execute处须用上升沿触发 Position 绝对运行距离 Velocity绝对运行速度
    • MC_MoveRelative以相对方式定位轴(将当前位置作为原点)-Execute处须用上升沿触发 Distance相对移动距离 Velocity相对移动速度
    • MC_MoveVelocity_DB以预定义速度移动轴-Execute处须用上升沿触发 Velocity预定义移动速度 Current保持当前速度
    • MC_MoveJog以点动模式运动轴-JogForward正向点动 JogBackward反向点动 Velocity点动速度 InVelocity点动速度状态
  • 触摸屏 在添加新设备中添加HMI 在触摸屏使用变量时可在程序块中选择拖拽 常用精智屏,可以满足大多数需求(部分触摸屏无功能键) 在设备和网络中将PLC和HMI的网口相连 画面编辑器右侧任务卡中的库可以存放自己做的模板 可在画面中添加组以应用不同的屏幕,画面可复制粘贴到不同的机器 在运行系统设置-常规中可以设置起始画面也可使用模板 要使用按键弹出画面可在画面管理-弹出画面中新建,并在按键属性-事件中添加对应函数
    • 弹出画面-(画面管理)要移除弹出画面可利用按键将弹出的画面移到视图之外的范围
  • 屏幕元素
    • IO域-可存放过程变量(属性-常规-新增变量)可将程序中的变量拖拽入屏幕 制作屏幕按键指示灯-灯模块:动画-显示-添加外观-新增变量(BOOL型)-值0选择对应颜色1选择对应颜色 按键:事件-按下-置位位选择灯的变量-释放同理
    • 报警-关联word类型变量(HMI变量-HMI报警)选择触发位
    • 账户密码-设置权限给指定的人看
    • 文本和图形列表(报表)-(可用于显示运行状态)先在标中创建对应的值之后在按键-属性常规-标签中选择文本列表并关联该值(在模式中更改文本或图形)
    • 趋势图-右击属性-趋势中可添加趋势(趋势值指在一段时间内的取样次数,源设置可关联变量)
    • 画面动态化-(属性-动画-移动)将对象沿XY轴移动int型变量(可搭配IO域更改)
    • 外观-(动画-显示)让屏幕元素在不同状态显示不同颜色
    • 可见性-用于设置屏幕元素在某状态中消失或出现(报警)
    • 可控性-用于设置按键在某状态中是否可按下
    • 层-(右侧任务卡-布局-层)最大32层,0层位于背景,31层位于前景(按钮等放于最前,按钮上的文本放在按钮下层否则会导致按不了)任务卡中某层右击设置活动层可将之后添加的元素自动放入该层
    • 数据类型-(左侧任务卡PLC数据类型)可将多个变量存放到一个数据类型中,减少编程量(需将屏幕变量与PLC变量相关联)
    • 组态导航-画面切换(按键-事件单机-画面)可配合IO域设置页数并在画面设置中设置对应页 若按键反应较慢可在HMI变量-默认变量表中更改采集周期
  • XY轴联动速度计算 时间=X移动距离/X移动速度=Y移动距离/Y移动速度 X移动距离=X目标位置-X当前位置 Y移动距离=Y目标位置-Y当前位置 当X的移动距离>Y移动距离,则X为最大速度,计算Y速度 当Y的移动距离>X移动距离,则Y为最大速度,计算X速度 当X的移动距离=Y移动距离,则X移动速度=最大速度=Y移动速度
  • 通讯种类
    • PPI通讯(双绞线)-最基本的通信方式
    • MPI通讯(电缆)-简单,通信距离远
    • PROFIBUS通讯(现场IO设备通信)-支持多种传输介质,结构精简,传输速率高且稳定
    • ModBus通讯(支持多种接口)-使用容易,开发简单,通信距离长,可用于恶劣环境,结构化便于扩展
    • USS通讯(RS8485串口通信)-协议简单,硬件要求低,但速度和量较小,第三方设备大部分支持(打印机 变频器)
    • 以太网通讯-速率高,安装简单,功能强,维护方便
    • S7协议通讯-仅S7设备可用
  • USS通讯
    • USS_PORT通讯初始化-PORT端口硬件标识符(RS485)BAUD波特率(38400)USS_DB启停指令数据块 (USS_DRIVE的背景数据块,需填入该块地址)ERROR错误位 STATUS错误信息
    • USS_DRV控制指令-RUN接启停信号 F_ACK故障复位 DIR方向切换 DRIVE通信地址 SPEED_SP频率百分比设置(0-50Hz)NDR状态位 RUN_EN启动运行标志 D_DIR驱动器方向 INHIBIT禁用驱动器状态位 FAULT驱动器故障标志 SPEED实际频率百分比输出 CTRL驱动器控制字 STATUS驱动器状态字 OFF不用填写
    • USS_RPM读取电压-REQ触发端 DRIVEUSS通信地址 RPARAM通信参数编号(写0025时输出电压) INDEX参数索引 USS_DB指向USS_DIV背景数据块 VALUE实际电压值
    • USS_RPM读取电流-RPARAM通信参数编号写0027时输出电流 只读取一个参数(电压或电流)时REQ端可放一个时钟脉冲,多个(电流和电压 )需用轮询,但不能同时接通
    • USS_WPM写入参数-REQ触发端接常开仅更改参数时触发一次 DRVIE从站地址 RPARAM通信参数编号写1120时为斜坡上升时间 INDEX索引0 EEPROM写入模式,是否写入到EEPROM中,0不写入1写入 VALUE斜坡上升时间Real(断电保存) 添加通讯模块在组态右侧任务卡通讯模块-点到点拖拽至模块左侧 添加指令在通信-通信处理器-USS(USS通信要求版本较高)
  • MODBUS通信 MODBUS(RTU)要求版本较高
    • MB_COMM_LOAD通讯初始化-REQ在上升沿时执行命令,可使用系统时钟M1.0开机时启动一次 POR通讯端口ID端口硬件标识符(RS485) BAUD波特率选择 PARITY校验位0无1奇2偶 MD_DB指向背景数据块
    • MB_MASTER主站通信-MB_ADDADDR站地址 MODE模式0读1写 DATA_ADDR从站地址 DATA_LEN数据长度(1) DATA_PIR指向DB块的存储区地址,需自己创建DB块同时在块属性中取消优化块的访问 该指令一个程序中只能存在一个,故使用多个时直接进行复制
    • 组态-在硬件目录-通信模块-点到点中选择对应型号
  • PROFIBUS DP通信 组态右侧任务栏通信模块-PROFIBUS 在添加模块的属性-常规-DP接口-PROFIBUS地址中添加新子网 与其它厂商的设备进行通讯时需在顶端任务栏选项中添加其GSD文件,之后在右侧任务栏硬件目录中添加其它现场设备后在出现的设备中分配主站最后双击设备添加报文 Q点的第一个字地址是变频器命令源,控制启动停止和正反转,第二个是变频器的运转信息,用来监控运行频率,第三到八个字地址用来修改内部参数 I点的第一个字地址是变频器的状态字,第二个是实际运行频率,第三到八字个地址是实际输出电压电流转矩值等 使用MOVE命令时IN端IO地址在产品说明书中查看,OUT端QW64为变频器命令源
  • TCP通讯(方便,速度快)
    • TSEND_C发送数据-CONT建立连接(自动生成)CONNECT连接数据块(自动生成)DATA发送数据块指针(DB块)
    • TRCV_C接收数据-DATTA本地接收区地址 RCVD_LEN实际接收字节数 添加两台设备后选择设备和网络,在上方任务栏点击连接选择TCP连接并切回网络连接两网口,右击设备属性可看到设备IP地址 指令在右侧任务栏-通信-开放式通信 建立指令后需在指令界面点击连接组态(蓝色)选择伙伴,两台设备都要在连接数据中选择新建
  • S7通讯 西门子S7系列内部通信,必须使用轮询
    • PUT从远程PLC接收数据-ID自动生成 ADDR_1发送到远程PLC的数据地址(须指向远程设备的P#DB) 本地发送数据区(P#DB)
    • GET从远程PLC读取数据-REQ激活接收(使用系统时钟脉冲)ID自动生成(GET和PUT的ID必须保持一致)ADDR_1接收远程PLC的数据地址(须指向远程设备的P#DB) RD_1本地接收数据区(P#DB) 两个指令均需在连接组态中选择伙伴 伙伴选择完成后须在两个PLC上右键属性-常规-防护与安全-连接机制-勾选允许来自远程对象的通信访问 两台PLC的连接组态-属性-连接参数-连接ID必须与实际地址一致 实际地址:设备和网络-上方任务栏选连接-右键PLC-添加新连接(与组态的ID一致)
  • IO通信
    • 在一台PLC的属性-PROFINET-操作模式中勾选IO设备,并在下方智能设备通信中新增传输区
  • PID
    • P比例控制-基础,可以只有P没有ID
    • I积分控制-消除稳态误差,但可能超调
    • D微分控制-加快惯性系统响应速度减弱超调趋势
    • PID_Compact基本参数-Setpoint自动模式下设定值 Input实际工程量 Input_PER模拟量输入信号 Output输出数值(Real)Output_PER模拟量输出值 Output_PWM脉宽调制输出 State当前模式 Error错误 ErrorBits错误代码
    • PID_Compact扩展参数-Disturbance扰动变量或预控制(保持默认)ManualEnable激活手动控制模式 ManualValue手动模式输出值 ErrorAck故障复位 Reset重启控制器 ModeActivate切换到Mode设定的模式 Mode模式设定(每次使用都必须接通ModeActive)ScaledInput标定后的过程量 SetpointLimit_H设定值绝对上限 SetpointLimit_L设定值绝对下限 InputWarning_H过程值警告上限 InputWarning_L过程值警告下限 使用PID必须新建Cyclic interrupt OB块(循环中断100/200ms)
    • 组态(指令界面蓝色)-选择控制器类型(反转控制逻辑:越接近设定值输出越大)In/Output参数选择模拟量或开关量
    • 调节(指令界面钳子)-可进行调节(先预调节再精确调节)左下角ErrorAck可进行故障复位 调节完成后必须在下方PID参数中上传
  • 编码器
    • 棕正蓝负黑A白B(在高速计数器-HSC-硬件输入中查看)
    • 检测电机转角位置以转换成直线运行距离,计算单位时间内的脉冲数来算出电机转速 右击PLC属性-常规-高速计数器-启用该高速计数器-计数类型 工作模式-A/B计数器 初始计数方向-加计数 频率测量周期(1.0) 在常规-DI14/DQ10中把数字量输入通道的输入滤波器调低(0.1),如果滤波时间过大则无法检测到高速脉冲输入
    • 测转速时用频率 测距离时用计数
    • 测转速-先将高速脉冲输入(地址在常规-高速计数器-HSC-IO地址中查看,后面须加上:P)由DINT形转换为Real型(CONV)再使用除法指令(DIV)计算出每秒的转速(总脉冲数/1000->转每秒,每转一圈发出1000个脉冲)再将转速乘60(MUL)得出转每分钟
    • 测距离-先将高速脉冲输入(地址在常规-高速计数器-HSC-IO地址中查看,后面须加上:P)由DINT形转换为Real型(CONV)再使用乘法指令(MUL)计算出每个脉冲移动的距离(一圈位移/一圈所需脉冲数)
  • 中断
    • CTRL_HSC控制高速计数器指令-(工艺-计数-其它)HSC选择高速计数器 DIR方向 CV更新计数器值 RV更新预设值(沿触发) PERIOD测量周期 NEW_DIR装载新计数方向 NEW_CV新计数值 NEW_RV位置设定 PLC属性-常规-高速计数器-事件组态-勾选为计数器值等于参考值这一事件生成中断并点击下方硬件中断新增OB中断块,在恢复为初始值中增加初始参考值