西门子模块6ES7223-1BF22-0XA8支持验货
1 引言
可编程控制器在PLC长期的使用过程中也逐渐暴露出了诸如开出回路简单;通信扩展能力差;梯形图语言编程烦琐;调试不够方便等技术局限。伴随着计算机技术、信息技术及工业控制技术的飞速发展,对PLC的发展提出了更高要求,主要体现在:需要更高功能、更快速度、更大容量的PLC产品,以完成大型的控制项目和实现网络化及更强的通讯能力;要求控制更加可靠,性能更加稳定;要求提供多样化的更方便的编程语言等。
为此,南京南瑞自动控制有限公司研制出新一代MB系列智能可编程控制器,它继承了传统PLC的优点,又弥补了传统PLC的技术薄弱环节,是对传统PLC功能的极大tisheng。该产品集智能、可靠、开放、灵活于一身,适合多种复杂控制领域的应用。
2 MB系列智能可编程控制器设计
2.1 MB系列智能可编程控制器结构
MB系列智能可编程控制器采用LAN/FieldBus系统体系结构,提供标准的以太网接口完成与上位机系统的通信。主控模件与智能I/O模件之间采用现场总线CAN作为内部总线及扩展总线,现场总线特有的高可靠性和对现场环境的适应能力,使得MB系列智能可编程控制器系统配置的灵活性和可靠性大大tigao。图1为双主控热备冗余模式下的体系结构。
图1 MB系列智能可编程控制器体系结构
在Inbbb x86硬件平台上,应用WindRiver公司的Tornado集成开发环境,实现基于VxWorks的可编程控制器。
2.2 MB系列智能可编程控制器特点
(1) 高性能的主控模件:的软硬件配置使得主控模件具有强大的数据处理能力、运算能力以及通讯处理能力;
(2) 开放的标准的以太网通信接口:对外提供10/100M以太网接口,支持Modbus/TCP协议,可与上位机及各种监控软件互连;
(3) 先进的现场总线网络:采用现场总线CAN网,具有通讯速率快、抗干扰能力强、成本低、结构简单、扩展灵活、实时性好等特点,为系统扩展及远程控制提供了方便;
(4) 强大的串口通讯功能:提供了串口通讯模件,可自由配置,可方便地与其他智能设备通讯;
(5) 高可靠的热备冗余方案:支持双CPU、双以太网、双电源的热备冗余方案,自动实时备份数据;
(6) MB系列不同型号PLC之间方便灵活的互连:可实现不同PLC之间的无缝连接,无需任何扩展模件,节省系统成本;
(7) 全智能I/O设计和一系列安全性、可靠性设计为系统的安全可靠运行提供了保障:开关量输入模件的光电隔离和软件滤波功能;开关量输出模件的反读、校核及执行继电器的联合控制确保在任何情况下不会发生误动;温度量输入模件先进的每路独立横流源设计大大tigao了采集速度和抗干扰性;模拟量输入模件飞度电容的设计方法保证了内部电路和外界干扰的隔离,大大tigao了采集精度,大限度地降低了模拟量漂移;
(8) 界面友好、使用简单的编程软件
灵活的梯形图编程语言及更多更丰富的梯形功能模块;全汉化的梯形图设计大大tigao了梯形图程序的可读性;直观的可视化流程图编程语言,使复杂控制流程的实现变得非常简单;模块化程序结构,程序之间可相互调用;支持远程编程和调试;
(9) 直接的GPS同步时钟接口
直接提供GPS同步时钟接口,无需编程及设置,硬件对时可达模件级,SOE事件信息更加jingque、可靠;
(10) 方便实用的现地人机接口
提供了与触摸屏的串行通讯接口,支持Modbus通讯协议,可与多种触摸屏直接连接,无需增加辅助设备,也无需编写通讯驱动程序。
2.3 操作系统和开发环境
为保证软件的可靠性和发挥装置的实时性能,项目采用了国际上广泛使用的32位实时操作系统VxWorks。VxWorks是专门为嵌入式微处理器而设计的模块化、高性能、实时的操作系统。VxWorks是目前世界上用户数量大的实时操作系统,具有丰富的应用软件支持、良好的技术服务、可伸缩性、可裁减性和可靠的系统稳定性。VxWorks的开放式结构和对工业标准的支持使开发者只需做少的工作即可设计有效的适合于不同用户要求的实时操作系统。
VxWorks的开发环境是WindRiver(风河)公司提供的Tornado。Tornado采用主机-目标机开发方式,主机系统采用运行bbbbbbs2000/NT的工作站或PC,VxWorks则运行在x86等目标处理器上。Tornado提供了友好的可视化开发界面、交叉编译环境、源码级调试工具、目标机命令解释器和目标机状态监视器等多种应用工具,为应用软件开发提供了一个高效而可靠的平台。
3 关键技术
MB系列智能可编程控制器的软件设计,关键是软件实时性的保证,其中包括任务的划分、任务间通信机制的选择、中断处理程序、网络通信程序和串行口通信程序的编写等关键技术。
3.1 任务划分
嵌入式实时系统中,任务的合理划分对系统的实时性至关重要。进行任务划分时,首先要分析数据流程图中数据的转换,确定哪些数据转换可以并行执行,哪些必须顺序执行。决定应用系统任务划分的主要的因素是系统所实现的功能之间的异步关系,具体可以从I/O功能和系统内部功能两个方面来考虑。
VxWorks的实时内核Wind默认采用了基于任务优先级的抢占式调度算法,同时,也支持轮转调度算法。Wind内核有256个优先级,编号0~255,优先级0高,255低。任务的创建使用taskSpawn()函数来实现。
MBPLC根据功能和优先级划分为以下若干任务:
(1) 主任务:主任务负责硬件初始化、数据库初始化、梯形初始化、流程初始化、网络初始化等工作,并根据数据库的定义创建相应的任务;
(2) CAN1任务:CAN1任务主要完成CAN1网驱动、与I/O模件交换信文等功能,它既可以向I/O模件下发加载、设值、设时、查询等信文,又能接收I/O模件上送的测值、事件等信文,并对数据库进行相应的处理;
(3) 以太网任务:以太网任务主要完成以太网驱动、信文收发等功能,实现PLC与上位机的数据和控制命令的传递,支持标准MODBUS/TCP协议;
(4) CAN2任务:CAN2任务主要完成CAN2网驱动、与外部设备(如通讯装置、保护装置、励磁装置、调速器等等)的信息和控制命令的传递功能。只要外部设备支持CAN接口,就很容易接入PLC中;
(5) 流程任务:流程任务提供了独特的顺序控制流程执行方法,将MBPro编程软件产生的汇编代码进行执行,通过访问数据库得到数据,描述一定的判断和闭锁条件,产生相应的动作,并将运算结果写至数据库中,同时还可将实时执行的各种信息反馈到调试机,以便监视流程的执行情况。流程图是顺序执行的,适于顺控操作,如机组正常开停机控制、紧急停机控制等;
(6) 梯形任务:梯形任务提供了梯形图执行方法,将MBPro编程软件产生的汇编代码进行执行,通过访问数据库得到数据,实现一定的判断和闭锁条件,产生相应的动作,并将运算结果写至数据库中,同时还可将实时执行的各种信息反馈到调试机,以便监视梯形的执行情况。梯形图是循环扫描的,适于逻辑控制及状态控制,可用于主程序、通讯、数据处理、控制启动,如机组状态判断等;
(7) 调节任务:调节任务负责对机组有功、无功进行PID闭环调节,可进行负荷增减、调节投退、调节条件限制、调节增减限制、调节超时判断、调节速度限制等;
(8) 时钟任务:时钟任务管理PLC时钟,处理分同步信号,并定时进行一些硬件操作,如点运行灯;
(9) 自检任务:自检任务自动诊断各类任务、设备的运行情况并进行报警。当PLC因某种干扰或硬件故障等原因发生运行紊乱或死机时,Watchdog能产生自恢复信号,使PLC自动重新恢复运行;
(10) 调试任务:调试任务通过以太网与调试机通讯,负责与编程软件MBPro交换信息,包括上送实时数据、SOE事件、流程报警信息等,并可修改数据库、梯形图及流程图,进行对时、复位、主从切换等操作;
(11) 双机任务:双机任务实现主从机的自动、手动切换,并能通过内部高速网备份对侧重要数据。当主机的某些重要设备或任务出现故障时,从机能自动升为主机;
(12) 显示任务:显示任务通过串口与智能型液晶显示触摸屏通讯,完成当地数据显示和操作功能,包括显示测点信息、事故一览表、光字、模件状态等,并能发出控制命令、设置定值、整定参数等;
(13) 串口任务:串口任务完成与外部设备通讯功能,实现与外部设备的数据和命令的交换,如GPS、温度巡检装置、交流采集装置等等。支持Modbus标准规约,必要时可根据需要编程实现特殊规约。
3.2 任务间通信
任务间通信机制是多任务间相互同步和通信,以协调各自活动的主要手段。VxWorks提供的任务间通信手段按其速度由快到慢依次是信号量、消息队列、管道和套接字。常用的通信机制是信号量和消息队列,套接字(Socket)用于网络编程。
(1) 信号量
信号量是实现任务互斥、同步操作的主要机制,VxWorks提供的信号量经过了高度优化,在所有任务间通信机制中,速度快。对于互斥,信号量可以上锁对共享资源的访问,并且比禁止中断或禁止抢占提供更jingque的互斥粒度。对于同步,信号量可以协调外部事件与任务的执行。
MBPLC使用二进制信号量来解决多个任务读写数据的互斥问题,使用计数器信号量来解决定时器计数问题;
(2) 消息队列
消息队列是VxWorks提供的单CPU中任务间通信的主要机制。消息队列允许以FIFO或基于优先级方式排队消息,消息的数目可变,消息的长度可变。任何任务都可以向消息队列发送消息,也可以从消息队列接收消息。多个任务允许从一个消息队列收发消息。但是,两个任务间的双向通信通常需要两个消息队列,各自用于一个方向。
MBPLC使用消息队列来实现任务间的数据交换。首先调用msgQCreate()函数创建消息队列,再用msgQSend()和msgQReceive()函数发送和接受消息,后调用msgQDelete()函数中止消息队列。
3.3 中断处理程序
中断处理程序是实时系统的重要组成部分。系统通过中断机制了解外部世界,并对外部事件作出响应。实时系统的反应取决于系统对于中断的响应速度和中断处理程序的处理速度。由于在很短的时间内,可能产生很多中断,高优先级的中断将阻塞低优先级的中断,因此,必须使中断处理程序的处理时间短。
MBPLC的中断包括秒中断、分同步中断、CAN网中断以及BSP级的以太网中断、硬盘中断等等。下面以秒中断(中断级别为5)为例说明中断的使用方法:
ntConnect(INUM_TO_IVEC(INT_VEC_GET(5)), SECISR, 0);
sysIntEnablePIC(5);
这两个函数用于将中断处理程序SECISR()与秒中断相关联,存放于中断向量表的对应表项中,当秒中断事件出现时,VxWorks内核将调用中断处理程序。这时可利用中断处理程序释放一个信号量(通过semGive()函数),通过该信号量驱动相应的数据处理模块(通过sem- Take()函数),从而实现实时操作。
此外,我们还使用intLock()函数和intUnlock()函数来设置中断屏蔽,用以保证受保护的代码在执行过程中不受中断的干扰。
3.4 网络通信
网络通信一般可通过套接口(socket)实现。Vx- Works提供了标准的BSD socket调用,具有两种类型:Stream socket(全双工流类型)、Datagram socket(数据报类型)。前者支持TCP协议,后者支持UDP协议。任何一个任务都可以打开一或多个socket,其它任务的socket可与之连接。
客户端程序首先调用socket()函数产生用于与各分系统连接的套接字,然后初始化一个套接口结构体,为其赋上服务端的IP地址和端口号,并将其作为函数connect()的参数,调用connect()函数主动去连接服务器端。连接成功后,用send()和recv()函数读写数据,直到全部数据都交换完,再用close()函数关闭套接口。
服务器端也先用socket()函数建立套接口,再调用bind()函数将自身IP和端口号绑定,以保证客户端正确识别,然后用listen()函数指明已准备好接受来自客户端的连接,又用accpet()函数接受一个连接请求,接受后用send()和recv()函数来传输数据,直到全部数据都交换完,再用close()函数关闭套接口。为了确保服务器能够实时接收客户端的数据,当服务端与客户端建立连接之后,必须嵌入循环,利用recv()函数不断等待客户数据。同时客户端每次发送数据之后也应等待服务端回复,建立握手机制。
3.5 串行口通信
在VxWorks中,将I/O系统设计成为任何类型的设备,提供一个简单、统一、独立于设备的接口,任何对于串行口的操作仍然可以视为对一个文件的操作,而不必了解关于设备或程序驱动实现的细节。在使用串口之前利用open()打开相应串口,再用ioctl()设置波特率、数据位、停止位、奇偶校验等属性,然后依据串口打开时的读写标志,调用函数write()、read()对串口进行只读操作、只写操作或同时进行读写操作,后用close()关闭串口。
对于串口通信,仍然要关心数据接收的实时性。可采用中断方式,利用VxWorks提供的select()函数的事件触发机制,将读串口的任务阻塞使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,tigao系统的实时性。
4 结束语
嵌入式实时操作系统VxWorks及其开发环境的引入,大大简化了可编程控制器软件设计的复杂性,缩短了开发周期,tigao了产品的实时性和可靠性。因此,VxWorks RTOS在MB系列智能可编程控制器中的应用是成功的。MB系列智能可编程控制器作为新一代的PLC产品,相信能在电力、化工、工业过程控制、城市及楼宇自动化等各种复杂控制领域发挥更大的优势,使这些行业的自动化水平得到更大的tigao。
1 引言
泵站在运行、检修过程中,需要及时排出泵房内各种积水,其中一部分可自流排出泵房外,大部分则汇集到集水井,然后由排水泵排出泵房。为了保证泵房不致受淹或受潮,需要对排水实现自动控制,其基本要求包括:
(1)排水泵能自动启停,保证集水井水位在规定范围内;
(2)当集水井水位在规定的低水位时,排水泵能自动停转;
(3)当工作排水泵故障,或来水量增大、集水井水位升至备用排水泵启动水位时,备用排水泵能自动投入;
(4)排水泵之间能互为备用运转,当备用排水泵投入时,能发出警报信号。
本文结合工程实践,设计了一套泵站集水井自动控制系统,具有结构简单,运行高效,维护方便、造价低廉等特点,适应泵站“无人值班、少人值守”的发展要求,抛砖引玉,以期为我国泵站自动化发展尽一份力量。
2 系统硬件配置
该系统结构如图1所示。设备部分主要由排水泵(一用一备,单机liuliang100m3/h、扬程30m)、电机(2×30kW,软启方式)、压力表(2台)、闸阀(10台)、蝶阀(2台)、逆止阀(2台)、仪表阀(2台)等构成。控制部分主要由PLC、水位传感器、上下限开关、报警装置、断路器、接触器、热继电器、温湿加热器、选择开关等构成,其中,PLC采用micro系列,通过RS-485接口与上位机通讯,AI≥5,DI≥16,DO≥8;水位传感器采用投入式静压液位变送器,量程0~5m,测量精度1‰,输入信号4-20mA,工作温度5~55℃;上下限位开关采用Omron机械式液位浮子开关,当水位越限时动作(给出报警信号);报警装置由电源指示灯、声光报警器、消警按钮等组成;断路器和接触器控制排水泵启停的执行;热继电器和温湿加热器起到保护机组作用;选择开关决定系统的运行方式(自动或手动)。
图1 系统结构图
3 系统工作原理
系统控制设计采用自动/手动方式,方式选择通过集水井控制箱中的二次回路、接触器、中间继电器、选择开关等的切换实现。正常情况下,选择开关置于自动位置,当自动控制系统出现问题时,需到现场切换为手动方式。
3.1 手动方式
当选择开关打至手动1#时,即1#泵处于工作状态、2#泵处于备用状态,按下启动按钮,接触器1吸合,1#泵工作;当选择开关打至手动2#时,即2#泵处于工作状态、1#泵处于备用状态,按下启动按钮,接触器2吸合,2#泵工作。
3.2 自动方式
当选择开关打至自动位置时,集水井排水实现自动控制。当集水井水位上升到工作泵启动水位时,接触器1吸合,中间继电器1动作,工作泵运行,常开接点1自保持,直至集水井水位恢复至正常水位,接触器1断开,常开接点1失电,工作泵停运;若集水井水位不降反升至报警高水位时,接触器2吸合,中间继电器2动作,备用泵运行,常开接点2自保持,直至集水井水位恢复至正常水位,接触器1、2断开,常开接点1、2失电,两台排水泵停运。
备用泵运行期间,信号回路会发出警报信号送至上位机;当工作泵故障时,备用泵自动转入工作状态,信号回路也会发出警报信号送至上位机。
为达到启动均衡的工作效果,可以在PLC中设定累计工作次数,当工作次数到设定值时,工作泵自动转入备用状态,而备用泵则自动转入工作状态。
4 系统软件编程
系统编程软件采用施耐德concept,为tigao抗干扰能力,设计中采用了数字滤波、故障自检、控制口令等措施,保证控制操作的正确性和可靠性。系统控制流程如图2所示。主要实现功能包括:
图2 系统控制流程图
(1)数据采集和处理。采集所有I/O点的模拟量(主要有集水井水位、电动机工作电流、水泵轴温、电机温度、排水量等)、开关量(主要有手动/自动控制信号、远方/就地控制信号、水泵运行/停止状态、水泵故障信号等),记录所有事件信息;对采集量进行统计表或趋势图生成,对事件信息进行顺序记录处理。
(2)监视和报警。进行状态、越限、过程和故障等监视;对越限和故障进行判断和动作(报警)并及时记录(由上位机完成)以便查询、打印和分析。
(3)控制和调节。排水泵正常启停操作、排水泵事故或紧急停止操作等方面的控制;参数整定与限值修改,远方/本地、手动/自动等工作方式切换等方面的调节。
(4)人机对话和扩展接口。友好显示(由上位机完成)状态表、示意图、操作流程、运行指导、报警提示等画面;PLC上预留扩展槽,便于监控量的增设。
(5)数据统计和运行管理。工作泵运行次数等方面的统计和分析;生产报表的生成和数据查询的打印(由上位机完成),使用和管理权限的登陆。
系统编程语言采用梯形图。根据以上功能要求编写的梯形图如图3所示。编程过程中考虑了系统扩展性,采用模块化、功能化结构进行设计。
图3 系统控制梯形图
5 结束语
泵站集水井排水实现自动控制,确保了排水任务的及时执行,减轻了运行人员的现场监控量,tigao了泵站自动化水平。深圳市东部供水水源工程的东江和永湖两座泵站的集水井都采用了类似自动控制系统,运行效果良好,值得推广和应用
1 引言
与其它工业控制系统相比,PLC控制系统具有可靠性高、抗干扰能力强等突出优点,因而广泛应用于工业控制领域。对于那些不必采用上位机监控+PLC现场控制的简易控制系统,操作面板的完善与否直接影响到整个系统的智能化程度高低。对小型控制系统而言,在满足功能的前提下,高性价比一直是设计人员追求的目标,若采用触摸屏(如SIEMENS的TP270)+组态软件(如PROTOOL)的方式组成人机界面,势必使整个系统的性价比大为降低,因此,提出基于PLC的矩阵式键盘设计方案具有较大的实际意义。
2 矩阵式键盘工作原理
矩阵式键盘是相对于独立式键盘而言的,也叫行列式键盘,是当键数较多时为节省I/O点而采取的一种结构。在微机系统中,矩阵式键盘的构成方式如图1所示。
图1 矩阵式键盘结构图
首先,判断整个键盘上有无键按下。方法是:将列全输出为0,然后读入行的状态,如果行读入的状态全为1,则无键按下,不全为1则有键按下。
其次,若有键按下则逐列扫描。方法是:依次将列线送低电平0,检查对应行线的状态;若行线全为1,则按键不在此列;若不全为1,则按键必在此列,且是与0电平行线相交的那个键。后,确定键值,并进入键处理程序。
3 矩阵式键盘硬件设计
在PLC系统中设计矩阵式键盘不仅要用到输入口,而且也要用到输出口,因此,了解PLC I/O口内部电路的结构以及工作原理是十分重要的。下面以S7-200的DC输入、输出模块为例,简要说明其工作原理。
3.1 输入模块
如图2所示,为PLC的DC输入模块,其中,K1-输入开关;M-公共端;I0.0-输入点;R1、R2的典型值为5.6K、1K。
图2 直流输入模块电路图
工作原理:若输入开关K1闭合,则输入信号经RC滤波和光电隔离后,转换为PLC的CPU所需的电平(一般为5V),再经过输入选择器与CPU的总线相连,从而将外部输入开关的“ON”状态输入到PLC内部,此时输入指示灯亮,且与该输入点对应的输入映像寄存器为“1”。若输入开关断开,则信号没有形成通路,此时输入指示灯不亮,表示为“OFF”状态。
3.2 输出模块
如图3所示,为PLC的DC输出模块,其中,L+接DC24V;Q0.0-输出点。
图3 直流输出模块电路图
工作原理:若用户程序将输出置为“ON”状态,则在刷新输出阶段CPU将“ON”信号送给输出锁存器,再经过光电耦合送给场效应管,使之饱和导通,此时输出指示灯亮,且通过场效应管将DC24V和负载连通,从而使得负载获得工作电流。反之,若用户程序将输出置为“OFF”状态,则输出指示灯不亮,情况与上述相反。
3.3 键盘的硬件设计
由以上分析可知:PLC的I/O口内部电路与一般的计算机系统(如单片机系统)有较大的不同,这就决定了在PLC系统中设计矩阵式键盘也有其特殊性。首先,由于输入模块中有RC滤波电路,其滤波延迟时间可以通过编程软件设置,即其本身存在硬件消抖动的功能,因此不再需要软件延时消抖动;其次,由于用到了PLC的输出口,它本身可以输出对M端有DC24V的电压,因此不再需要外接电源;后,由于PLC的输入口有6K左右的输入电阻,因此可以将DC24V的电压直接加上,若为了延长I/O口的使用寿命,一般按照输入模块的技术指标来配置限流电阻,经查阅输入电流的典型值为4mA,一般取R1=R2=R3=0.5K即可。如图4所示为3行3列矩阵式键盘的结构图。
图4 3×3键盘结构图
4 矩阵式键盘软件设计
4.1 PLC的扫描工作方式
当PLC处于“RUN”工作模式下时,除上电初始化外,其它程序都采取周而复始的循环扫描方式,称之为“PLC的扫描工作方式”,其执行流程如图5所示:
图5 PLC的扫描工作流程
在设计键盘时可暂不考虑通信和自诊断,则在一个扫描周期内剩下以下三个主要阶段:
(1) 输入采样阶段,CPU将所有物理输入点的状态存入对应的过程映像寄存器中,到下次输入采样前,过程映像寄存器的内容均保持不变;
(2) 程序执行阶段,CPU按照从左到右、从上到下的顺序执行程序,将运算结果写到输出映像寄存器或数据存储区内;
(3) 输出刷新阶段,在程序执行完后,CPU将过程输出映像寄存器的状态几乎同时的更新到物理输出点。
4.2 键盘的软件设计
矩阵式键盘的软件设计相对较为复杂,但无非是实现微机系统中所描述的键盘扫描程序的四个功能:
(1) 判断有无键按下;
(2) 去机械抖动;
(3) 求按下的键号;
(4) 键闭合一次仅进行一次键功能操作。
4.3 键盘设定及程序设计
再结合微机系统中矩阵键盘的原理,设计3×3矩阵式键盘,特做如下设定:
(1) 设定0~8号键分别与M0.0~M1.0对应,键按下,对应的位存储点为“1”,键松开则为“0”;
(2) 设定I0.0、I0.1、I0.2对应键盘的第0列、第1列、第2列,Q0.0、Q0.1、Q0.2对应键盘的第0行、第1行、第2行,M1.1为“有键按下”标志位;
(3) 按图4所示的方式构成3行3列矩阵式键盘,流程图如图6。
图6 键盘程序流程图
为增强程序的可读性,利用STEP7-Micro/WIN V4.0编程软件,用符号地址替代地址,编制3×3键盘的STL程序如下所示。
Network 1 判断有无键按下
LDN 有键按下
S 第0行, 3 //全行扫描
LD 第0列
O 第1列
O 第2列 //全列读入
AN 有键按下
S 有键按下, 1 //有键按下,置标志位
JMP 0
LDN 有键按下
MOVW 0, MW0 //无键按下,清零跳出
JMP 9
Network 2 散转程序
LD 有键按下
A 第0行
JMP 10 //跳至第0行
LD 有键按下
A 第1行
JMP 11 //跳至第1行
LD 有键按下
A 第2行
JMP 12 //跳至第2行
Network 3 逐行扫描
LBL 0 //第0行处理
LD 有键按下
RI 第0行, 3
SI 第0行, 1 //立即置位Q0.0
JMP 9
LBL 10
LD 第0列
= KEY_0 //0键
JMP 9
LD 第1列
= KEY_1 //1键
JMP 9
LD 第2列
= KEY_2 //2键
JMP 9
LBL 1 //第1行处理
LD 有键按下
RI 第0行, 3
SI 第1行, 1 //立即置位Q0.1
JMP 9
LBL 11
LD 第0列
= KEY_3 //3键
JMP 9
LD 第1列
= KEY_4 //4键
JMP 9
LD 第2列
= KEY_5 //5键
JMP 9
LBL 2 //第2行处理
LD 有键按下
RI 第0行, 3
SI 第2行, 1 //立即置位Q0.2
JMP 9
LBL 12
LD 第0列
= KEY_6 //6键
JMP 9
LD 第1列
= KEY_7 //7键
JMP 9
LD 第2列
= KEY_8 //8键
JMP 9
LD 有键按下
R 有键按下, 1
//无键按下,清标志位
Network 4 软件延时
LBL 9
LD 有键按下 //有键按下才延时
FOR VW0, 1, 500
NOP 0
NEXT
4.4 程序的说明
(1) 程序采用了立即置位、复位指令SI和RI,是为了更及时的置位复位输出点,使程序的执行不受扫描周期的影响,也可用字节立即写指令MOV_BIW来实现,但应该考虑对其它未用点的影响。
(2) 程序的后采用了软件延时,是为了解决程序指令执行时间与输入输出滞后时间的不匹配。利用编程软件STEP7-Micro/WIN V4.0中的System Block下的bbbbb Filters选项可以设置输入滤波时间,默认为6.4ms,减少滤波时间可以相应的减少软件延时次数,但若滤波时间太小又达不到消抖动的目的。
(3) 程序中没有考虑多键同时按下的问题,在现有的程序中,若不同行有多个键按下,均以先按下的那个键为准进行响应,但若同一行上有多个键按下,则又分要几种情况,因此在应用时,应加强对按键的限制条件,避免由于误操作而造成生产设备的损坏。
(4) 程序中对每个按钮的响应均是按下该键,则对应的存储位为“1”,放开该键,则为“0”,没有其它较为智能的功能。若键盘中有“加速”、“减速”等类似键时,往往希望有连续加减的功能,即按下“加速”一定时间后(如500ms),按照每规定时间(如100ms)增加一个单位的速度值,此时可以利用两个定时器实现,其STL程序如下。
LD 加速
TON T37, 5
LD 加速
EU
= 加速上升沿
LD T37
AN 每100MS通电一次
TON T38, 1
LD T38
= 每100MS通电一次
LD 每100MS通电一次
O 加速上升沿
EU
+I 1, 速度存储值
5 结束语
本文提出了在PLC系统中设计矩阵式键盘的一般方法并给出了3×3键盘的硬件连线图和STL程序。在键数较多时,矩阵式键盘可以大大节省PLC的I/O点数,但程序设计的复杂度也随之增加,因此使用时应在系统的硬件成本和实时性之间加以均衡考虑。此外,本文的设计思路具有通用性,只需稍加变动,就可移植到其它品牌的PLC中。文中的STL程序均已通过S7-200的编程软件STEP7-Micro/WIN V4.0在CPU226 DC/DC/DC上调试通过,说明了本文设计方法的可行性。