6ES7216-2BD23-0XB8参数设置
1 引言
可编程逻辑控制器(Programming Logic Controller, PLC)作为一台工业计算机,集数据的采集、处理、显示于一身,那么作为数据终端,数据的显示是完全必要的。虽然PLC本身有许多指示灯,可以观测到PLC的CPU单元、输入/输出单元及网络通信单元的运行工作状态,但无法显示PLC内部数据。计算机通过与PLC通信以及触摸屏都可以实现PLC内部数据显示,但价格昂贵,对一些小型不需要经常改动的系统来说更是浪费。本文采用拨码开关和数码管来显示PLC内部数据,操作简单、成本低廉,对实验教学和工程人员有参考价值。
(1)应用行业:机加工、过程控制等。
(2)使用产品:CJ1M(CPU22), CS1W-ID211,CS1W-OD261
(3)应用的主要工艺点及要解决的主要问题:内部数据的动态显示
(4)应用方案简介:用高频率晶体管输出单元,结合高速定时器指令TIMH实现内部数据的动态显示。
2 动态数据显示
2.1 硬件系统设计
LED数码管有7段显示灯,可以用来显示0~9间的10个数字。CJ1M系列PLC内部通道数据一般都是四位,如果用借用每个输出点来控制一个显示灯,那么一个数码管就需要7个输出点,这显然要占用大量的输出点,是不经济的。这里选用含有内置译码电路的数码管如CD4511,可以把8421码自动译成7段码。8421码或BCD码用4个接口加选通信号,就可以显示一个数据位。将四个8421输入线组合与某个输出通道的低四位相连,每个选通信号的输入信号与通道中剩下的四位相对应连接,这样一个输出通道就能显示PLC四位(一个字)内部数据。具体接线图如图1所示。
图1 PLC硬件接线图
注意,这里的PLC输出模块应选用晶体管或者晶闸管输出单元,而不宜采用继电器输出单元。因为继电器输出单元为有触点开关,响应慢、速度低,不适用于高频率的通断,也不适用于动态数据显示[1]。故图1中采用OMRON公司CJ1W-OD261(64点)晶体管作为输出单元,其在本PLC机架上的IO地址分配为6.00~9.15,这里用0006通道作为内部数据的显示通道。6.00~6.03为CD4511的数据输入端A、B、C、D,其中A为低位,D为高位, 为高电平时锁存数据,四位数据的 端由PLC的6.04~6.07分别控制,4个数码管共占用8个输出点。
2.2 选通信号的生成
由于4个数码管 的线皆由一个I/O口控制,因此,在每一瞬间,4位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方式轮流点亮各位LED,即在每一瞬间只使某一位显示字符。使每位分时显示该位应显示字符,根据人眼视觉特性,当LED所加信号频率大于50Hz时,人眼不能感觉其变化,所以每位显示的间隔不能超过20ms,也就是说要在20ms之内分时的点亮所有LED,LED越多所分的时间越短,亮度就会不足;如果增加点亮时间,又会使扫描频率下降,有闪烁感容易造成人眼的彼劳,故常采用动态扫描方式[2]。这种扫描方式仅适用于LED不超过10个时的场合,本例中只有4只LED数码管,故可以选用此方法。
CJ1M系列PLC有丰富的定时指令,其定时器类型有1ms、10ms和100ms,这里选用TIMH指令[3],定时器的设定值为#1,这样选通信号的周期为10ms。
2.3 同步化处理
PLC采用循环周期扫描工作方式,指令的执行由上至下,有左至右,前面的结果将影响后面;前一个周期的结果影响下一周期。PLC逻辑设计同步化就是设法实现:用脉冲信号控制输出及内部状态的转换,有脉冲作用的周期,执行指令才有效果;而且在脉冲信号起作用的这周期中,前面指令的执行结果,不改变后面指令的执行条件[4]。同步化处理的方法很多,在图2中是通过合理安排指令的先后顺序来实现同步的。
图2中,系统上电,高速定时器开始定时,10ms后,其常闭触点断开,即T0输出一个脉冲,宽度为一个扫描周期。个脉冲到了, 6.04置位,成为前一行的指令执行条件,但这时它的指令已经执行完毕,故在此脉冲作用期间,也不会有什么变化。依此类推,第四个脉冲之后,6.07置位,6.06复位,成为工作寄存器W0.00输出的条件,第五个脉冲到来,6.07复位,梯形图又回到初始状态,如此反复,分时实现四位数据的 端6.04~6.07轮流接通10ms。
图2 选通信号的生成
2.4 数据显示
采用MOVD指令,将要显示的内部数据如DM区、W区、T/C区等中的一个字通过通道6显示出来。如图3所示,本例中,依不同的选通信号,将D0中的数据通过选择不同的位进行显示。
图3 数据显示输出
3 功能扩展
3.1 显示双字
在图1中,PLC输入端接拨码开关SA,其作用根据其所在位置不同结合跳转指令(JMP/JME)来确定数据显示是哪个通道。如图4中,当SA为ON时,显示D0中的数据;当SA为OFF时,显示D1中的数据。
图4 双字数据显示输出
3.2 硬件扩展
如果对4个选通输出点6.00~6.03采用一片4线-16线译码器(如SG74HC154)进行译码,可以扩展成16个循环的选通信号,就能显示4个通道的数据。如果结合开关SA,按图4中的方式,就可以显示8个通道的数据。
5 结束语
本文以CJ1M系列PLC为例,用9个I/O点(1个输入,8个输出)结合软件编程和硬件扩展来显示8个内部通道的数据(128位)。实践证明,该方法简易可靠、成本不高,适合实验教学和工程现场操作。
在棉纺织企业广泛使用喷气织机的情况下,空压站建设是一项重要的辅助工程。在天津纺织园区所有空压站配备的主要设备为离心式空气压缩机、冷冻式空气干燥器,通过储气罐、连接管道和阀门等组成压缩空气供气系统,并配套冷却系统、仪表空气系统,计算机检测系统,以实现空压站为生产一线保证不同压力、不同负荷的用气需求。在此前提下确保合格的供气品质,满足稳定的气源压力,自动调节供气liuliang等是空压站自动控制的基本任务。随着自动化水平的不断tigao,关于建设无人值守空压站的讨论,是一个发展过程中的必然的课题。
空气系统自动控制的必要性
应用在天纺投资控股有限公司棉纺一工厂的空压站,安装有4台70M3/min 4台,53M3/min 4台,48M3/min 2台,43M3/min 4台离心式空压机和1台42.5M3/min螺杆式空压机,配有相应处理量的冷冻式干燥器。空压机设备自身带有的CMC控制器,能够自动控制和保护主机的运转,自动提示工作信息,具有故障报警和保护停机功能,能自动根据用气量的大小加载或卸载,并配有LCD显示屏供现场观察各工艺参数和设备状态,具有RS422/485通讯接口,可以实现与现场控制室计算机监控系统的完整连接。
图:分级控制网络实施方案图
目前,空压站的自控系统通过西门子S7-300可编程控制器,将部分空压机的实时运行数据通过RS422/485通讯接口采集进PLC控制系统,并将数据传送到现场控制室计算机上进行显示,以代替传统仪表。但是没有对空压机进行控制。
空压机设备自带的CMC控制器已经能很好的控制单台空压机,但是不具备对空压系统的整体调控能力。在空压系统中,相对单台空压机的调整,空压系统的整体自动调控具有更重要的意义:
■ 单台空压机无法保证空压系统整体供气压力的稳定,而空压系统的整体自控可以有效保持系统内空气压力稳定。
■ 整体的负载平衡,减少排气放空,可以节约更多的能源,节省人力成本。
■ 可以实现无人操作,根据实际需要自动开机或加载空压机以保持系统压力。
■ 可以定时间断地记录空压机运行数据和报警,如跳车、喘振、通讯故障、压力等。
在已有的PLC系统中,没有实现空压系统的整体调控功能。由于空压机自带的CMC控制器提供了RS422/485通讯接口,所有的数据采集和控制功能都通过通讯接口来实现,对比原有的控制系统,不需要增加硬件设备的投资,只需要改进和增加控制软件即可实现空压系统的整体控制。
除空压机设备外,还可以将与空压机配套的冷冻式干燥器集成到RS422/485网络中来,实现空压供气设备的全面自控。
空压站其他系统的自动控制
除空压供气系统外,空压站的其他系统也需要进行自动控制,如水循环冷却系统等。这些系统的控制方法与空压供气系统不同,主要是采用传统控制模式。使用仪表采集需要的运行参数,进行数据处理和分析运算后,输出控制信号给执行机构就可以实现系统的自动控制。
自动控制具有以下优点:
■ 操作简单,可以实现无人值守;
■ 良好的实时调节,防止了人为因素滞后;
■ 具有高可靠性;
■ 减轻工作人员负担;
■ 节省人力成本。
需要控制的参数和可能的控制方式
空压站需要的控制需求;⑴高、低压供气压力控制(机组自动开停控制); ⑵系统自动排水控制; ⑶循环水液位控制和自动加药控制; ⑷所需压缩空气温度、循环水温度等参数控制等等。
空压系统的整体自动调控一般可以使用以下2种方法之一来实现:
⑴采用PLC系统进行通讯和控制。
⑵可以采用英格索兰公司或自己编制的控制软件。
种方法可靠性高,适用于工业控制系统。当监控计算机出现故障时,PLC还可以按照设定的程序进行自动控制。
第二种方法是通过控制系统的计算机进行单独的分析运算进行控制,它具有较好的灵活性,但缺点是如果出现如计算机死机等故障时,有可能影响系统的正常运行。好在计算机的一般恢复往往不需要太多的时间。
除空压供气系统自控外,空压站可与制冷站、热力站系统一起建立设备控制网络,实现集中控制,或与工厂控制中心联网,由控制中心的控制器实时远程监控,实现真正的无人值守。
系统构成
对于以上讨论,如果需要实现空压站的整体自控,又许多成熟PLC自控系统可以选用,现以ZH公司的PLC自控系统为例。
该自控系统选用西门子S7-300系列可编程控制器,带有RS422/485网络接口,支持MODBUS等相关网络通讯协议。该系统可以采用专用工业通讯网络技术实施远程联网。空压站自控设备可根据生产实际情况和各设备的特点,以及可能存在的问题,综合各方面因素后确立分级控制网络的实施方案,如图1所示。
■ 硬件配置
现场仪表,受控设备、执行器、带有串行通讯接口的设备(如空压机,冷干机等),PLC和监控计算机。
■ 软件功能
选用专用的工业组态软件(如WINCC或iFIX)用来监视和操作整个生产过程,为控制系统提供通讯、显示及报表管理等功能,各设备控制器自成一子系统,其应用程序功能包括:信息采集,设备控制,故障报警,连锁保护,以及数据处理和通信传输。
在系统实施过程中,还可引入故障检测和故障诊断的处理程序,能够tigao系统的智能化程度,有利于进一步改善自控系统的有效性和可靠性,通过优化调度策略,软件连锁保护等自动控制功能模式的应用,有望将自动化水平tisheng到更高层次,可以为确定空压机设备状态检修点提供依据,并由此获得更大的效益。
结论
总之通过自动化控制可以克服由于人为因素造成的调节滞后等不利因素,减少运行参数的波动,达到减少用工和节约能源的目的。对于tisheng天纺控股有限公司的整体技术水平是相当重要的。
0. 引言
在现代工业控制系统中,PLC以其高可靠性、适应工业过程现场、强大的联网功能等特点,被广泛应用。可实现顺序控制、PID回路调节、高速数据采集分析、计算机上位管理,是实现机电一体化的重要手段和发展方向。但 PLC无法单独构成完整的控制系统,无法进行复杂的运算和显示各种实时控制图表和曲线,无良好的用户界面,不便于监控。将个人计算机(PC)与PLC结合起来使用,可以使二者优势互补,充分利用个人计算机强大的人机接口功能、丰富的应用软件和低廉的价格优势,组成高性能价格比的控制系统。
1. 系统构成
系统设备组成,如图1所示。
图1 系统组成示意图
推进系统中,PC机选用工控计算机。它是整个控制系统的核心,是上位机。其主要利用良好的图形用户界面,显示从PLC接收的开关量和控制手柄的位置,进行一些较复杂的数据运算,并且向PLC发出控制指令。
PLC是该系统的下位机,负责现场高速数据采集(控制手柄的位置),实现逻辑、定时、计数、PID调节等功能,通过串行通讯口向PC机传送PLC工作状态及有关数据,同时从PC机接受指令,向蜂鸣器、指示灯、滑油泵、控制手柄的位置等发出命令,实现PC机对控制系统的管理,tigao了PLC的控制能力和控制范围,使整个系统成为集散控制系统。
2. 通讯协议
计算机与PLC之间的通信是建立在以RS232标准为基础的异步双向通信上的,FX系列PLC有其特定的通信格式,整个通信系统采用上位机主动的通信方式,PLC内部不需要编写专门的通信程序,只要把数据存放在相应的数据寄存器中即可,每个数据寄存器都有相应的物理通信地址,通信时计算机直接对物理通信地址进行操作。通信过程中,传输字符和命令字以ASCⅡ码为准,常用的字符及其ASCⅡ码对应关系如表1所示。
表 1
计算机与PLC进行通讯时,计算机与PLC之间是以帧为单位进行信息交换的,其中控制字符ENQ、ACK、NAK,可以构成单字符帧发送和接受,其余的信息帧发送和接受时都是由字符STX、命令字、数据、字符ETX以及和校验5部分组成,如图2所示。
图2信息帧的组成
在图2中,CMD是通信命令字,其意义如表2所示。
表 2
校验和在信息帧的尾部用来判断传输的正确与否,和校验码的计算方法是将命令码到ETX之间的所有字符的ASCⅡ码(十六进制数)相加,取所得和的低2位数,在后面的通信程序设计里面还会提到。进行差错检验的方法很多,常用的有奇偶校验码,水平垂直冗余校验LRC,目前广泛使用的是CRC校验码,它能查处99%以上18位或更长的突出错误,而在计算机与PLC点对点的短距离通讯时,出错的几率较小,因而采用校验和法,基本能满足要求。
3. 多线程技术及在VC++串口通信程序中的实现
在bbbbbbs的一个进程内,包含一个或多个线程,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等等。一个进程内的所有线程使用同一个32位地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行和什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完任务后再执行。在多处理器的机器上,调度程序可以把多个线程放到不同的处理器上运行,这样可以使处理器的任务平衡,也tigao系统的运行效率。
bbbbbbs内部的抢先调度程序在活动的线程之间分配CPU时间,bbbbbbs区分两种不同类型的线程,一种是用户界面线程(User Interface Thread),它包含消息循环或消息泵,用于处理接收到的消息;另一种是工作线程(Work Thread)它没有消息循环,用于执行后台任务、监视串口事件的线程即为工作线程。
本系统采用MFC编程方法,MFC是把串口作为文件设备来处理的,它用CreateFile()打开串口,并获得一个串口句柄,用SetCommState() 进行端口配置,包括缓冲区设置,超时设置和数据格式等。然后调用函数ReadFile() 和WriteFile() 进行数据的读写,用WaitForSinglebbbbbb() 监视通信事件。在用ReadFile() 和WriteFile() 读写串口时,一般采用重叠方式。因为同步I/O方式是当程序执行完毕才返回,这样会阻塞其他线程,降低程序执行效率。而重叠方式能使调用的函数立即返回,I/O操作在后台进行,这样线程就可以处理其他事务,同时也实现了线程在同一串口句柄上实现读写操作。
使用重叠I/O方式时,线程要创建OVERLAPPED结构供读写函数使用,该结构重要的成员是hEvent事件句柄。它将作为线程的同步对象使用,读写函数完成时hEvent处于有信号状态,表示可进行读写操作;读写函数未完成时,hEvent被置为无信号。
利用bbbbbbs的多线程技术,在辅助线程中监视串口,有数据到达时依靠事件驱动,读入数据并向主线程报告;并且,依靠重叠读写操作,让串口读写操作在后台运行。
4. 上位计算机通信程序设计
以读取PLC输出线圈Y0为首的2个字节的数据为例,编写一个通信程序。查PLC软元件地址表可知,输出线圈Y0的首地址为00A0H ,2个字节的数据即为Y0-Y7和Y10-Y17,根据返回的数据,就可以知道PLC此时的状态,以实现对PLC的监控。在每一次读操作之前,先要进行握手联络。对PLC发请求讯号ENQ,然后读PLC的响应讯号。如果读到的响应讯号为ACK,则表示PLC已准备就绪,等待接收通讯数据。
BOOL CPlcComDlg::ReadFromPLC(char *Read_char, char *Read_address, int Read_bytes)
{ CSerial Serial;//用于串行通讯的类
if(Serial.Open(1))//初始化串行通讯口COM1
{Serial.SendData(&ENQ_request,1);//发送联络讯号
Sleep(20);//等待20ms秒
Serial.ReadData(&read_BUFFER,1);//读取PLC响应讯号
if(read_BUFFER==ACK){
… …
Serial.SendData(&STX_start,1);//向PLC发送“开始”标志代码
Serial.SendData(&CMD0_read,1);//发送“读”命令代码
datasum_check+=CMD0_read;
for(i=0;i<4;i++){
Serial.SendData(&Read_address[i],1);//发送起始元件地址的ASCⅡ代码
… …
Serial.SendData(&ETX_end,1);//发送结束标志代码
Change_to_ASCII(senddatasum_CHECK,datasum_check);//将“和”转化成ASCⅡ代码
Sleep(40);//等待PLC的反应
… …
Serial.ReadData(&Read_char[i],1);//读Read_bytes个字节
if(*readdatasum_CHECK==*readdatasum_check)//“和”效验
{ AfxMessageBox("数据读取成功!");
return TRUE;}
else{AfxMessageBox("校验错误!");
return FALSE;}}
}
5. 结束语
本文作者创新点:笔者提出了一种基于多线程的PC机与PLC的通讯,该通讯程序采用VC比用VB具有更好的实时性;并采用MFC编程方法用重叠结构读写串口,使串口读写在后台进行。该通讯程序可靠、可移植性好。
本通讯程序作为该系统的一个重要组成部分,经现场调试证明,既简单又实用,具有很好的实用价值。同时,该系统具有直观的人机界面和方便的操作方式,具有广阔的应用前景。