上位机软件开发用哪些软件(上位机软件开发工程师具体做什么)

软件开发 1973
今天给各位分享上位机软件开发用哪些软件的知识,其中也会对上位机软件开发工程师具体做什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、工控上位机软件哪个好

今天给各位分享上位机软件开发用哪些软件的知识,其中也会对上位机软件开发工程师具体做什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

工控上位机软件哪个好

新汉工控机也不错!

在机缘巧合下,对“工业上位机软件”有了一些初步的了解。在这里和大家分享一下。注意本节的内容还不够专业全面,只适合对“工控软件”进行一个初步的了解。

工业“自动化”控制系统的组成

在工业生产过程中,最重要的是安全,其次是稳定。工业生产环境中可以常见大如“吊车”般的设备、有毒气体、强碱、强酸、几千度的高温、易燃易爆气体、高压水蒸气。所以容不得半点错误,出错就意味着要死人,因此安全是第一位的。然后是稳定。为啥稳定这么重要呢。工业生产过程和我们家用设备不一样。工业生产是24小时不间断的。工人是轮班倒休的,但是生产设备是常年不停的运行的。如果生产过程有一个设备出现故障,就会影响整个生产流程的进度和原料的浪费,要再次重启整个生产流程代价很大。生产过程停止1小时,就意味着最低几十万的损失,严重的情况意味着几百万的损失。

因此,用在“工业”中的自动化设备和软件设备,就有一个共同的特点。即“功能不必高级,够用就行,关键要求稳定”。

因此,在工业中,实现自动化的组合是:PLC+Modbus协议+组态软件。

PLC:

可编程逻辑控制器(ProgrammableLogicController,PLC)。从网上可以了解到PLC的具体功能和开发细节。这里我以个人的理解来加以说明。从功能上来讲,PLC和常见的任何一款单片机没有任何区别。那么PLC和单片机的不同之处,就只有稳定性这一个不同点了。而PLC现在正在工业生产中大行其道。也就可见稳定性是对于工业生产是多么的重要。这也是PLC比单片机贵几百几千倍,但是也离不开PLC的原因。最为著名的PLC为:西门子PLC。

Modbus协议:

既然工业中对安全和稳定要求这么高,因此适合在工业工厂中使用通信协议“Modbus”就诞生了。也成为了行业的标准。所有工业下位机设备都是支持Modbus协议。所有工业上位机软件开发平台,都默认提供了Modbus通信模块(库),都不用你自己开发。注意,Modbus只是工业通信协议中的一个。除此之外,还有其他工业级别的通信协议。

组态软件:

前面提到,在工业生产中对软件的功能要求不高,只有固定的几类,常用的功能有:显示电流电压温度等物理量、开关控制、报警、记录log、逻辑判断、与PLC通信。因此开发平台把这几个功能进行了模块化,开发人员只需通过“配置”即可做出一款工控上位机软件。这类软件开发平台叫做“组态软件”。国外组态软件:InTouch、WinCC、iFix,国内组态软件:KingView(组态王)、KingSCADA(组态王的升级版本)。注意,组态软件一般都是收费软件,且价格不便宜。

上位机用什么编程?

上位机的编程语言很多啊,VC,C++,C#,VB,VB。NET等等,关键是看你熟悉哪种编程语言了,这几种语言都是面向对象的编程语言。VB入门比较容易,而且比较容易掌握,VB。NET是VB的升级版本,现在也比较流行。跟C有关的都需要有C语言的基础。

如果对上位机的控制要求不是很高的话,或者说对技术先进性上没有太高要求,建议用VB,比较好掌握!

扩展资料:

几种程序语言的区别:java语言、python语言、C语言、PHP语言。

1、java语言

java语言曾一度家喻户晓,如今虽然潮流已过,但java跨平台的优势以及强大的类库着实不容小觑,其他语言很难超越,java衍生除了非常多周边产品(如jsp),非常多的开源系统都是基于java(hadoop、hive、hbase、lucene等)。

java和c一样也是编译执行的语言,区别在于java编译出的字节码文件运行在一层java虚拟机之上,而虚拟机可以架设在各种操作系统上,所以java也就有了跨平台的优势,一处编译多处执行。

2、python语言

python的强大在于它的多功能性,既是解释执行,又可以编译成文件,既是脚本语言,又具有面向对象的所有性质,如今python开源的类库已经非常强大了,什么功能都有,python也成了大数据方向必要的工具。

3、C语言

C语言是编译执行的语言,是万物之源。linux下常用的编译器是gcc,c语言源代码可以直接被编译成可执行程序(机器码),被称为万物之源是因为各种语言都是用C语言写的,如java、php、python等。

