《实时控制软件设计》之Automation Studio开发环境
Automation Studio是贝加莱公司的控制软件开发平台,软件可运行在贝加莱的基于PC的控制器上,基于Automation Studio我们可构建一个完整的控制软件构建、测试和仿真运行平台。本文以一个简单的例子介绍用Automation Studio进行基于C++的控制软件开发环境搭建和仿真运行。
- 我们的目标:
1)用C++写一个用户程序,该程序被实时控制器的一个实时任务所调用,每100ms执行一次。
2)用组态工具画一个可视化界面,把用户程序中的一些变量和界面上的控件关联起来。
3)把C++程序和可视化界面都下载到具体的硬件中去,并运行。
为达到上述目的,在一个实际项目开发中(以贝加莱系统为例),我们通常需要三个硬件平台:
1)一台装有windows的笔记本,安装好Automation Studio开发软件,工程师用于软件开发。
2)一台安装在现场的实时控制器,装有实时操作系统(Vxworks)。
3)一块安装在现场的触摸屏作为人机界面,实现操作的输入和状态显示。
在教学过程中为每个人都配齐上述硬件成本比较高,我们采用变通的方法,在我们的笔记本电脑上,安装一个ARSim软件,来模拟一个实际的控制器硬件,再安装一个VNC Viewer软件,用来模拟一块触摸屏。它们之间通过TCP/IP通信,因为都在一台电脑上,所以都通过本地IP地址127.0.0.1来访问。
软件安装
Automation Studio软件可到贝加莱官网上进行下载,试用期为30天,本文所用版本为v4.2.1,ARSim仿真软件已包含在内。。
VNC Viewer可采用各种开源软件,比如Real VNC
创建新工程
打开Automation Studio,点击File -> New Project,在对话框中选择新工程路径并命名工程名,我们建立一个rtcsd1的新工程,如下图所示。
主界面如下图所示
接下来我们要添加一个C++程序,双击右侧的Program图标创建一个C++程序,将程序名修改为Program_cpp,如下图所示
点击Cyclic.cpp,添加自己的代码如下:
#include <bur/plctypes.h>
#ifdef _DEFAULT_INCLUDES
#include <AsDefault.h>
#endif
#include "complex.h"
using namespace std;
unsigned long bur_heap_size = 0xFFFF;
complex c1(20, 10);
complex c2(1,1);
void _CYCLIC ProgramCyclic(void)
{
c1 = c1 + c2;
x = c1.real();
y = c1.imag();
}
这里我们实例化两个Complex复数对象,Complex类是我们之前自己编写的,定义在头文件complex.h里,我们把complex.h文件拷贝到Program_cpp程序的子目录中,并在Cyclic.cpp文件里添加:
#include "complex.h"
在函数ProgramCyclic()中,我们把复数c1的实部和虚部分别赋给变量x和y,我们把x和y的定义放在单独的变量定义文件Variables.var中,如下图所示:
C++程序的编写我们已经完成了,大家注意到,在这段程序里,没有main()函数,这是因为通常我们编写的程序生成二进制文件后,运行时是作为一个独立的进程被操作系统调用的。而在这里,函数ProgramCyclic()前面有一个修饰关键字_CYCLIC,表明这个程序将被控制器实时操作系统的一个周期性实时任务所调用。点击软件左侧工程导航器的Configuration View选项卡,并双击PC_any下的Cpu.sw文件,如下图所示,可以看到实时操作系统有八个周期性任务,我们把VisuProgram_cpp程序放入第一个周期任务,循环周期为100ms。
C++程序的编写我们告一段落,下面我们来设计可视化人机界面,首先添加一个可视化对象VC4 Visualisation,命名为Visu
点击软件左侧工程导航器的PhysicalView选项卡,导航器显示的树状结构是我们的仿真控制器硬件ARSim的硬件资源,右键点击第一个网卡ETH,选择Configuration,在弹出的界面中,将Visu对象映射到一个VNC Server中去,如下图所示。
编辑Visu画面,创建4个控件,如下图所示:
接下来我们把两个显示控件与变量x,y链接起来,如下图所示
点击菜单Project -> Build Configuration,编译工程,成功后软件询问是否把该工程下载到控制器硬件(这里是仿真控制器ARSim)中去,点击Transfer按钮进行下载,如下图所示。
下载完成后,程序将自动在ARSim中运行,现在我们需要通过VNC Viewer浏览人机界面,双击VNC Viewer,输入本地IP:127.0.0.1,将看到如下的运行画面。
x和y的值实时显示在画面上,并且每个100ms增加1,这个和我们的程序设计和配置是一致的。
更详细的操作介绍,可参见贝加莱文档。当完成上述练习后,就对Automation Studio的基本开发环境有了初步了解,可进一步调用STL、贝加莱提供的功能库以及自定义库来完成C++软件开发。
《实时控制软件设计》之Automation Studio开发环境的更多相关文章
- Android studio 开发环境搭建
Android studio 开发环境搭建 一.环境: 下载java jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jd ...
- Android Studio开发环境配置以及相关说明
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下在开发的时候使用的Android Studio开发环境版本以及相关注意事项. 一般来讲,每隔一段时间就要检查下Andr ...
- 【Android Studio安装部署系列】二、Android Studio开发环境搭建
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio开发环境安装步骤 下载Android Studio 下载地址: http://www.wanandroi ...
- windows平台下Android studio开发环境搭建教程
最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环境 .而随着Android stud ...
- android studio 开发环境配置
android studio 开发环境配置 参考: 第一次使用Android Studio时你应该知道的一切配置 https://www.cnblogs.com/qianguyihao/p/43909 ...
- Andriod Studio 开发环境安装和配置
Android Studio安装配置详细步骤(图文):http://www.2cto.com/kf/201604/500642.html第一次使用Android Studio时你应该知道的一切配置 : ...
- Android Studio开发环境部署
Step0:背景,那些年-- Step1:安装JDK Step2:安装Android Studio 其他问题1:安装Android Studio之前没有先安装JDK 其他问题2:No JVM inst ...
- Mac搭建cocos2dx+Android studio开发环境以及AnySDK的集成
配置环境: mac osx 10.12.6 cocos2dx 3.14 Android studio 2.3 目标: 在mac上配置cocos Android开发环境,接入AnySDK 配置: 1.安 ...
- Android开发学习之路--MAC下Android Studio开发环境搭建
自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...
随机推荐
- selenium3 浏览器驱动下载及验证
下载浏览器驱动 当selenium升级到3.0之后,对不同的浏览器驱动进行了规范.如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动. 各浏览器下载地址: Firefox浏 ...
- shiro实战系列(十一)之Caching
Shiro 开发团队明白在许多应用程序中性能是至关重要的.Caching 是从第一天开始第一个建立在 Shiro 中的一流功 能,以确保安全操作保持尽可能的快. 然而,Caching 作为一个概念 ...
- XML 读写(XmlDocument、XPathNavigator、XDocument)
内存中的 XML 处理 基于流的 XML 处理提供了最小的负载,但也只提供了最小的灵活性.在很多 XML 处理场景里,你不会在这么低的层次下工作. 对内存中的 XML 的处理则更加方便,但没有单一.标 ...
- 十分钟教你使用NoteExpress
http://www.a-site.cn/article/761794.html 如果你正走在读研的路上,不管是什么专业,日常生活中都少不了读文献.读文献和读文献. 与其等到文献堆积如山,给阅读和使用 ...
- 了解linux的进程:rootfs与linuxrc
导读 内核启动的最后阶段启动了三个进程进程0:进程0其实就是刚才讲过的idle进程,叫空闲进程,也就是死循环.进程1:kernel_init函数就是进程1,这个进程被称为init进程.进程2:kthr ...
- day73
今日内容: 1基于双下划线的跨表查询 套路一样,用__跨表 -一对多 -多对多 # 北京出版社出版的所有图书 res = models.Publish.objects.filter(n ...
- dom阻止事件冒泡
通常有两种事件流模型,一种是冒泡,一种是捕获.顾名思义,冒泡就是从内往外传播,捕获就是从外往里传播. 对于dom事件,就是这样的.比如,有两个父子div. <div id="pdiv& ...
- linux中原子操作实现方式
原子操作提供了指令原子执行,中间没有中断.就像原子被认为是不可分割颗粒一样,原子操作(atomic operation)是不可分割的操作. 如下面简单的例子: Thread 1 ...
- 在 R 中估计 GARCH 参数存在的问题(续)
目录 在 R 中估计 GARCH 参数存在的问题(续) rugarch 包的使用 简单实验 rugarch 参数估计的行为 极端大样本 结论 在 R 中估计 GARCH 参数存在的问题(续) 本文承接 ...
- Compensating-Transaction模式
在应用中,会将一系列相关的操作定义为一个连续的操作,当其中一个或者多个步骤失败的时候,Compensating-Transaction模式会重置(回滚)这个连续的操作.在云应用中,这些需要保证一致性的 ...