电源上位机下位机与上位机20KVA是什么设备?

上位机下位机与上位机各是什么意思?很多朋友都不是很清楚为了让大家能了解,下面小编为大家介绍上位机下位机与上位机一起来看看吧!上位机上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压水位,温度等)下位机与上位机下位机与上位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single

上位机下位机与上位机各是什么意思?很多朋友都不是很清楚为了让大家能了解,下面小编为大家介紹上位机下位机与上位机一起来看看吧!

上位机是指可以直接发出操控命令的计算机,

屏幕上显示各种信号变化(液压水位,温度等)

下位机与上位机是直接控制设备获取设备状况的计算机,

上位机发出的命令首先给下位机与上位机下位机与上位机再根据此命令解釋成相应时序信号直接控制相应设备。下位机与上位机不时读取设备状态数据(一般为模拟量)转换成数字信号反馈给上位机。

上下位機与上位机都需要编程都有专门的开发系统。

在概念上控制者和提供服务者是上位机,被控制者和被服务者是下位机与上位机也可鉯理解为主机和从机的关系,但上位机和下位机与上位机是可以转换的

两机如何通讯,一般取决于下位机与上位机下位机与上位机一般具有更可靠的独有通讯协议;

使用一些新的API(API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件戓硬件的以访问一组例程的能力;

多语言支持功能模块一般同时支持数种高级语言为上位机编程。

通常上位机和下位机与上位机通讯可鉯采用不同的通讯协议有RS232的串口通讯或者RS485串行通讯。

当用计算机和PLC通讯的时候不但可以采用传统的D形式的串行通讯,还可以采用更适匼工业控制的双线的PROFIBUS-DP通讯采用封装好的程序开发工具就可以实现PLC和上位机的通讯,当然可以自己编写驱动类的接口协议控制上位机和下位机与上位机的通讯

通常工控机,工作站触摸屏作为上位机,

通信控制PLC单片机等作为下位机与上位机,从而控制相关设备元件和驱動装置

上位机是指可以直接发出操控命令的计算机

下位机与上位机是直接控制设备获取设备状况的计算机

工控机,工作站触摸屏作为仩位机, 通信控制PLC单片机等作为下位机与上位机

以上就是上位机下位机与上位机介绍,大家明白了吗希望能对大家有所帮助!

  串行接口是一种可以将接受來自CPU的并行数据字符转换为连续的串行数据流发送出去同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路我们称为串行接口电路。

  串口通信是指外设和计算机间通过数据信号线 、地线、控制线等,按位进行传输数据的一种通訊方式这种通信方式使用的数据线少,在远距离通信中可以节约通信成本但其传输速度比并行传输低。

  串口是计算机上一种非常通用的设备通信协议大多数计算机(不包括笔记本电脑)包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容嘚设备也带有RS-232口同时,串口通信协议也可以用于获取远程采集设备的数据

  RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多鼡途比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准嘚值RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺

  串口通信是在工程应用中很常见。在上位机与下位机与上位机通讯过程中常通过有线的串口进行通信在低速传输模式下串口通信得到广泛使用。在说个之前先来简单解释一下上位机与下位机与上位機的概念

  上位机与下位机与上位机设计

  通常上位机指的是PC,下位机与上位机指的是单片机或者带微处理器的系统下位机与上位机一般是将模拟信号经过AD采集将模拟量转换为数字量,下位机与上位机再经过数字信号处理以后将数字信号通过串口发送到上位机相反上位机可以给下位机与上位机发送一些指令或者信息。常见的通信串口包括RS232、RS485、RS422等这些串口只是在电平特性有所不同,在上位机与下位机与上位机进行数据通信时可以不考虑电平特性而且现在在硬件上有各种转接接口,使用起来也很方便

  当然在通常做简单的串ロUART实验时我们可以使用各种各样的串口助手小软件,但是这些串口小工具有时候并不能很好满足需求那就尝试着自己写一套属于自己的串口助手?接下来说说如何使用java实现上位机与下位机与上位机之间的RS485串口通信

  step 1: 下载支持java串口通信的jar包,这里给出下载地址:

  接下来就是使用该导入jar包进行编码实现串口通信的功能了在编码之前先来理一理串口通信的主要环节,本人总结主要分为以下几点:

  1)计算机首先需要进行硬件check查找是否有可用的COM端口,并对该对端口进行简要判断包括这些端口是否是串口,是否正在使用以下是蔀分主要代码:

  /*类方法 不可改变 不接受继承

  * 扫描获取可用的串口

  * 将可用串口添加至list并保存至list

  //获取当前所有可用串口

  鉯下是测试类的测试实例:

  System.out.println(“已查询到该计算机上有以下端口可以使用:”);

  //测试串口配置的相关方法

  2)通过计算机对串ロ的自检后,可以对串口参数进行简单的配置常见的配置可以从常见的串口助手中得到启发。以下是一个串口助手的人机交换界面:

  以下是对串口设置主要代码:

  * 2)设置波特率 根据单板机的需求可以设置为57600 。

  * 3)判断端口设备是否为串口设备

  * 4)端口是否占用

  * 6)return:返回一个SerialPort一个实例对象,若判定该com口是串口则进行参数配置

  { //通过端口名识别串口

  //进一步强制类型转换

  //设置baudrate 此處需要注意:波特率只能允许是int型 对于57600足够

  //串口配制完成 log

  System.out.println(“串口参数设置已完成波特率为”+baudrate+“,数据位8bits停止位1位,无奇偶校验”);

  //将com端口设置为null 默认是null不需要操作

  以上代码就是返回一个对象同时也返回了对象属性,因为对象在java里面是属于传值引用对以上需要说明的是:在实验时需要连接串口才能让计算机检测到才能让程序工作,这里使用的是RS485转接线:

  3)通过以上两个步骤后基本对串口的设置也完成了对于串口类型的确认例如:RS232/RS485/RS422等,可以作为进一步确认的条件RS485可以在gnu.io中找到。

  接下来就是上位机与下位機与上位机之间的双向通信的功能实现了该部分主要是利用java的输入输出流来实现。以下是主要代码:

  * 串口数据发送以及数据传输作為一个类

  * 该类做主要实现对数据包的传输至下单板机

  * 上位机往单板机通过串口发送数据

  * 发送的标志:数据未发送成功抛出一個异常

  * 上位机接收数据

  * 返回一个byte数组

  通过以上关于Uart两个基本类实现对底层Uart的功能封装其中一个类主要负责Uart串口自检和基本設置,另外一个类主要has数据传输的两个方法接下来以一个实例说一说通过RS485串口通信将系统当前时间发送至单板机系统。

  step 4:实现实时系统时间的数据包传输至下位机与上位机

  这一步可以分为以下两个步骤:首先实现获取系统时间将时间进行封装成帧;另外就是通過RS485串口将时间数据包发送至单板机系统进行解析。

  1) 系统时间的获取

  根据java面对对象设计思想这里将有关系统时间的方法归为一類。

  以下是获取当前系统时间代码:

提供了calender类该类提供了一些与时间有关方法。至于Calendar.getInstance()使用单例模式获取一个Calendar实例对象单例模式就是一个类在任何时候只允许有一个实例化对象。获取系统时间除了使用Calendar还可以使用Date类通过创建对象也可以实现系统当前时间的获取。timeCheckSum作为时间数据的校验和发送至单板机作为自定义协议的一部分

  由于发送的数据包通常是以字节(byte)为单位进行发送和传输的,因此需要将int型的时间转换为byte使用byte[]进行存储作为一个数据包发送。

  * 将以上时间字符串进行隔开用byte[]保存

  //对当前时间参数进行格式判断

  //对格式进行判断

  //时间数据格式正确

  //对于年份使用两个byte存储

  以上数据可以使用7个byte对时间数据进行存储因为年份需要使用两个字节来存储,格式为高字节在前低字节在后,之后依次存放

  将时间数据存放在byte[]数组以后接下来就是添加自己的協议部分了。该部分具有较大的随意性因为该协议可以根据不同的风格有不同的形式。为了简单起见只需要在时间数据byte[]之前添加head、CMD、时间数据长度length这三个字节进行补充,时间数据byte[]后面依次添加校验和的高低字节以及tail指令即可以上基本实现了一个简单的时间数據package。以下是本模块的代码:

  * 将数组封装成帧

  * 每一个数据帧由以下几个部分组成

  * 6)可采用线程进行获取当前时间

  //在时间byte[]前后添加一些package校验信息

  //时间数据包之前的信息

  //转化为无符号进行校验

  //将校验和分为高低字节

  下面给出了将时间数据byte数組进行解析的debug代码一方面是确定上位机本部分模块的程序可靠性,另外也可以直接移植到下位机与上位机对数据包的解析之中在下位機与上位机解析过程中需要注意一点:因为在java中8大基本类型都是带符号,年份时间和时间校验和拆分为高低字节时低字节是二进制无符號的,但是计算机却是按照有符号数(补码方式)进行读取例如在2016年转换为二进制数为:,那么高字节为低字节为。计算机读取为:高字节为7低字节为-32。其实由两个byte真实还原的过程应为:7《《8+(低字节二进制数字)=7*256+224=2016因此在debug解析时间数据包时需要将有符号数字转换为無符号数字。

  * 对时间格式进行解析并还原原来的时间格式

  * 对数据进行还原

  * 将byte转化为字符串

  * 将有符号byte转化为无符号数字

  2)将最后的时间数据包通过RS485串口发送至下位机与上位机

  结合前面的串口程序就可以使用串口发送程序了在程序debug的前期可以在程序嘚关键位置输出日志就是打印log的方法可以提高程序调试的效率。以下是主类的测试代码:

  //取出第一个COM端口进行测试

  //退出程序 后续鈈需要监测 因为transimit一直需要保证连接状态

  当没有串口设备接入计算机时控制台打印一条信息:

  没有找到可用的串口端口请check设备!

  当RS485设备接入计算机时,控制台打印消息如下:

  通过以上几个步骤基本实现了上位机与下位机与上位机串口通信的功能接下来还鈳以对程序进行改进:

  1)添加界面,可以类比串口助手界面根据自身需要设计独具风格的人机交互界面

  2) 在程序中添加线程,茬以上程序中对于系统时间的获取可以通过线程的方式进行获取这样上位机就可以一直往下位机与上位机发送数据包,而不是仅仅发一佽

  3)对于上位机数据接收,除了以上最基本的接收功能外还可以使用JDBC与mysql等数据进行存储,并绘画数据曲线实现特性分析

我要回帖

更多关于 下位机与上位机 的文章

 

随机推荐