4、PHP语言

PHP巨大的生态系统使得在未来几年里全世界需要大量的开发人员对其提供支持。排名前三的内容管理系统-WordPress、Drupal和Joomla都是使用PHP构建的,而且迄今大概有80%的网站运行在PHP之上。

上位机软件用什么开发?

熟练使用Mysql,VS,SQL Server,XTML等软件开发工具;

熟悉USB、串口、以太网、CAN等数据采集;

工业控制上位机软件哪个好

LabVlEWQ好。LabVlEWQ是用图标来进行编程的一个开发环境,通过在表示不同功能节点的图标之间连线来完成预想的程序,LabVIEW所采用的是图形化开发语言,通过这种语言,LabVIEW可以极大的提高工作效率。

蓝牙上位机app有哪些

做安卓手机APP通常使用高端大气的Android Studio,开发语言是Java,该开发IDE就是体积大

学习成本高,入手慢,这里给大家推荐一款国产的软件,体积小,运行和编译速度快。最重要的是编程语言是中文

这个软件就是E4A.

本次我将向大家介绍如何使用E4A开发BLE蓝牙手机上位机APP。

当然,该软件自带了丰富的例子,也提供了一个BLE例子,大家可以借鉴。

由于没有提供各种库的说明文档和帮助文件,学这个软件可能有经过一段摸索,这里我将向大家介绍我在开发这个软件中

获得的经验。

中文编程语言:易语言,采用中文作为关键字,但是编程的语法和思想和C语言是类似的

为了方便理解,这里我结合单片机开发的思路简单介绍一下

变量要声明类型

对象操作的函数称为:方法

对象可触发的中断函数称为:事件

对象可设置的参数称为:属性

-----------------------------------------------------------------------------------------

好接下来介绍 BLE蓝牙库

BLE(Bluetooth Low Energe)低功耗蓝牙设备主要用于智能穿戴和物联网。

BLE蓝牙类库,包含两种操作:方法和事件

方法:

初始化

置可被发现

开始搜索

停止搜索

连接设备

断开连接

释放资源

是否可读

是否可写

是否可通知

读取数据

写入数据

事件:

创建完毕

发现设备

信号强度改变

发现服务

连接状态改变

读取数据完毕

通道数据改变

由于不存在可见的对象,因此蓝牙没有属性设置。

了解方法和事件的用法可通过左侧类库目录选中对应的条目,在下面的提示信息中查看

例如选中BLE蓝牙库的方法 初始化 条目后:

方法:初始化()为 逻辑型

分类:BLE蓝牙类库---BLE蓝牙

注释:初始化BLE蓝牙设备,成功返回真,失败返回假,BLE蓝牙需要安卓4.3以上系统的支持。

另外 事件类似中断函数,因此在代码中没有先后顺序,可以根据易读的排列顺序进行排版。

所有的动作均属于触发的事件,因此,方法通常在事件里面进行调用。

自己创建的函数,需要自己实现该函数的具体过程,因此函数在这里称为:过程

不过我们这里做BLE蓝牙APP可以不用到过程。

好了,基本的概念已经介绍了,我们可以开始整了。

-----------------------------------------------------------------------------------------

第一步,先根据我们的需要完成可视化的组件布局,并给添加的组件起上一个跟操作相关的名字,在组件的属性对话框设置,同时可以设置组件的其他相关属性。

第二步,使用中需要完成单击响应的,我们可以在设计区直接双击组件,即可自动在代码区生成一个空的事件(类似单片机开发中的中断处理函数,用于响应单击事件),例如四个方向键的单击事件。以下代码我已经填充了单击后执行的蓝牙方法:写入数据,即发数据给连接到手机的蓝牙模块。

事件 按钮上.被单击()

BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("上\n","GBK"))

结束 事件

事件 按钮下.被单击()

BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("下\n","GBK"))

结束 事件

事件 按钮左.被单击()

BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("左\n","GBK"))

结束 事件

事件 按钮右.被单击()

BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("右\n","GBK"))

结束 事件

第三步,完成主窗口的创建工作,因为我们要使用蓝牙库,所以我们可以在APP启动后就申请使用蓝牙的权利,并初始化一个蓝牙对象。

另外就是要实现软件退出的操作,所以我们可以设置一个退出的按钮,实现结束程序。内容如下。

事件 主窗口.创建完毕()

'安卓6.0以上的系统需要动态申请权限,否则app可能无法正常运行

如果 权限操作1.取系统版本号()=23 则

