中控系统,VB上位机软件要求
基于VB6.0的上位机与PLC实时通信技术
![基于VB6.0的上位机与PLC实时通信技术](https://img.taocdn.com/s3/m/d058d20f0a4c2e3f5727a5e9856a561252d321d1.png)
基于VB6.0的上位机与PLC实时通信技术VB6.0是一种编程语言,可用于开发上位机与PLC之间的实时通信技术。
PLC是一种可编程逻辑控制器,用于控制和监控自动化设备。
通过实时通信,上位机可以与PLC进行数据交换和控制操作。
1. 通信协议选择:PLC与上位机之间的通信需要选择适当的通信协议。
常见的通信协议包括Modbus、OPC、Profibus等。
根据实际需求和设备的支持情况选择合适的通信协议。
2. 串口通信:VB6.0通过串口通信与PLC进行连接。
通常采用RS232、RS485等串口通信方式。
在编程中,需要设置串口的波特率、数据位、停止位、校验位等参数。
通过VB6.0的串口通信类库,可以实现数据的读取和写入。
3. 数据采集和监控:通过VB6.0实现对PLC数据的采集和监控。
可以使用定时器触发方式,周期性的读取PLC设备的数据。
通过VB6.0的数据处理和显示功能,可以实时显示PLC设备的状态和数据信息,如温度、压力、流量等。
4. 控制指令的发送:通过VB6.0向PLC发送控制指令,实现对设备的控制。
根据PLC 的控制逻辑,编写相应的控制程序,将控制指令发送给PLC设备。
通过串口通信,将控制指令发送出去,实现设备的开关、调节等操作。
5. 异常处理:在实时通信中,可能会出现通信故障、数据错误等异常情况。
需要在编程中添加异常处理的代码,对异常情况进行处理,保证通信的稳定性和可靠性。
基于VB6.0的上位机与PLC实时通信技术可以广泛应用于自动化控制、工业监控、智能家居等领域。
通过实时通信,可以实现对设备的远程监控和控制,提高设备的自动化程度和工作效率。
在编程过程中,需要注意通信协议的选择和参数的设置,以确保通信的正确和可靠。
需要添加适当的异常处理机制,提升系统的稳定性和可靠性。
上位机软件配置与使用
![上位机软件配置与使用](https://img.taocdn.com/s3/m/1c41be21192e45361066f56f.png)
注意: 注意:
•Excel文档中,文件页不能增减,不能调换位置,每页固定对应一 个基础信息表,表中非固定行为可以导入系统的参数,固定表头 中的信息只是用作用户信息输入时的参考,请注意不要录入重复 关键码,关键码一般是固定列中的内容。 •页表中所有信息项均为必填项,即使RTU厂商不同,也须使用其 默认值。 •填写excel时,如果名称中有下划线,应填写英文输入法的下划线 。 •井场信息中的站号统一为128。 •油井信息中的井代码为三位数的字符串。 •注水井的偏移按照现场调试人员实际设定的偏移填写。 •填写摄像头IP地址时,应根据现场实际情况,如果有中心服务器 ,IP填写为中心服务器IP;如果没有中心服务器,IP应填写视频服 务器的IP。
添加“ 长庆井场监控力控版\ 添加“C:\Program Files\Echo\长庆井场监控力控版 长庆井场监控力控版 安控井场驱动.exe查看油井巡检 查看油井巡检 水井巡检 生产曲线 运行报表 单元 报警 用户管理等
一、上位机软件的构成与联系 二、标准站控平台的配置与使用 三、量油软件的配置与使用 四、上位机常见故障排查
配置阀组间信息
•井场名称:阀组所属井场名称,比如董78-61、董72-61; •阀组名称:阀组的名称,如董阀78-61、董阀70-63; •字母编码:阀组字母编码,首字母的简写,如DF78_61、 DF70_63; •IP地址(安控):井场主RTU的IP地址,与井场信息表中所填 IP保持一致(注:如接的是阀组间通讯RTU则是阀组间的IP地 址); •通讯站号(安控):阀组间通讯RTU设置的地址+1; •通讯使能(安控):安控专用,可禁止RTU驱动采集该井场 数据,0为禁止,1为允许。默认填写1; •阀组语音:可填写大写的阀组名称。如董阀七八杠六幺、董 阀七二杠六幺。
基于VB的多路数据采集系统上位机软件设计(精)
![基于VB的多路数据采集系统上位机软件设计(精)](https://img.taocdn.com/s3/m/2f75f51c0740be1e650e9a96.png)
图1烘炉温度多路数据采集系统上位机软件界面基于VB 的多路数据采集系统上位机软件设计张瑜,韩玉杰,闵昆龙(东北林业大学机电工程学院,黑龙江哈尔滨150040摘要:采用Visual Basic 6.0设计多路数据采集系统的上位机软件,实现对由单片机组成的测量系统数据的采集、传输、保存、分析、绘制曲线图以及数据和曲线图的打印。
文中以烘炉内多点温度数据采集系统设计为例说明用于串口通信上、下位机的软件设计,以及VB 中mscomm ,msflexgrid 等控件的用法。
关键词:多路数据采集;上位机;mscomm 控件;msflexgrid 控件中图分类号:TP311文献标识码:A文章编号:1001-4462(200701-0029-02Software Design in Host Computer of Multi-data AcquisitionSystem Based on VBZHANG Yu,HAN Yu-jie,MIN Kun-long(College of Machinery and Electricity of Northeast ForestryUniversity ,Heilongjiang Harbin 150040,ChinaAbstract :This article mainly explained how to design software for host computer of multi-data acquisition system based on visual basic 6.0.Also it displaied that the whole single-chip system how to acquire,communicate,save and analyze the data,how to draw graph,and how to print data and graph.The test taked the oven ’s multi-temperature data acquisition system for example,expounded the design of software of host and slave computer that using for serial communication,and also explained the mscomm control and msflexgrid control of visual basic.Key words :multi-data acquisition;host computer;mscomm control;msflexgrid control微软公司的visual basic 6.0是windows 应用程序开发工具,是目前应用最为广泛、易学易用的面向对象的开发工具,并且为用户提供了大量的控件。
VB上位机
![VB上位机](https://img.taocdn.com/s3/m/681ad2d58bd63186bcebbcf5.png)
本人初学者,许多地方显得粗糙笨拙,但总算是成功了,不过自我感受VB真的很简单,我大致学了两三个星期就可以了。
本文只同向我一样的初学者分享一下经验,毕竟咱不是专业的。
下面开始。
上位机可方便地实现与单片机之间进行信息传递交互,能够更加容易对机械手臂进行控制,实现操作可视化,更加直观,保存重要数据等功能。
我们利用Visual Basic 6.0(以下简称VB)来编制上位机,VB是一种功能强大、简单易学的程序设计语言。
它不但保留了原先Basic 语言的全部功能,而且还增加了面向对象程序设计功能。
它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。
本实验涉及控制六路舵机,所以需要编制上位机实现一次向下位机传输含有六个数据的数组,同时接受来自下位机的数组,并显示。
整个过程可分为如下几个过程:一:VB是面向对象的语言,首先需要绘制程序界面该上位机大致分为左边的功能部分与右边的可视化调节部分。
功能部分有端口选择,用以选择合适的端口进行串口通信,波特率选择,打开与关闭端口,动作设置等。
为了便于布局,应用frame控件建立区域,再将控件拖到frame区域中,对于功能相同的控件来说,建立控件组的方式会使编程避免重复繁琐,例如HScrollbar控件,先向frame区域内拖入一个HScrollbar控件,再复制,粘贴到frame区域内部,则提示是否建立控件组,点击确定即可。
这样便为后续编程带来很大的方便。
调节部分运用Hscrollbar控件来粗略调节度数,设定按钮与文本框配合来精确调节输出度数。
用右列文本框实时读取舵机当前角度。
用optionbutton控件来选择hscrollbar的步进精度,这里分为0.1度与1度两个不同的选项。
由于一组optionbutton中在程序运行中只能有一个处于选中状态,根据本程序要求,每一横列的两个optionbutton为一组,这样就需要frame控件,在同一个frame区域里的optionbutton默认为一组。
上位机图形监控组态软件详细技术规定
![上位机图形监控组态软件详细技术规定](https://img.taocdn.com/s3/m/94430e0e0b4e767f5acfce23.png)
图形监控组态软件的详细技术要求说明概述运行平台(向下兼容):服务器操作系统:Windows Server 2012 64 位中文标准版: 客户端操作系统:Windows 8/win7 R2 64 位: 关系型数据软件:Microsoft SQL Server 2014 Standard&Enterprise。
实时数据通信/处理服务器从现场 PLC、RTU 等控制器中或第三方系统的数据源实时采集数据,并对数据进行处理和运算(包括实时数据的采集、报警处理、数据加工等)。
用户通过监控计算机获取系统的各种实时数据,以图形、动画、趋势等各种方式展示,并进行监视和控制:对于需要即时归档存储的数据,实时数据通信/处理服务器直接将这些数据推入实时历史数据进行存储,且用户能够在监控计算机的监控画面中方便的直接调用历史数据的趋势、数据查询、数据统计报表等。
如:1)实时的监控画面:2)实时/历史报警:3)实时/历史的趋势:4)各种报表:5)数据挖掘: 6)系统内各种数据的任意查询等。
系统总体架构要求采用基于系统平台的整体解决方案来架构系统,支持面向对象的开发技术和.NET、C#、Java等高级编程语言,采用面向对象的设计,以设备为中心,具备设备对象及代码重用性。
为了确保系统维护管理的高效性,该重用性应通过面向对象设计方式实现,包括对所有对象的派生和继承等: 能够对系统进行集中开发、集中诊断和集中管理,支持以部署(Deploy)的方式来远程部署和管理整个应用工程。
平台具有良好的开放性,支持 OPC、DDE 和Suitelink 等通讯协仪,并且能够提供支持厂区一、二期 I/O 设备的设备驱动程序,包括:PLC、控制器、智能分析仪、RTU 等,即提供这些设备的驱动程序不需用户再另外购买:通过工程师站可以完成对数据采集、数据处理、模型构建、组态配置、应用功能开发、远程分布式部署和工程管理等功能模块的创建和管理维护。
力控软件上位机软件配置与使用
![力控软件上位机软件配置与使用](https://img.taocdn.com/s3/m/c1806825bcd126fff7050b13.png)
注意:
•Excel文档中,文件页不能增减,不能调换位置,每页固定对应一 个基础信息表,表中非固定行为可以导入系统的参数,固定表头 中的信息只是用作用户信息输入时的参考,请注意不要录入重复 关键码,关键码一般是固定列中的内容。 •页表中所有信息项均为必填项,即使RTU厂商不同,也须使用其 默认值。 •填写excel时,如果名称中有下划线,应填写英文输入法的下划线 。 •井场信息中的站号统一为128。 •油井信息中的井代码为三位数的字符串。 •注水井的偏移按照现场调试人员实际设定的偏移填写。 •填写摄像头IP地址时,应根据现场实际情况,如果有中心服务器 ,IP填写为中心服务器IP;如果没有中心服务器,IP应填写视频服 务器的IP。
配置注水井信息
•注水井名称:注水井的名称,如董注78-59、董注72-59; •井场名称:注水井所在井场名称,必须与井场基础信息表里的 井场名称一致,如董78-61、董74-59; •IP地址(安控):安控专用,阀组间通讯RTU所在井场主RTU 的IP地址; •阀组间:注水井所在的阀组间名称,必须与阀组间础信息表中 的阀组简称一致,如董阀78-61、董阀74-59; •通讯站号(安控):安控专用,指阀组间通讯RTU地址+1; •地址偏移(安控):安控专用,该注水井的地址偏移量,可理 解为注水井序号。 •通讯使能(安控):安控专用,可禁止RTU驱动采集该井场数 据,0为禁止,1为允许。默认填写1; •井字母编码:注水井的编码,按照首字母进行编写,如 DZ78_59、DZ72_59; •井名语音:井口语音报警时的声音,可填写大写的注水井名称 。如董注78-61填写为董注七八杠六幺。
上位机软件配置与使用一上位机软件的构成与联系二标准站控平台的配置与使用标准站控平台的配置与使用标准站控平台的配置与使用三量油软件的配置与使用量油软件的配置与使用量油软件的配置与使用四上位机常见故障排查四上位机常见故障排查四上位机常见故障排查数字化上位机软件是由一套标准软件构成该标准软件能够实现站点流程的监控油水井的电子巡查功图查询与分析报表的管理曲线的生成报警的提示油量的计量与分析等等一系列功能
基于VB的上位机程序设计说明
![基于VB的上位机程序设计说明](https://img.taocdn.com/s3/m/b48978224b35eefdc8d33365.png)
3 基于VB6.0的上位机程序设计内部培训资料(不得转载)随着嵌入式系统在电子领域应用的不断深入,可视化的单片机控制与检测系统越来越成为单片机技术的应用热点。
广泛应用到工业自动化生产、交通、医疗、教育和各种自动控制等领域,如心电监护、全方位视频跟踪监视。
在这些复杂的数字系统中,计算机被称为上位机,通过上位机和相关的软件实现传感信号的检测和对外部设备的控制。
利用计算机实现可视化的控制系统包括上位机程序设计、接口设计和单片机系统设计。
单片机相比较计算机而言又叫下位机,是直接对检测对象测量和控制的系统,有时也把接口与下位机设计在在一个系统中统称接口电路。
基于计算机基础的上位机程序可以提高复杂的单片机控制系统的人机交互功能。
本项目设计的内容是一个简单的温度检测系统,上位机程序用来检测和显示单片机系统发送的数据,下位机是一个简单的温度检测系统,通过USB接口虚拟一个串口传输数据,上位机程序实时显示温度,并通过曲线的形式描绘出温度的变化过程。
上位机程序VB6.0设计,程序执行后,上位机程序要定时向下位机即单片机系统发送指令,下位机在接到命令后就开始发送温度信息。
上位机显示的温度曲线要能准确的表示当时的温度,误差不能超过5%,能过显示的温度范围在20摄氏度到80摄氏度之间。
上位机程序两次接收的温度数据间隔控制在在1秒钟左右,能够显示的温度曲线的总时间在2分钟左右。
3.1 VB简单认识VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows 环境下的各类应用程序。
今天我们以VB6.0为基础,简单的认识VB,然后我们就可以利用VB这个强大的开发工具去开发我们需要的各类程序。
3.1.1 VB6.0基本操作在Visual Basic安装成功之后,安装程序自动在【开始】菜单中建立Visual Basic 6.0的程序组和程序项。
基于51单片机的温度测试系统 VB上位机
![基于51单片机的温度测试系统 VB上位机](https://img.taocdn.com/s3/m/2fb21d3687c24028915fc341.png)
简介:这是我学完51单片机的第一个作品,单片机型号为89c52,时钟芯片用的是DS1302,温度传感器用的是DS18B20,USB供电,掉电后时钟芯片继续工作,且已经设置好的温度上下限和闹钟数据不会丢失。
上位机是用VB语言写的,只是一个模型,从上位机上可以观察当前温度值以及温度上下限,以后会更加完善其功能。
下面是下位机程序和上位机程序,程序比较长,而且下位机程序的键盘部分写得有点麻烦。
下位机程序:/***************************************************************************************作者:江苏科技大学电子信息科学与技术二班吴亚迪注:此程序可以实现万年历闹钟温度测定温度超过上下限发出警报断电后时钟不停,且已设好的温度上下限和闹钟数据不会丢失****************************************************************************************/#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]="20 / / DAY- ";uchar code table1[]=" : : ";uchar code table2[]="0123456789";uchar code table3[]=" alarm clock ";sbit ds_clk=P3^6;sbit ds_io=P3^7;sbit ds_rst=P1^4;sbit lcdrs=P1^0;sbit lcdrw=P1^1;sbit lcden=P1^2;sbit scl=P3^2;sbit sda=P3^3;sbit ACC_7=ACC^7;sbit P34=P3^4;bit alarm=0;//闹钟标志位bit stop_alarm=0;//停止闹钟标志位uchar i,j;uchar th,tl; //温度上下限uint th1,th2,tl1,tl2;uchar min,hour,sec; //闹钟时分秒uint min1,min2,hour1,hour2,sec1,sec2;void delay(uint i){uint j;for(;i>0;i--)for(j=0;j<110;j++);}/***********************************************************************************************DS1302部分**************************************************************************************************/ char s,s1,s2; //时钟秒char m,m1,m2; //分char h,h1,h2; //时char day; //星期char date,date1,date2;//日期char mon,mon1,mon2; //月char year,year1,year2;//年void write_ds(uchar add,uchar date ) //向ds1302指定地址写数据{uchar i,temp;ds_rst=0;ds_clk=0;ds_rst= 1;for ( i=8; i>0; i-- ){ds_clk = 0;temp = add;ds_io= temp&0x01;add >>= 1;ds_clk = 1;}for ( i=8; i>0; i-- ){ds_clk = 0;temp = date;ds_io =temp&0x01;date >>= 1;ds_clk = 1;}ds_rst= 0;}uchar read_ds(uchar add ) //ds1302指定地址读数据{unsigned char i,temp,date1;ds_rst=0;ds_clk=0;ds_rst= 1;for ( i=8; i>0; i-- ){ds_clk = 0;temp = add;ds_io=temp&0x01;add >>= 1;ds_clk = 1;}for ( i=8; i>0; i-- ) //这里要注意{ACC_7=ds_io;ds_clk = 1;ACC>>=1;ds_clk = 0;}ds_rst=0;date1=ACC;return date1;}void init_ds() //初始化ds1302{write_ds(0x8e,0x00); //关闭写保护write_ds(0x80,0x22); //初始化秒write_ds(0x82,0x59); //分write_ds(0x84,0x23); //时write_ds(0x86,0x21); //日write_ds(0x88,0x05); //月write_ds(0x8a,0x06); //星期write_ds(0x8c,0x11); //年write_ds(0x8e,0x80); //开写保护}void read_all() //读s,m,h,date,mon,year,day{s=read_ds(0x81);s1=s/16;s2=s%16;m=read_ds(0x83);m1=m/16;m2=m%16;h=read_ds(0x85);h1=h/16;h2=h%16;date=read_ds(0x87);date1=date/16;date2=date%16;mon=read_ds(0x89);mon1=mon/16;mon2=mon%16;day=read_ds(0x8b);year=read_ds(0x8d);year1=year/16;year2=year%16;}/***********************************************************************************************1602部分**************************************************************************************************/ void write_com(uchar com) //写命令{lcdrs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date)//写数据{lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init_1602() //初始化1602{lcdrw=0;write_com(0x01);write_com(0x38);write_com(0x0f);write_com(0x06);for(i=0;i<16;i++){write_date(table[i]);delay(10);}write_com(0x80+0x40);for(i=0;i<16;i++){write_date(table1[i]);delay(10);}write_com(0x80+0x40+0x0e);write_date(0xdf);delay(10);write_date('c');}/***********************************************************************************************EEPROM部分**************************************************************************************************/void delay1(){ ; ; }void init()//初始化总线{sda=1;delay1();scl=1;delay1();}void start()//开始函数{sda=1;delay1();scl=1;delay1();sda=0;delay1();}void stop()//停止函数{sda=0;delay1();scl=1;delay1();sda=1;delay1();}void respons()//应答{uchar i;sda=1;delay1();scl=1;while(sda==1&&i<250) i++;scl=0;delay1();}void write_byterom(uchar date)//向eeprom中写一字节数据{uchar i;for(i=0;i<8;i++){date=date<<1;scl=0;delay1();sda=CY;delay1();scl=1;delay1();}scl=0;delay1();}uchar read_byterom()//从eeprom中读一字节数据{uchar i,temp;scl=0;delay1();for(i=0;i<8;i++){scl=1;delay1();temp<<=1;temp|=sda;scl=0;delay1();}return temp;}void write_add(uchar add,uchar date)//指定地址写数据{start();write_byterom(0xa0);respons();write_byterom(add);respons();write_byterom(date);respons();stop();}uchar read_add(uchar add)//指定地址读数据{uchar temp;start();write_byterom(0xa0);respons();write_byterom(add);respons();start();write_byterom(0xa1);respons();temp=read_byterom();stop();return temp;}/***********************************************************************************************ds18b20部分**************************************************************************************************/ sbit DQ=P3^5;void delay2(uchar i){while(i--);}void init_ds18b20()//初始化ds18b20{uchar i;DQ=1;delay2(8);DQ=0;delay2(80);DQ=1;while(DQ==1&&i<255) i++;delay2(35);delay2(20);}void write_byte(uchar dat)//向ds18b20中写一字节{uchar i;for(i=0;i<8;i++){DQ=1;delay2(1);DQ=0;delay2(1);DQ=dat&0x01;delay2(5);DQ=1;dat>>=1;delay2(4);}}uchar read_byte()//从ds18b20中读一字节{uchar i,dat=0;for(i=0;i<8;i++){DQ=1;delay2(1);DQ=0;dat>>=1;DQ=1;if(DQ)dat=dat|0X80;delay2(4);}return dat;}uchar read_temp() //读温度函数{uchar a,b,c;init_ds18b20();write_byte(0xcc);write_byte(0x44);init_ds18b20();write_byte(0xcc);write_byte(0xbe);a=read_byte();b=read_byte();c=(b<<4)|(a>>4);return c;}uchar read_th()//读上限函数{uchar a,b,c;init_ds18b20();write_byte(0xcc);write_byte(0x44);init_ds18b20();write_byte(0xcc);write_byte(0xbe);a=read_byte();b=read_byte();c=read_byte();return c;}uchar read_tl()//读下限函数{uchar a,b,c;init_ds18b20();write_byte(0xcc);write_byte(0x44);init_ds18b20();write_byte(0xcc);write_byte(0xbe);a=read_byte();b=read_byte();a=read_byte();c=read_byte();return c;}/***********************************************************************************************键盘部分(P2^0~P2^3)**************************************************************************************************/void keyscan(){uchar temp,num1,num2;temp=P2;temp&=0x0f;if(temp!=0x0f) //消抖{delay(5);if(temp!=0x0f){temp=P2;temp&=0x0f;if(temp==0x0e){num1=1;write_ds(0x8e,0x00);write_ds(0x80,s|0x80);//禁止写保护while(temp==0x0e)//松手检测{temp=P2;temp&=0x0f;}while(1){temp=P2;temp&=0x0f;if(temp==0x0e){delay(5);temp=P2;temp&=0x0f;if(temp==0x0e){num1++;}}while(temp==0x0e)//松手检测{temp=P2;temp&=0x0f;}if(num1==1){write_com(0x80+0x40+0x08); write_com(0x0f);//光标闪烁temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测 {temp=P2;temp&=0x0f;}s=read_ds(0x81);s1=s/16;s2=s%16;s2+=1;if(s2==10){s1+=1;}if(s1==6) s1=0;write_com(0x80+0x40+0x07);write_date(table2[s1]);write_date(table2[s2]);write_ds(0x80,s1*16+s2);//向ds1302中写入秒 }}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}s=read_ds(0x81);//读ds1302秒s1=s/16;s2=s%16;s2-=1;if(s2==-1){s2=9;s1-=1;}if(s1==-1) s1=5;write_com(0x80+0x40+0x07);write_date(table2[s1]);write_date(table2[s2]);write_ds(0x80,s1*16+s2);}}}if(num1==2){write_com(0x80+0x40+0x05);write_com(0x0f);temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测{temp=P2;temp&=0x0f;}m=read_ds(0x83);//从ds1302中读分m1=m/16;m2=m%16;m2+=1;if(m2==10){m2=0;m1+=1;}if(m1==6) m1=0;write_com(0x80+0x40+0x04);write_date(table2[m1]);write_date(table2[m2]);write_ds(0x82,m1*16+m2);//向ds1302中写入分 }}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}m=read_ds(0x83);m1=m/16;m2=m%16;m2-=1;{m2=9;m1-=1;}if(m1==-1) m1=5;write_com(0x80+0x40+0x04);write_date(table2[m1]);write_date(table2[m2]);write_ds(0x82,m1*16+m2);}}}if(num1==3){write_com(0x80+0x40+0x02);write_com(0x0f);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测{temp=P2;temp&=0x0f;}h=read_ds(0x85);//从ds1302中读时 h1=h/16;h2=h%16;h2+=1;if(h2==10){h2=0;h1+=1;}if(h2==4&&h1==2){h2=0;h1=0;}write_com(0x80+0x40+0x01);write_date(table2[h1]);write_date(table2[h2]);write_ds(0x84,h1*16+h2);//向ds1302中写入时 }}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}h=read_ds(0x85);h1=h/16;h2=h%16;h2-=1;if(h2==-1){h2=9;h1-=1;}if(h2==9&&h1==-1){h2=3;h1=2;}write_com(0x80+0x40+0x01);write_date(table2[h1]);write_date(table2[h2]);write_ds(0x84,h1*16+h2);}}}if(num1==4){write_com(0x80+0x0f);write_com(0x0f);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测{temp=P2;temp&=0x0f;}day=read_ds(0x8b);//从ds1302中读星期day+=1;if(day==8){day=1;}write_com(0x80+0x0f);write_date(table2[day]);write_ds(0x8a,day);//向ds1302中写入星期 }}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}day=read_ds(0x8b);day-=1;if(day==0){day=7;}write_com(0x80+0x0f);write_date(table2[day]);write_ds(0x8a,day);}}}if(num1==5){write_com(0x80+0x09);write_com(0x0f);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测{temp=P2;temp&=0x0f;}date=read_ds(0x87);//从ds1302中读日期date1=date/16;date2=date%16;date2+=1;if(date2==10){date2=0;date1+=1;}if(date2==2&&date1==3){date2=0;date1=0;}if(date1==0&&date2==0){date1=0;date2=1;}write_com(0x80+0x08);write_date(table2[date1]);write_date(table2[date2]);write_ds(0x86,date1*16+date2);//向ds1302中写入日期 }}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}date=read_ds(0x87);date1=date/16;date2=date%16;date2-=1;if(date2==-1){date2=9;date1-=1;}if(date2==9&&date1==-1){date2=1;date1=3;}if(date1==0&&date2==0){date1=3;date2=1;}write_com(0x80+0x08);write_date(table2[date1]);write_date(table2[date2]);write_ds(0x86,date1*16+date2); }}}if(num1==6){write_com(0x80+0x06);write_com(0x0f);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测{temp=P2;temp&=0x0f;}mon=read_ds(0x89);//从ds1302中读月mon1=mon/16;mon2=mon%16;mon2+=1;if(mon2==10){mon2=0;mon1+=1;}if(mon2==3&&mon1==1){mon2=0;mon1=0;}if(mon1==0&&mon2==0){mon1=0;mon2=1;}write_com(0x80+0x05);write_date(table2[mon1]);write_date(table2[mon2]);write_ds(0x88,mon1*16+mon2);//向ds1302中写入月 }}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}mon=read_ds(0x89);mon1=mon/16;mon2=mon%16;mon2-=1;if(mon2==-1){mon2=9;mon1-=1;}if(mon2==9&&mon1==-1){mon2=2;mon1=1;}if(mon1==0&&mon2==0){mon1=1;mon2=2;}write_com(0x80+0x05);write_date(table2[mon1]);write_date(table2[mon2]);write_ds(0x88,mon1*16+mon2); }}}if(num1==7){write_com(0x80+0x03);write_com(0x0f);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测{temp=P2;temp&=0x0f;}year=read_ds(0x8d);//从ds1302中读年year1=year/16;year2=year%16;year2+=1;if(year2==10){year2=0;year1+=1;}if(year1==9){year1=0;}write_com(0x80+0x02);write_date(table2[year1]);write_date(table2[year2]);write_ds(0x8c,year1*16+year2);//向ds1302中写入年 }}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}year=read_ds(0x8d);year1=year/16;year2=year%16;year2-=1;if(year2==-1){year2=9;year1-=1;}if(year1==-1){year1=7;}write_com(0x80+0x02);write_date(table2[year1]);write_date(table2[year2]);write_ds(0x8c,year1*16+year2); }}}if(num1==8) //修改上限{write_com(0x80+0x40+0x0d); write_com(0x0f);delay(10);write_com(0x80+0x40+0x09); write_com(0x0e);write_date('T');write_date('H');write_com(0x80+0x40+0x0d); write_com(0x0f);th=read_th();write_com(0x80+0x40+0x0b);if(th>=100){write_date('-');th=~th+1;}else write_date(' ');th1=th/10;th2=th%10;write_date(table2[th1]);write_date(table2[th2]);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测{temp=P2;temp&=0x0f;}tl=read_tl();th=read_th();th+=1;if(th==100){th=157;}if(th==256){th=0;}init_ds18b20(); //写上下限 write_byte(0xcc);write_byte(0x4e);write_byte(th);write_byte(tl);}}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测 {temp=P2;temp&=0x0f;}th=read_th();tl=read_tl();th-=1;if(th==256){th=255;}if(th==156){th=99;}init_ds18b20(); //写上下限write_byte(0xcc);write_byte(0x4e);write_byte(th);write_byte(tl);}}}if(num1==9) //修改下限{write_com(0x80+0x40+0x0d); write_com(0x0f);delay(10);write_com(0x80+0x40+0x09); write_com(0x0e);write_date('T');write_date('L');write_com(0x80+0x40+0x0d); write_com(0x0f);tl=read_tl();write_com(0x80+0x40+0x0b); if(tl>=100){write_date('-');tl=~tl+1;}else write_date(' ');tl1=tl/10;tl2=tl%10;write_date(table2[tl1]);write_date(table2[tl2]);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测 {temp=P2;temp&=0x0f;}tl=read_tl();th=read_th();tl+=1;if(tl==100){tl=157;}if(tl==256){tl=0;}init_ds18b20(); //写上下限 write_byte(0xcc);write_byte(0x4e);write_byte(th);write_byte(tl);}}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测 {temp=P2;temp&=0x0f;}th=read_th();tl=read_tl();tl-=1;if(tl==256){tl=255;}if(tl==156){tl=99;}init_ds18b20(); //写上下限write_byte(0xcc);write_byte(0x4e);write_byte(th);write_byte(tl);}}}if(num1==10){write_com(0x80+0x40+0x09); write_com(0x0e);write_date(' ');write_date(' ');write_date(' ');init_ds18b20(); //拷贝上下限write_byte(0xcc);write_byte(0x48);num1=0;write_ds(0x80,s&0x7f);write_ds(0x8e,0x80);//开启写保护 break;}}}if(temp==0x07)//闹钟设定{delay(5);if(temp==0x07){while(temp==0x07){temp=P2;temp&=0x0f;}if(alarm==1){P34=1;alarm=0;stop_alarm=1;}else{num2=1;while(1){temp=P2;temp&=0x0f;if(temp==0x07){delay(5);temp=P2;temp&=0x0f;if(temp==0x07){num2++;}}while(temp==0x07)//松手检测{temp=P2;temp&=0x0f;}if(num2==1)//按下第一次显示上次设定的时间 {write_com(0x80);for(i=0;i<16;i++){write_date(table3[i]);delay(10);}write_com(0x80+0x40+0x0c);write_date(' ');write_date(' ');write_date(' ');write_date(' ');hour=read_add(1);hour1=hour/10;hour2=hour%10;min=read_add(7);min1=min/10;min2=min%10;sec=read_add(4);sec1=sec/10;sec2=sec%10;write_com(0x80+0x40+0x01); write_date(table2[hour1]);write_date(table2[hour2]);write_com(0x80+0x40+0x04); write_date(table2[min1]);write_date(table2[min2]);write_com(0x80+0x40+0x07); write_date(table2[sec1]);write_date(table2[sec2]);}if(num2==2)//按下第二次设定秒 {write_com(0x80+0x40+0x08); write_com(0x0f);delay(100);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测 {temp=P2;temp&=0x0f;}sec++;if(sec==60) sec=0;}}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测 {temp=P2;temp&=0x0f;}sec--;if(sec==255) sec=59;}}}sec1=sec/10;sec2=sec%10;write_com(0x80+0x40+0x07); write_date(table2[sec1]);write_date(table2[sec2]);if(num2==3)//按下第三次设定分 {write_com(0x80+0x40+0x05); write_com(0x0f);delay(100);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测 {temp=P2;temp&=0x0f;}min++;if(min==60) min=0;}}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测 {temp=P2;temp&=0x0f;}min--;if(min==255) min=59;}}}min1=min/10;min2=min%10;write_com(0x80+0x40+0x04); write_date(table2[min1]);write_date(table2[min2]);if(num2==4)//按下第四次设定时 {write_com(0x80+0x40+0x02); write_com(0x0f);delay(100);temp=P2;temp&=0x0f;if(temp==0x0d){delay(5);if(temp==0x0d){while(temp==0x0d)//松手检测 {temp=P2;temp&=0x0f;}hour++;if(hour==24) hour=0;}}else if(temp==0x0b){delay(5);if(temp==0x0b){while(temp==0x0b)//松手检测{temp=P2;temp&=0x0f;}hour--;if(hour==255) hour=23;}}}hour1=hour/10;hour2=hour%10;write_com(0x80+0x40+0x01);write_date(table2[hour1]);write_date(table2[hour2]);if(num2==5) //按下第五次向eeprom中写入时分(秒省略),并退出循环 {write_add(7,min);delay(10);write_add(1,hour);write_com(0x80);for(i=0;i<16;i++){write_date(table[i]);delay(10);}write_com(0x80+0x40+0x0e);write_date(0xdf);write_date('c');break;}}}}}}}}/***********************************************************************************************主函数部分**************************************************************************************************/ void main(){uchar temp;init();init_1602();init_ds();temp=read_temp();delay(100);while(1)//循环检测{read_all();keyscan();write_com(0x80+0x40+0x01);write_date(table2[h1]);write_date(table2[h2]);write_com(0x80+0x40+0x04);write_date(table2[m1]);write_date(table2[m2]);write_com(0x80+0x40+0x07);write_date(table2[s1]);write_date(table2[s2]);write_com(0x80+0x02);write_date(table2[year1]);write_date(table2[year2]);write_com(0x80+0x05);write_date(table2[mon1]);write_date(table2[mon2]);write_com(0x80+0x08);write_date(table2[date1]);write_date(table2[date2]);write_com(0x80+0x0f);write_date(table2[day]);temp=read_temp();th=read_th();tl=read_tl();//*********************************************************************************温度上限先检测及报警write_com(0x80+0x40+0x0b);if(temp<128) //查看温度是否超过上下限{if((th>128)||(th<128&&temp>=th)||(tl<128&&temp<=tl)){P34=0;delay(1000);P34=1;}}if(temp>128) //temp>128时温度取反后加一,查看温度是否超过上下限{if((th>128&&temp>=th)||(tl>128&&temp<=tl)||(tl<128)){P34=0;delay(1000);P34=1;}write_date('-');temp=~temp+1;}else write_date(' ');write_date(table2[temp/10]);write_date(table2[temp%10]);min=read_add(7);delay(5);hour=read_add(1);delay(5);//***********************************************************************************闹钟检测及报警if((min==m1*10+m2)&&stop_alarm){}else if((min==m1*10+m2)&&(hour==h1*10+h2)&&(!stop_alarm)) //闹钟{alarm=1;}if((min!=m1*10+m2)&&stop_alarm){stop_alarm=0;}if(alarm==1){P34=0;delay(30);P34=1;delay(100);P34=0;delay(30);P34=1;delay(100);P34=0;delay(30);P34=1;delay(100);P34=0;delay(30);P34=1;delay(100);}//*************************************************************************************************** }}上位机程序(VB语言):Option ExplicitDim i%Dim buf$Private Sub Form_Load()mPort = 2MSComm1.PortOpen = TrueMSComm1.RThreshold = 1MSComm1.InBufferCount = 0MSComm1.InputMode = comInputModeTextText1.FontSize = 10End SubPrivate Sub MSComm1_OnComm() Select Case mEvent Case comEvReceivebuf = Trim(Str(Asc(MSComm1.Input))) i = i + 1If i = 1 ThenText1.Text = bufEnd IfIf i = 2 ThenText2.Text = bufEnd IfIf i = 3 Theni = 0Text3.Text = bufEnd IfEnd SelectEnd Sub上位机运行图片:。
中控系统标准设计规范要求
![中控系统标准设计规范要求](https://img.taocdn.com/s3/m/877e50c3e53a580216fcfea3.png)
中控系统功能规范一、中控系统架构中控系统架构如下图中控系统的服务器通过工业以太网技术实现与现场的PLC的通讯,为了最大程度上保证以太网通讯的可靠性,在设备网络层使用了光纤环网,保证了在某一点网络断开的情况下仍能保证整个网络的正常通讯。
中控系统采用西门子公司的WINCC组态软件建立,它是西门子最经典的过程监视系统,业已成为市场的领导者,乃至业界遵循的标准。
WinCC能为工业领域提供完备的监控与数据采集(SCADA)功能,涵盖单用户系统直到支持冗余服务器和远程 Web 服务器解决方案的多用户系统。
SIMATIC WinCC支持OPC协议,并支持VBS,C语言脚本编程,具有良好的开放性和灵活性。
二.中控系统的功能2.1 设备状态的监控中控系统的服务器通过工业以太网技术与现场全部输送设备的PLC的通讯,实现对总装车间内所有输送设备、工艺设备运转状况进行实时地数据采集、监控,能动态显示生产线工艺流程图,并能在流程图上选择弹出多级详图;动态显示各种信号的状态,并通过不同颜色、图形实时生动地表示出来。
系统对生产线的停线的原因及停线的时间、时长、频率等进行统计,并将生产线停线的数据通过OPC协议向MES系统开放,MES系统对停线的原因作出分析后,将分析报告提供给生产决策者,便于生产决策者根据数据追查停线原因,并对生产流程进行优化。
2.2 故障诊断功能系统读取现场设备传感器的信号状态和变频器的状态信息后通过程序运算判断设备是否处在正常状态,如果设备处在故障状态立刻控制设备停止运行,并通过声光报警的方式指示故障发生的区域及位置,故障的详细信息显示在现场人机界面及中控系统的监控电脑显示屏上,指导维修人员排除故障。
系统将报警数据按照报警组、报警时间、报警状态存储到相应的报警数据库中。
并可以统计每种故障发生的时间及发生的频率。
当报警复位时,系统也将复位信息存入报警数据库。
必要时可将归档的报警数据生成报表,便于维修人员明确故障发生的原因及易发生故障的设备。
VB开发上位机软件入门教程
![VB开发上位机软件入门教程](https://img.taocdn.com/s3/m/b615bd48be1e650e52ea9925.png)
0----->1
3、添加代码,我已经写好,请看下面。
' 内容: 西安科技大学科技创新实验班 上位机串口接收程序 ' 作者: 苗瑞 ' 日期: 2009 年 12 月 25 日 Private Sub Combo1_Click() If MSComm1.PortOpen = True Then '如果串口打开先关闭后再进行其他操作
Private Sub TmrComm_Timer() '采用轮循法采集数据
Dim Rx_buff() As Byte Dim okstring As String Dim ReceivedLen As Integer
On Error GoTo ErrorHandler TmrComm.Enabled = False '关闭定时器 If commport.InBufferCount > 0 Then
.... End If If Instr(okstring ," END*",vbBinaryCompare) Then
.... End If End If TmrComm.Enabled = True '打开定时器 End Sub
B、直接轮循法 此法用于接收少量控制命令字; ' 保存输入子串的缓冲区 Dim Instring As String ' 使用 COM1。 mPort = 1 ' 9600 波特,无奇偶校验,8 位数据,一个停止位。 MSComm1.Settings = "9600,N,8,1" ' 当输入占用时, ' 告诉控件读入整个缓冲区。
ReceivedLen = commport.InBufferCount Rx_buff = commport.Input okstring = StrConv(tempbyte, vbUnicode) If ReceivedLen = 6 Then If Chr(tempbyte(0)) = ":" And tempbyte(3) = &h0a Then
上位机制作过程单片机vb上位机超简单
![上位机制作过程单片机vb上位机超简单](https://img.taocdn.com/s3/m/5822e38b3968011ca30091c8.png)
比如上位机控制在工厂中的应用
首先打开vb软件
? 弹出新建工程对话框,点击标准exe
? 出现如下
设置属性窗口
? caption:标题 ? font:字体大小和风格
? 新建两个按钮,改一下caption:打开串口 和发送数据如下图所示
点击左边按钮框新建一个 text1,如下图所示
添加串口控件,在工程-部件中找到Microsoft comm control 6.0,如下图所示,点击打钩,并2控制
上位机用途
? 上位机是一台可以发出特定操控命令的计 算机,通过操作预先设定好的命令,将命 令传递给下位机,通过下位机来控制设备 完成各项操作(应用最多的地方如:工业、 水利、供电部门、交通等方面)。上位机 都有特定的编程,有专门的开发系统,或 以上是已经规定好任务,只能按特定的任 务进行操作。简单说上位机就是命令的下 达者,而下位机则是命令的执行者。
在右边控件框出现一个电话的控件,并把下图箭头所示的控 件添加到窗口中。
对代码进行编写
? 首先,双击窗口进入代码编辑框,如下图 所示:
? Private Sub Form_Load() ? 这个函数是窗口运行时初始化一些控件。
? Private Sub Command1_Click() ? 这个是点击按钮1所触发的事件代码函数入
口。
? Private Sub Command2_Click() ? 这个是点击按钮2所触发的事件代码函数入
口。
代码如下
成功和下位机通讯
电梯群控系统的上位机软件设计的研究报告
![电梯群控系统的上位机软件设计的研究报告](https://img.taocdn.com/s3/m/cc55e9e97e192279168884868762caaedd33ba2e.png)
电梯群控系统的上位机软件设计的研究报告电梯群控系统是一个常见的电梯系统,它可以自动化地控制多台电梯的运行,以提高电梯运行的效率。
为了让电梯群控系统能够更好地工作,需要设计一款稳定高效的上位机软件,本文将通过对上位机软件设计的研究来探讨如何实现这一目标。
首先,上位机软件需要提供一个直观的图形化界面,以便操作员很容易地操作和监控整个电梯群控系统。
这个图形化界面应该显示所有电梯的实时运行状况和当前楼层信息,并且可以显示电梯的运行状态、目标楼层等信息。
操作员可以通过这个界面来选择目标楼层,控制电梯的运行,调整电梯的运行参数等。
其次,上位机软件需要具备实时通信能力,以与下位机控制器进行通信。
这个通信过程需要保证数据的准确性、实时性和安全性,并确保不会发生通信中断或数据丢失。
在通信方面,可以采用基于TCP/IP协议的数据通信方式,这种方式可以实现高效的数据传输和快速响应。
再者,上位机软件还需要提供一些监控和报警功能,以便及时发现和处理系统中的异常情况。
例如,如果一台电梯出现故障或停在了错误的楼层上,上位机软件可以自动发出警报并通知相关人员进行处理。
此外,上位机软件还可以提供实时数据记录和报表功能,以便对整个电梯群控系统的运行情况进行分析和统计。
最后,为了提高电梯群控系统的可靠性和稳定性,上位机软件需要进行系统优化和调试。
这包括对操作系统、数据库软件和通信模块等进行配置和调整,以便实现更高效、更稳定的系统运行。
同时,还需要进行人员培训和技术支持,以确保操作员能够熟练掌握上位机软件的使用技巧,并能够及时解决系统中遇到的问题。
总之,上位机软件是电梯群控系统中至关重要的部分,其设计和开发需要仔细思考和精心实现,以确保整个电梯群控系统可以高效、稳定地运行。
数据以数值的形式记录了不同属性的观测值,可以用来进行各种分析。
在分析数据时,我们需要首先收集、整理数据,删除缺失值和异常值等干扰数据分析的因素,然后通过可视化工具或统计学方法来分析数据,从而得出相关结论或做出决策。
嵌入式监控系统上位机软件设计的开题报告
![嵌入式监控系统上位机软件设计的开题报告](https://img.taocdn.com/s3/m/a4d7685c974bcf84b9d528ea81c758f5f61f298e.png)
嵌入式监控系统上位机软件设计的开题报告一、选题背景目前随着科技的不断发展,智能化、自动化技术得到了广泛的应用。
在工业、农业、医疗等领域,很多设备和系统都需要进行监控和控制,以保证其正常运行和安全性。
而嵌入式监控系统是一种集成了传感器、控制器、通信接口等多种功能的小型电子系统,用于实现对被监控对象的远程监测、控制和数据采集等任务,已经成为工业自动化和智能化的重要手段。
而上位机软件是嵌入式监控系统不可或缺的一部分,通过上位机软件可以实现对嵌入式系统的远程监控和控制,对采集到的数据进行分析处理,实现与用户之间的数据交互等。
二、选题意义本次毕业设计旨在设计一款嵌入式监控系统上位机软件,通过该软件,可以实现对嵌入式系统的远程监控和控制,对采集到的数据进行分析处理,实现与用户之间的数据交互等。
同时,将该软件应用于实际的项目中,可以大大提高工业自动化、智能化的水平,提高工业操作的效率和安全性。
三、研究内容1. 系统框架设计:设计上位机软件的整体框架,包括软件模块划分、功能分配、系统架构设计等。
2. 通信模块设计:实现上位机软件与嵌入式系统之间的通信功能,包括数据采集、数据传输、数据存储等。
3. 数据分析处理模块设计:对采集到的数据进行分析处理,包括数据可视化、数据统计、数据异常处理等。
4. 界面设计:设计上位机软件的用户界面,包括界面布局、按钮设计、菜单设计等。
5. 软件应用实践:将设计完成的上位机软件应用于实际的项目中,进行实践应用。
四、初步计划与进度安排1. 第1-2周:查阅相关文献,了解嵌入式监控系统上位机软件设计的相关内容。
2. 第3-4周:完成上位机软件开发环境的搭建和配置,包括软件平台选择、开发工具选择、开发库选择等。
3. 第5-6周:完成系统框架设计,包括功能模块划分、系统架构设计等。
4. 第7-8周:完成通信模块设计,实现上位机软件与嵌入式监控系统之间的通信功能。
5. 第9-10周:完成数据分析处理模块设计,对采集到的数据进行分析处理。
上位机软件功能需求清单_20130428会议讨论后
![上位机软件功能需求清单_20130428会议讨论后](https://img.taocdn.com/s3/m/1943af7baf1ffc4ffe47ac89.png)
上位机软件功能需求清单1.软件简介软件名称:有轨电车调度管理监控软件;软件安装:控制中心维护工作站,操作系统支持windows 7。
2.软件功能软件功能包括:1)有轨电车线路图绘制,常用元素要求做成图例可直接调用,包括:道岔、IMU车地信息传输线圈、WSK轨道电路、接近信号机、进路表示器、平交路口、道路交通信号灯、单显/双显调车信号机、三显进站/出站信号机、计轴设备等。
2)道岔控制器属性编辑、编译、下载功能,并能通过以太网实现远程下装。
道岔控制器的属性包括:IP地址;道岔数量:2/4;道岔类型:左、右、交叉;轨旁设备布置:IMU车地信息传输线圈、WSK轨道电路、接近信号机、进路表示器;进路表:车次号对应道岔方向。
其他(参考BBR软件)。
3)有轨电车线路状态实时显示。
显示各设备的工作状态及故障状态,工作状态包括道岔方向、信号机状态、轨道电路状态,故障状态包括正常、轻故障、重故障3种类型,分别用绿、黄、红三种颜色表示。
4)列车描述、追踪和状态管理。
包括列车描述、列车位置显示和车载设备故障状态显示。
5)故障报警功能。
地面设备或车载设备故障时,应能进行声光报警。
6)事件记录和查询功能。
7)报表及操作记录分析功能。
8)用户权限管理。
9)与其他系统接口,如综合监控系统、无线通信系统、PIS系统等。
10)运营计划管理。
包括基本时刻表和计划时刻表的编辑,实时时刻表的记录汇总。
11)车辆段内的车辆管理。
12)派车计划管理。
13)远程操作道岔。
中控系统标准设计规范要求
![中控系统标准设计规范要求](https://img.taocdn.com/s3/m/877e50c3e53a580216fcfea3.png)
中控系统功能规范一、中控系统架构中控系统架构如下图中控系统的服务器通过工业以太网技术实现与现场的PLC的通讯,为了最大程度上保证以太网通讯的可靠性,在设备网络层使用了光纤环网,保证了在某一点网络断开的情况下仍能保证整个网络的正常通讯。
中控系统采用西门子公司的WINCC组态软件建立,它是西门子最经典的过程监视系统,业已成为市场的领导者,乃至业界遵循的标准。
WinCC能为工业领域提供完备的监控与数据采集(SCADA)功能,涵盖单用户系统直到支持冗余服务器和远程 Web 服务器解决方案的多用户系统。
SIMATIC WinCC支持OPC协议,并支持VBS,C语言脚本编程,具有良好的开放性和灵活性。
二.中控系统的功能2.1 设备状态的监控中控系统的服务器通过工业以太网技术与现场全部输送设备的PLC的通讯,实现对总装车间内所有输送设备、工艺设备运转状况进行实时地数据采集、监控,能动态显示生产线工艺流程图,并能在流程图上选择弹出多级详图;动态显示各种信号的状态,并通过不同颜色、图形实时生动地表示出来。
系统对生产线的停线的原因及停线的时间、时长、频率等进行统计,并将生产线停线的数据通过OPC协议向MES系统开放,MES系统对停线的原因作出分析后,将分析报告提供给生产决策者,便于生产决策者根据数据追查停线原因,并对生产流程进行优化。
2.2 故障诊断功能系统读取现场设备传感器的信号状态和变频器的状态信息后通过程序运算判断设备是否处在正常状态,如果设备处在故障状态立刻控制设备停止运行,并通过声光报警的方式指示故障发生的区域及位置,故障的详细信息显示在现场人机界面及中控系统的监控电脑显示屏上,指导维修人员排除故障。
系统将报警数据按照报警组、报警时间、报警状态存储到相应的报警数据库中。
并可以统计每种故障发生的时间及发生的频率。
当报警复位时,系统也将复位信息存入报警数据库。
必要时可将归档的报警数据生成报表,便于维修人员明确故障发生的原因及易发生故障的设备。
上位机及下位机程序编写规范及建议
![上位机及下位机程序编写规范及建议](https://img.taocdn.com/s3/m/15097f862af90242a895e5b6.png)
上位机及下位机程序编写规范及建议PLC程序编写规范及建议为了提高程序的可读性~稳定性~高效性~易调用~方便各部门PLC程序的编写~调试及维护工作~有必要也务必要制定一项通用的程序编写规范~鉴于此~本人提出以下几个方面的规范建议~以供大家共同商讨。
控制功能方面:阀门的控制~由于电动阀门的控制中~一个控制周期较长~为了不让在调试或者阀门的误操作上面~让阀门开关过程影响相关设备的控制~造成设备安全影响~故需要将阀门的控制做一个逻辑上的中间停止中断操作~即可让阀门处于一个中间状态~然后再进行开关控制选择。
各设备控制每个参与控制的设备~必须事先预留自控、触摸屏、故障屏蔽接口~以便功能扩展。
设备在控制方式转变后必须考虑设备安全的前提下~值得注意的是~建议转换开关由远程切换到手动时~上位机给出输出的指令一律清零~以免造成再次将设备由手动转换到远程~设备继续执行上一次的转换前动作~造成手动动作造成的远程指令:自动控制必须事先了解整个工艺流程的情况下~预先考虑到每个设备间的各种组合搭配~一一做出相应的条件判断~然后做出相应符合条件的指令。
在程序编译前~应详尽的做出中文注释~注释包含组合搭配条件~运行条件~在每一符合条件的程序段必districts under the jurisdiction of great thanks, South ofthe River, River North, Mao Ta, 6 towns, less than 5 km from the enemy town of shengze, only separated by a wide range of XI Bai Yang. For the time being, Sheng diwei forces are often deployed at dawn, Mao Ta, ShengTang Hong Kong fringe areas, and sometimes invasive South of the River, at须注释条件及指令。
vb上位机控制系统
![vb上位机控制系统](https://img.taocdn.com/s3/m/f2f5970cba1aa8114431d924.png)
姓名:赵远新编号:000121 2009年04月10日摘要随着pc 及其外部设备的普及和降价,越来越多的自动控制系统已经开始与PC 联机进行监控。
监控就是要做到可以随时监视并控制负载运作情况,与传统的现场控制不同,本系统可以在控制室(与现场距离上百甚至上千米)下令改变现场负载的运作情况。
而这所有的过程只需要使用PC 的一个COM 口,即RS232串口与单片机进行双向数据通讯,并且系统使用简单易上手的vb 语言编程,所需硬件简单易行,在标准的D 型接口如DB-9或DB-25接头中只需其中三条线即可,如下图所示。
本控制系统的基本作功能为通过上位机的监控窗口可以随时监视并控制下位机负载运作状态,窗口中可实时显示负载状态信息。
同时下位机也实时的对上位机指令执行相应的动作,1602液晶显示作为现场的人机对话装置作为现场控制,实现和PC 上位机控制相同的功能。
温度控制系统作为从属系统也受上位机控制,能完成温度自动调节,实时报警显示功能,将现场温度控制在一个可以任意设置的范围内.并且该设计具有欢迎界面、音乐播放和管理员密码窗口,更实际的模拟了工业实际应用中的情况。
更重要的是,该系统易于扩展和嫁接,经过稳定性和抗干扰性测试之后便可用于工业实际中去。
关键字:上下位机 串口通讯 液晶显示 工业控制 温度控制示意图:摘要译文With the popularity and the following price of Pc and it’s peripherals, more and more automatic control system has already started working with the PC ,monitoring and controling online. Monitoring can be done is to monitor and control the operation of the loads, which is different with the traditional control ways, we can ordered the change in the operation of the load in the control room of the system (the distance which away from it can be even hundreds of kilometers far). At the scene All the process which only need to use the PC's COM port or RS232 serial port with the 51 single-chip two-way data communications.System uses a simple programming language VB as the main programming language,the hardware of the system is simple,too. Standard interface, such as the D-type DB-9 or DB-25 connector in only three lines of which can, as illustrated below. The control system for the basic functions of the PC monitor through the window at any time to monitor and control the operation of the state of load-bit machine, the window can be displayed real-time load status information. At the same time are also lower on the PC real-time implementation of the action command, 1602 LCM and keyboard at the scene is the man-machine dialogue scene control devices, and PC host computer to achieve the same function as the control. Temperature control system as a slave system also controlled by the host computer can automatically adjust the temperature to complete。
上位支持软件选型注意事项
![上位支持软件选型注意事项](https://img.taocdn.com/s3/m/46ddf856be23482fb4da4c14.png)
上位支持软件选型注意事项1、一般要求软件系统应具备工业自动化应用中的实时数据采集,报警和事件管理,数据控制,良好的设计和组态功能。
该软件应容易使用,有面向对象的图形化的开发环境,并具备采用微软最新的Windows 客户/服务器网络结构的开放式架构。
该系统应具备内建的灵活性允许在规范或用户需求变更时实现容易的组态和快速容易的修改。
软件系统应包括从同一软件供应商提供的按模块化组件方式紧密集成的套件,来完成系统要求的所有功能。
该软件系统应包括用于过程可视化的HMI软件,存储历史数据的实时数据库,用于查询,分析,报表等功能的数据库客户端工具,该工具可嵌入HMI软件也可独立使用,远程的电话报警和语音报警功能以及与多种PLC/RTU进行通讯的驱动,还应包括用于Web服务的信息门户软件。
软件系统的结构必须足够的灵活使单机系统能容易地扩展到具备单一的或冗余历史数据库和设备通讯系统的大规模的分布式网络系统。
1.1 该系统必须是基于Microsoft Windows,并采用体现先进水平的最新网络技术。
1.2 该系统必须具备代码重用性,该代码重用应通过面向对象设计方式实现,包括对所有对象的派生和继承等。
1.3 该系统必须能够重建系统架构而不影响客户端的应用。
这包括重新分配应用到新增的计算机。
1.4 该系统必须是不依赖任何特殊硬件的开放式软件。
1.5 该系统必须可以支持多个的数据通讯协议可以和AB,Siemens,Schneider 等主要厂商的控制设备或任何的开放控制网络通讯。
1.6 该系统基本组件允许集中或远程的管理及部署。
2、开发环境对系统软件的设计开发环境功能要求:2.1 系统软件应有面向对象的彩色图形显示制作功能,并包括全面的动画功能,能将系统过程真实地可视化地反映给操作者。
所有的图形编辑功能均可以通过浮动或固定的工具条,下拉式菜单或键盘命令来操作完成。
应可以通过简单的鼠标点击切换到运行状态来测试任何画面显示功能。
上位机界面需求(参考)[1]
![上位机界面需求(参考)[1]](https://img.taocdn.com/s3/m/cf9ce100cc1755270722086d.png)
文档编号:XXXXXXXXXX治疗系统上位控制机软件界面的功能需求编制:审核:批准:上位控制机软件界面的功能需求一、系统设计引用标准、参考文件:●GB9706.1《医用电气设备》第一部分:通用安全要求●GB9706.1《医用电气设备》第一部分:γ束治疗设备安全专用要求●IEC60601-2-11 等●国家其他有关通用设计技术标准●《坐标系统说明》二、PC机的硬件、软件及界面组成本PC机软件组成是:操作系统采用:编程语言选用:对硬件的基本要求:CPU:,内存: M,硬盘 G,光驱:,显卡:,其他。
显示界面分辨率:1024×768PC机软件界面主要由6个大界面组成: 1、启动界面;2、功能选择界面;3、头部治疗界面;4、体部治疗界面;5、系统工具界面;6、文档管理子界面;系统界面总体分布示意图如(图1)所示图1三、PC机软件界面细则说明:凡界面带有括号的字符,仅作本书说明不作显示。
1、启动界面,计算机通电启动后即到该界面,如图2所示。
图21.1选择“关于”按键后弹出如下菜单:图31.1.1 公司简介:见附本一《公司简介》。
1.1.2 产品介绍:见附本二《产品介绍》。
1.2 选择“帮助”按键后弹出菜单如下:图41.2.1操作说明:见附本三《系统操作说明》。
1.2.2治疗流程说明,见附本四《治疗流程说明》。
2、 选择启动界面中的“退出”控键,系统关闭。
3、 选择启动界面中的“进入”按键,会弹出如下对话框:图5图53.1输入系统进入密码为六位以上数值或字母,密码数值不在界面输入框中显示,显示密码数值用“*”代替。
3.2 在对话框中选择“确定”,如果输入密码不正确,会弹出如下对话框(图6),操作和返回次数不作限制;图6如果输入密码正确,系统将自动进入自检界面并显示“系统正在自检,请稍候……”此时系统的通讯建立。
系统开始初始化自检。
图73.2.1如果系统自检时间超过3分钟,系统将视作不正常并提示(红色字)“系统自检错误!”选择“确定”控键后返回到启动界面。