哈尔滨西门子PLC模块代理商
读S7-1500 CPU的运行时间有很多种方式,分别介绍如下几种方式。
1 通过OB1的启动参数读出运行时间 在非优化的OB1启动信息中带有OB1的运行时间,如图1所示。
图1.读出非优化的OB1中运行时间
将启动信息参数传递到全局变量中就可以读出CPU的上次扫描、小、大扫描时间,编程非常方便。
2 调用RD_SINFO函数读出运行时间
如果使用优化的OB1,启动信息简化而没有这些运行信息,如图2所示,则必须调用函数读出。
图2优化OB1的启动信息
例如在OB1中调用RD_SINFO函数读出运行时间,程序如图3所示。参数TOP_SI为当前OB1的启动信息,
数据类型为SI_classic,需要手动键入,ZI1为上次扫描时间,ZI2_3包含小、大扫描时间,低字为小扫描时间,
高字为大扫描时间,示例中分别传送到MW10和MW12中。START_UP_SI为暖启动OB的启动信息,
示例中没有进行引用。
图3调用RD_SINFO函数
3 调用RT_INFO函数读出运行时间
通过函数RT_INFO也可以读出CPU的运行时间,示例程序如图4所示。
图4调用RT_INFO函数
通过模式1、2、3可以读出CPU的上次扫描、小、大扫描时间,在这三种模式下,参数INFO的数据类型为LTIME,可以直接读出。也可以通过其他模式读出运行时间的百分比。
4调用RUNTIME指令读出运行时间
通过指令RUNTIME可以从参数RET_Val直接读出CPU的运行时间,单位为秒,MEM为中间保存程序运行的存储器,两个参数类型都是LREAL,还可以读出一段程序的运行时间。如图5所示。
图5 RUNTIME指令
1.前言
可编程控制器(PLC)作为一种高性能的工业现场控制装置,已广泛地用于工业控制的各个领域。目前,工业自动控制对PLC的网络通信能力要求越来越高, PLC与上位机之间、PLC与PLC之间都要能够进行数据共享和控制。
飞剪控制系统要求在远离PLC的控制室里,实时监控电机、供纸、刀辊等设备。上位机为普通PC机,下位机为 SIEMENS S7-222 PLC。在实际开发中,采用自由口通信模式,自定义 PC与 PLC的通信协议,用Step7编写PLC端的通信程序,而在 PC端用VC6.0实现串行通信的控制和监控界面的显示。
2.通信方式及原理
S7-200系列PLC通信方式有三种:一种是点对点(PPI)方式,用于与西门子公司的PLC编程器或其它产品通信,其通信协议是不公开的。另一种为DP方式,这种方式使得PLC可通过Profibus的DP通信接口接入现场总线网络,从而扩大PLC的使用范围。后一种方式是自由口(FreePort)通信方式,由用户定义通信协议,实现PLC与外设的通信。本系统中采用自由口通信方式。它是S7-200系列PLC一个很有特色的功能。这种方式不需要增加投资,具有较好的灵活性,适合小规模控制系统。自由口通信在物理接口上要求双方都使用RS485接口,波特率高为38400bps。PC机的标准串口为RS232,但西门子公司提供的PC/PPI电缆带有RS232 /RS485电平转换器,在不增加任何硬件的情况下,可以很方便地将PLC和PC机互联。
2.1自由口模式的初始化
PLC的自由口模式通信编程是对串口初始化。对S7-200PLC的初始化是通过对特殊存储字节SMB30(端口0)写入通信控制字,来设置通信的波特率、奇偶校验、停止位和数据位数。显然,这些设定必须与上位机设定值相一致。还可选择通信模式和主从站模式,各具体存储位内容可参考SIMATIC S7-200系统手册。
2.2自由口模式下收发数据
初始化自由端口通信模式后,就可以进行数据的收发。
(1) 发送数据指令 XMT
格式:XMT Table,Port。可以用 XMT指令发送数据,XMT指令激活发送缓冲区(从Table开始的变量存储区)中的数据。数据缓冲区的个数据指明了要发送的字节数,Port指明了用于发送的端口,缓冲区多可以有255个字符。在发完缓冲区的后一个字符时,会产生一个中断 (对端口 0为中断事件9)。本例的XMT缓冲区的格式如表1。其中,状态字节表示PLC是否正确接收了上位机所传数据;上传数据为PLC上传给PC的数据,需将9字节的16进制数编码为18字节的ASIIC码,字节数为18;BCC为上传数据的异或和,同样将16进制数编码为ASIIC码;结束字符的值为26。
表1 发送缓冲区
表2 接收缓冲区
RCV Table,Port。用 RCV指令接收多为255个字符的数据,这些字符存储在缓冲区中。在接收到结束字符时,会产生一个中断(对端口 0为中断事件23)。本例的RCV缓冲区的格式如表2。其中,命令类型表示上位机让PLC 执行什么操作,如读或写;目标站号是分配给PLC的一个代号;起始地址是PLC要进行读写的存储区的起始地址;读写字节数是PLC接到命令后,对存储区进行读写的字节数,本例中多写入16字节、读出9字节;写入数据是上位机要写入PLC的数据,对于读命令不起作用;BCC是从命令类型开始到写入数据为止的43字节数据的异或和。从目标站号到BCC这几项内容,都是把16进制数编码为ASIIC码来表示的。
3.自由口通信程序设计
通信程序的设计需遵循一定的规则,如中断通信处理程序要短小精悍、要避免XMT与RCV指令在一个端口执行等。整个PLC通信程序包括主程序、通信初始化子程序、校验子程序、读写数据子程序和发送完成、接收完成中断服务程序。
3.1主程序
通信主程序是PLC实现接收、发送功能的主框架。其主要流程为查询接收是否完成,校验,再根据命令类型执行读、写等操作。它的作用是控制程序的主流程,校验、读写等具体工作由相应的子程序完成。流程如图1。
3.2通信初始化程序
通信初始化子程序设置自由口通信的有关参数,对接收信息控制寄存器SMB87写入控制字,定义起始字符、结束字符和接收超时。设好自由口模式的这些参数后,还要连接中断事件和中断服务程序,并打开中断。后,把接收、发送缓冲区写入初值即可。
3.3校验子程序
每次PLC接收完1帧数据,就调用此子程序进行校验。进入子程序后,先清除接收完成标志位,再计算所接收数据的校验和BCC。如果正确,还要检验结束字符是否为‘G’。不是的话,说明数据报文长度不对或传输过程中发生了错误,需要向上位机返回相应的出错信息。流程如图2。
图1 主程序流程图
图2 校验子程序流程图
3.4读、写数据子程序
这2个子程序的任务是把PLC存储区中的数据发给上位机或把上位机传来的数据写入PLC存储区。二者的流程相似,只是数据流向不同。进入子程序后,先停止接收,完成数据传输,后发送应答报文。不同之处就是应答报文中的状态字节:读操作时是1、写操作时是2。
3.5接收、发送完成中断服务程序
当PLC接收到结束字符后产生中断(事件号9)或数据发送结束后产生中断(事件号23),这两个服务程序被执行。接收完,先把接收完标志置1,启动接收。发送完,先清除校验正确标志,再把接收缓冲区中的结束字符和计算出的接收BCC结果清零,后启动接收。
由于是半双工通信,PLC无论是发送和接收完数据后,都必须将通信口设置成接收状态。否则,PLC就接收不到任何数据了。
4.上位机的通信编程
上位机通过RS232口与PLC进行通信,bbbbbbs环境串口通信程序利用VC6编写。VC6编写串口通信程序通常有MSCOMM控件和通信API两种方法。二者各有优缺点。MSCOMM控件封装了微机串口通信的基本功能,使用者只需设置一些基本参数,就可以通过串口收发数据了。这种方法简单,易于编程人员使用,现在已有很多例子供参考。用通信API编写串口程序相对复杂一些。开发者要直接使用bbbbbbs提供的一组API函数来完成上述控件封装好的功能。使用API编程比使用控件更复杂,但也更灵活。通信控件已经封装好的功能是无法改变的,而使用API就能针对通信协议编写效率更高的代码。
在飞剪控制系统的上位机程序中,使用通信API编写了串口读写的模块。接收时,程序要查找起始字符‘g’,以确定1帧数据的开始;再根据下一个状态字节判断通信的正确性;后,把长度为23字节的数据帧接收好,并准备接收下一帧。发送过程不用判断数据内容,执行发送函数即可。需要注意的是:由于PLC通信口是半双工的,在PLC向上位机上传数据时,上位机要等1帧数据接收完毕,再执行发送操作,以避免收发冲突。
图3 上位机串口通信流程图
5.结束语
本系统取PC机和PLC各自的特点,实现了对飞剪系统的实时监控。通过利用PLC(下位机 )的自由口通信协议和上位机的VC开发工具,可以方便地开发出PC机和PLC通信应用软件。这种方法节省投资,对小规模的系统极具现实意义。系统具有实时性好、速度快、可靠性高、操作方便等优点,达到了预期的效果。经现场调试及运行表明,该系统适合于飞剪系统的实时监控
西门子S7-200的自由口通信需要通过编程设置串口的工作模式,安排发送和接受指令的触发顺序,还要设定接收的起始和结束条件。对于刚刚开始使用s7-200的工程师来说,的确有很多细微处易犯错误。一般碰到客户抱怨通信不上的问题,就要逐一帮客户确认编程配置是否正确。麻烦,逐条查下去,总能查到错误所在并解决问题。有一次客户遇到的问题颇出人意料,还真耗费了一些时间。
客户反应在编写了自由口通信程序之后,PLC可以发送数据给通信伙伴,却收不到任何伙伴方发出的数据。能发送数据给对方,说明通信端口设置没有问题。极有可能是端口被其他通信指令占用导致无法进入接收状态。比如说用常开点调用XMT,或者没有对接收的故障状态进行判断并终止接收,从而导致后续的XMT和RCV都无法被正确执行。客户表示他的程序并不存在这种情况。为了测试问题所在,客户下载了一个仅包含条件触发RCV的程序下去,还是接收不到数据。监控程序RCV指令已被正常执行。
那么是不是接收的起始条件设置不当?客户使用的是起始字符,这并无不妥。并且改成空闲线检测之后,问题依然存在。难道是对方发送的信号有问题?用串口调试软件来测试,是可以接收到的。眼见这几个常见错误都没能cover住这个问题,我只好从头一步步地跟客户确认。还是没能发现任何破绽。郁闷之下,只好让客户把程序发过来看看。
次检查程序的时候还真没注意到问题出在哪里。等到看出来了才觉得啼笑皆非:
不知道大家看出来没有?客户在设定完空闲线时间SMW90和消息定时器溢出值SMW92后,惯性地将接受地大字符数SMB94也写成了传送字SMW94。而西门子PLC的高低字节是逆序的,也就是说SMB94为高有效字节,SMB95为低有效字节。见手册中的如下说明:
结果就是大字符数100被传给了SMB95,SMB95是神马呢?神马也不是,总之与接收条件无关。而真正大字符数存储字节SMB94被赋值为0。大字符数都为0了,那当然是接收不到任何数据了。小马虎一下就耽误了这许多时间,各位看官引以为戒吧!
为了获得稳定的大电流,设计了基于单片机控制的智能软启动大功率恒流源,电流范围0~8 A,大峰值可达10A.采用大功率运放OPA549 构成大电流恒流源,利用PID控制算法实现了大功率电源的软启动和控制。该方法设计的电源在软启动过程中超调量很小,具有很好的稳定性;在恒流源工作时,稳定性也很好。
电源启动过程中瞬时电流冲击很大, 对电源和器件的使用寿命有很严重的影响,采用良好的控制方法对启动电流进行控制以减小其危害, 使启动过程中无瞬间冲击且能连续变化,是电源启动控制中关键的一步。电源软启动方式就是控制输出电压和电流, 使负载的电压和电流渐增。对于线性时不变模型的被控对象适当整定PID参数可获得较满意的控制效果, 可以很好地解决电流过大的问题。PID 控制能很好地解决启动过程中震荡和超调的问题, 可以更好地保护电源,且启动可靠、稳定性强。采用单片机作为控制器, 编程灵活、性价比较高,易实现人机界面管理。利用软件调整系统的非线性,以降低实测值与设定值之间的偏差。电源电压或电流的波动、电路元件的老化、环境温度等因素都将影响电源的稳定性。为了稳定地控制电源功率,该方案采用基于单片机的高速AD、DA 数据采集系统, 并采用PID算法实现大功率电源的软启动, 系统采用PID电压采样反馈控制输出电流的恒定不变, 精度较高、响应速度较快、灵活性较好、稳定性较高。
1 大功率精密恒流源的实现
1.1 电源系统设计
以单片机为核心, 完成以下功能: 处理键盘输入数值, 包括电路预定值和"+" 、"-" 步进; 控制数LCD显示预定值和实际值; 控制ADC 和DAC; 根据得到的反馈信号通过程序控制算法进行偏差值补偿。由于运放OPA549 一路受D/A转换器控制, 调整运放OPA549 输入端电压, 一路为比例放大电路。当DAC 输出预定值或步进值后, 电流源的输出在0 ~8 A范围内变化。输出电压经与负载串联的小电阻采样后, 送入ADC,采样值与预定值在单片机内部进行计算、比较输出控制信号,对偏差值进行补偿。利用软件调整系统的非线性,以降低实测值与设定值之间的偏差。
1.2 电源电路设计
(1) 数控部分核心
采用单C8051F , 控制数控直流源的键盘和显示, 与D/A 转换器和A/D 转换器控制输出电流。A/D转换器的基准电压由专门±9 V 电源供电,D/A 转换器的基准电压由+20 V 电源供电, 由单片机送出数据经DAC转换输出控制电压。
(2) 运放OPA549 放大电路电流源。
OPA549 是BB公司新推出的一种高电压大电流功率运算放大器。它能够提供极好的低电平信号、输出高电压、大电流, 可驱动各种负载。该器件的主要特点:输出电流大, 连续输出电流可达8 A, 峰值电流可达10 A; 工作电压范围宽, 单电源为+8 V~+60 V, 双电源为±4V~±60 V; 输出电压摆动大;有过热关闭功能, 电流极限可调; 有使能及禁止功能; 有过热关闭指示; 转换效率( 压摆率) 高为9V/μs ;工作温度范围为-40℃~+85℃。该器件主要应用于驱动工业设备、测试设备、电源、音频功率放大器等大电流负载。
在该电源系统中, 主要为负载提供大电流, 采用PID控制算法控制负载的发光强度。输入为单片机经DAC输出的控制电压, 一路为比例放大电路, 如图1所示增益G=1+R3/R2.电流型DAC 通过R1 转换成电压, 控制OPA549 .输出电流经采样电阻转换为采样电压, 送入A/D转换器反馈至单片机进行偏差值补偿。
图1 OPA549 构成可调大电流恒流源
(3) 散热及抗干扰。
OPA549 大功率管工作时产生恒定的大电流, 功耗较大, 产生的热量较多,散热成为该电源急需处理的问题。一般的轴流风扇内部电机置有脉冲驱动电路, 驱动时, 脉冲成分很容易直接顺电机电源线" 外溢" ,干扰其他电器设备。视频设备上干扰表现为横通斜线, 音响设备上产生噪音。为此, 安装大面积的铜散热片,用风扇对设备中的电子元器件强制散热。安装风扇时,需要在风扇电机电源线上串绕一只高频磁环以抗干扰。串绕磁环有效滤除这些干扰成分, 一般只需绕上1~3 匝即可。
2 PID 控制算法
系统软启动的控制功能通过比例积分微分控制器实现。通过比较给定信号与反馈信号的偏差,并进行比例、积分、微分等运算进行控制, 是技术较成熟、应用、广泛的一种控制方式。其结构简单、灵活性强、系统参数调整方便,不需要求出模型。
PID 控制原理如图2 所示。PID 控制是一种线性调节器, 它把设定值W 与实际输出值相减, 得到控制偏差e.偏差值e 经比例、积分、微分后通过线性组合构成控制量U, 对对象进行控制。其中比例调节器起到基础调节作用,主要对控制系统的灵敏度和控制速度有影响。积分调节器可以自动调节控制量, 消除稳态误差,使系统趋于稳定。微分调节器可以减小超调,克服振荡, 加快系统的稳定速度, 缩短调整时间, 从而改善系统的动态性能。
图2 PID 控制原理图
PID 控制器的输出与输入之间的关系可表达为:
式中: Ti为积分时间常数; Td为微分时间常数; Kp为比例系数; Ki为积分常数, Ki=Kp/Ti ;Kd为微分常数,Kd=Kp/Td.
系统启动时间较短, 启动电压、电流较大, 负载所承受的冲击也较大,致使启动阶段负载的动负荷峰值远远大于正常运行时的负荷, 容易造成负载的损坏。为解决此问题, 设计了一种新型的PID控制软启动电源系统, 主要由电源、大电流恒流源、输出大电流端采样和控制系统组成, 并完成了实验室内的试验。当电源启动时,由单片机系统给定设定电压、电流或功率。PID软启动是按负载线性上升的规律控制输出。在负载电压线性增加的过程中,如果电流超出了所限定的范围, 则马上投入电压闭环, 使电流值限定在所设定的范围内后, 再线性逐渐增加电压至额定值,系统的光强也由零逐渐增大, 完成启动过程。
PID 控制系统软启动效果图如图3 所示。通过串行通信端口com1 通信, 电压单位mV、电流单位mA,功率单位mW, 时间单位s.
从图3 的软启动效果图可以看出, 在恒定电压、电流、功率的模式下工作时, 系统开机过程超调量很小,有效地控制了启动过程, 防止了启动过程产生过大的扰动电压, 产生过大的功率, 有效地保护了负载。
3 实验结果
由于输出电流达到8 A, 对电源的功率要求较高, 易产生噪声,这种随机噪声也会对输出电流产生一定的影响。为减弱这种噪声, 各个模块分别供电, 以减少交叉干扰, 在电路板上多加装去耦滤波电容,减小干扰的影响, OPA549 能有效地抑制纹波。影响电源稳定性的因素很多, 如负载的变化、取样电阻的变化、A/D、D/A的影响等。如图4 所示, 不同负载的情况下, 电源误差不同。10 W 的负载, 由于功率较低, 在电压、电流增加时,误差变化也较小。35 W 的负载, 由于功率较大, 工作电流的变化范围比较大, 功耗较大, 电源的误差变化相应地也比较大。如图5,在10 W、20 W 和35 W 的负载时, 工作状态稳定, 能够满足大电流、大功率的需要。
该系统利用PID 算法进行控制, 采用大功率运放OPA549 输出电流在0~8 A 范围内可调,大峰值可达到10 A, 能够有效抑制纹波电流, 克服了传统电流源输出电流范围小的缺点。可设置并能实时显示输出电压、电流、功率实测值,具有"+ " , "- " 步进调整功能, 输出可在LCD12864 显示, 通过RS232 与上位机同步通信, 直接显示,保存实验数据。通过对测试结果的分析,系统在软启动的过程中, 超调量很小, 启动效果很好,避免了对负载的冲击。由于大功率调整管的电流大范围变化时,经过软件补偿、放大电路调整等方法解决线性度较差,实测值和设定值存在偏差的问题。该电源适用于大功率的场合,本电源具有很好的实用性