权限操作1.申请全部权限()

结束 如果

变量 结果 为 逻辑型

结果 = BLE蓝牙1.初始化()

弹出提示("初始化结果:" 结果)

结束 事件

事件 权限操作1.申请完毕(权限数组 为 文本型(),申请结果 为 整数型())

'可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码

结束 事件

事件 图片框_返回.被单击()

结束程序()

结束 事件

第四步,实现蓝牙设备的搜索,从搜索到的蓝牙信号中选出我们要的那个,另外在搜索的过程中显示信号的强度

通过按钮单击实现搜索与停止搜索,并设定搜索时间为10秒,10秒后自动停止搜索。

通过发现设备事件,读取搜到的设备,并匹配名称是否为自己要找的信号。这里我内置了信号名称,也可以通过一个输入框,实现敏感信号名称的修改

如果发现的设备名称是指定名字的信号,就将名称和地址写入到列表框的项目,同时给项目做个编号和标记,方便后面取出

使用信号强度改变事件读取搜索中的信号强度,我们只读取感兴趣的那个名字的信号。

当列表中出现我们感兴趣的那个信号名称和地址时候,我们可以单击列表中的该项,触发连接设备,实现手机与蓝牙模块的连接。

同时通过颜色和文字提示是否连接上或者断开了。这可以使用BLE蓝牙对象的连接状态改变事件实现。

事件 搜索按钮.被单击()

如果 搜索按钮.标题 = "开始搜索" 则

位置传感器1.开始监测()

BLE蓝牙1.开始搜索()

时钟1.时钟周期 = 10*1000

搜索按钮.标题 = "停止搜索"

否则

BLE蓝牙1.停止搜索()

时钟1.时钟周期 = 0

搜索按钮.标题 = "开始搜索"

结束 如果

结束 事件

事件 时钟1.周期事件()

BLE蓝牙1.停止搜索()

搜索按钮.标题 = "开始搜索"

时钟1.时钟周期 = 0

结束 事件

事件 BLE蓝牙1.发现设备(名称 为 文本型,地址 为 文本型,MajorID 为 整数型,MinorID 为 整数型,配对状态 为 整数型)

如果 名称 = "BT24" 则

'屏蔽掉没有名称的蓝牙设备

弹出提示("发现设备")

列表框1.添加项目("名称:" 名称 "\n地址:" 地址)

列表框1.置项目标记(列表框1.取项目数()-1,地址)

结束 如果

结束 事件

事件 BLE蓝牙1.信号强度改变(名称 为 文本型,地址 为 文本型,信号强度 为 整数型)

如果 名称 = "BT24" 则

列表框1.置项目内容(0,"名称:" 名称 "\n地址:" 地址 "\n信号:" 信号强度)

结束 如果

结束 事件

事件 列表框1.表项被单击(项目索引 为 整数型)

设备地址 = 列表框1.取项目标记(项目索引)

BLE蓝牙1.连接设备(设备地址)

'BLE蓝牙1.连接设备(列表框1.取项目标记(项目索引))

弹出提示("正在连接")

连接状态.标题 = "正在连接"

结束 事件

事件 BLE蓝牙1.连接状态改变(状态 为 整数型)

如果 状态 = 1 则

连接状态.标题 = "已连接"

连接状态.背景颜色 = 绿色

否则

连接状态.标题 = "已断开"

连接状态.背景颜色 = 红色

结束 如果

结束 事件

第五步,通过服务提供的通道进行数据传输

连接上蓝牙模块后,就要建立通信的通道了,这需要通过服务来完成,因此我们要对连接的蓝牙模块索取服务的操作

这称为发现服务 事件,由于蓝牙模块中有多个服务可选,我们要找到我们可以进行通信的那个,这个通常在模块的手册也给了相关的短ID

称为服务UUID,每个服务又含有若干个通道UUID。因为模块的出厂设定,只有能用的那个服务才能通信,其他的服务是不可完全可读写的

在产生BLE蓝牙的发现服务事件后,会自动获取到服务的所有信心,装载到一个名字叫:服务信息的集合里,这个集合类型你就当类似C语言结构体数组的东西。

接下来为了验证每个服务是否可读写,就要一个一个测试,这类似,从一个结构体数组先一个一个读出来数组的元素,在数组元素的结构体里取结构体成员,

这就需要用到两层的for循环了,E4A 的for循环用一对 判断循环首---判断循环尾,进行包围。为了方便记,你可以给循环的变量起名字:i,j

然后就是测试对应的服务与通道是否可读,可写,可通知。如果三者都满足,那就是我们要找的通道,实际上,在多组的服务中,只有厂家指定的那组是

满足这三个条件的。其他的一般只能满足可读这一条。

找到合适的服务与通道后,想实现数据的接收,要执行 读取数据的方法,如果直接读,那么系统没有准备好呢,会导致读失败,后面就容易卡死。

这里就像初始化完单片机,要给系统以反应时间,等待个几百毫秒,然后再进行后面的操作一样。

这里就要用到定时器了,找到服务与通道后执行一个1000ms定时器的启动操作,在定时器计数满了之后的事件中执行读取数据的方法,

同时接收框显示服务和通道的ID,并关闭定时器。

事件 BLE蓝牙1.发现服务(服务信息 为 集合)

如果 服务信息.取项目总数() 0 则

退出

结束 如果

变量 i 为 整数型

变量 j 为 整数型

变量 信息数组 为 文本型()

i = 0

判断循环首 i 服务信息.取项目总数()

信息数组 = 服务信息.取项目(i)

j = 0

判断循环首 j 取数组成员数(信息数组)

如果 j 0 则

如果 BLE蓝牙1.是否可读(信息数组(0),信息数组(j)) = 真 且 BLE蓝牙1.是否可写(信息数组(0),信息数组(j)) =真 且 BLE蓝牙1.是否可通知(信息数组(0),信息数组(j)) =真 则

服务UUID = 信息数组(0)

通道UUID = 信息数组(j)

'BLE蓝牙1.读取数据(服务UUID,通道UUID)

'接收框.内容 = 服务UUID "\n" 通道UUID

时钟2.时钟周期 = 1000

结束 如果

结束 如果

j = j + 1

判断循环尾

i = i + 1

判断循环尾

结束 事件

事件 时钟2.周期事件()

BLE蓝牙1.读取数据(服务UUID,通道UUID)

接收框.内容 = 服务UUID "\n" 通道UUID

时钟2.时钟周期 = 0

结束 事件

执行完读取操作后,系统会在通道内有数据发送来的时候触发通道数据改变的事件,在该事件中我们读取数据,另外也会触发读取完毕的事件

发送数据是通过单击发送按钮触发写入数据方法实现的,当完成写入后可通过写入数据完毕事件知道是否发送成功。

事件 BLE蓝牙1.读取数据完毕(结果 为 整数型,服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())

如果 结果 = 1 则

弹出提示("读取数据成功:" 通道UUID "\n数据:" 字节集到十六进制(数据))

否则

弹出提示("读取数据失败:" 通道UUID "\n数据:" 字节集到十六进制(数据))

结束 如果

结束 事件

事件 BLE蓝牙1.通道数据改变(服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())

弹出提示("通道数据改变" 通道UUID "\n数据:" 字节集到十六进制(数据))

接收框.加入文本(字节到文本(数据,"GBK"))

结束 事件

事件 发送按钮.被单击()

BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(发送框.内容,"GBK"))

结束 事件

事件 BLE蓝牙1.写入数据完毕(结果 为 整数型)

如果 结果 = 1 则

弹出提示("写入数据成功")

否则

弹出提示("写入数据失败")

结束 如果

结束 事件

其他的操作可在以下完整代码中查看

变量 服务UUID 为 文本型

变量 通道UUID 为 文本型

变量 设备地址 为 文本型

事件 主窗口.创建完毕()

'安卓6.0以上的系统需要动态申请权限,否则app可能无法正常运行

如果 权限操作1.取系统版本号()=23 则

权限操作1.申请全部权限()

结束 如果

变量 结果 为 逻辑型

结果 = BLE蓝牙1.初始化()

弹出提示("初始化结果:" 结果)

结束 事件

事件 权限操作1.申请完毕(权限数组 为 文本型(),申请结果 为 整数型())

'可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码

结束 事件

事件 图片框_返回.被单击()

结束程序()

结束 事件

事件 搜索按钮.被单击()

如果 搜索按钮.标题 = "开始搜索" 则

位置传感器1.开始监测()

BLE蓝牙1.开始搜索()

时钟1.时钟周期 = 10*1000

搜索按钮.标题 = "停止搜索"

否则

BLE蓝牙1.停止搜索()

时钟1.时钟周期 = 0

搜索按钮.标题 = "开始搜索"

结束 如果

结束 事件

事件 时钟1.周期事件()

BLE蓝牙1.停止搜索()

搜索按钮.标题 = "开始搜索"

时钟1.时钟周期 = 0

关于上位机软件开发用哪些软件和上位机软件开发工程师具体做什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码