电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

编程设备范文

来源:火烈鸟作者:开心麻花2026-01-051

编程设备范文(精选9篇)

编程设备 第1篇

1 系统流程设计

系统依照医疗设备维修的周期进行设计。当医疗设备出现故障, 使用科室登录系统申请报修, 记录故障现象, 并给出故障处理响应级别, 提交后生成维修基础数据、显示待修状态, 系统自动给出报修提示, 通知维修科室处理, 维修工程师确认后, 记录显示修理状态, 故障排除后, 填写维修记录, 记录显示维修结束状态, 使用科室给出评价意见, 整个维修周期结束。系统工作流程, 见图1。

2 系统结构设计

系统各功能模块的设计主要基于医疗设备维修的各个环节, 主要包括设备报修、维修记录、保养提醒、报表统计、信息查询、保修管理、巡视记录等。系统结构体系, 见图2。

2.1 用户管理模块

根据使用人员角色的不同, 分配不同的使用权限, 如系统管理员、使用科室、维修人员、管理人员等。

2.2 设备管理模块

设备管理模块主要用来编辑设备的基本信息, 如设备的名称、型号、厂家等, 同时给每台设备设置唯一编码, 设备的维修、保养、保修等内容都通过该编码进行管理, 便于日后查询以及数据统计。

2.3 信息查询模块

该功能模块可以实现在维修记录里按设备名称、设备型号、使用科室、维修时间、维修人员等进行查询, 当医疗设备发生故障时, 维修人员快速查阅相关记录, 参考相似故障处理方法, 可以提高故障的处理效率。同时, 使用人员也可以通过查看设备的维修资料, 以加强设备相关方面的维护与保养。

2.4 报表统计模块

通过报表统计模块, 设备管理人员可以按照单个设备、设备类别、使用科室、时间段等来统计设备发生故障的次数、维修费用等信息。

2.5 保修管理模块

每台医疗设备购置时都有一定的保修期, 通过该模块可以设定保修期期限, 并提前给出报警提示, 便于重要设备办理延保手续。同时, 在设备报修申请单上显示是否在保修期内, 如果设备属于保修期内, 联系厂家维修, 否则维修人员进行维修[4]。

2.6 保养管理模块

医疗设备的维修方式通常分为事后维修、预防性维修[5]。本模块主要针对预防性维修, 根据医疗设备的使用频率, 以及设备自身的维护保养要求, 通过保养提醒模块设置保养周期, 提前给出报警提示, 通知设备维护人员, 确认报警后, 自动生成保养记录单。

2.7 设备报修模块

当医疗设备出现故障时, 登录系统, 选择设备保修菜单, 系统生成设备报修申请单, 包括申报日期、申报科室、设备编码、故障现象等内容。

2.8 维修记录模块

维修人员登录系统, 确认设备报修申请后, 自动生成维修记录单, 内容包括:维修开始和结束时间、故障原因、维修内容、维修费用、更换物件, 维修人员、设备名称、设备型号、设备厂家及联系方式、设备保修情况等, 为日常学习提供资料, 以防日后发生类似的状况[6]。

2.9 维修评价模块

当工程师处理设备故障结束并提交维修记录单后, 系统生成维修评价表, 并在设备使用人员的系统界面给出报警提示, 设备使用科室根据维修情况给出评价并确认维修结束, 数据可以作为维修人员的业绩考核参考。

3 系统的开发

3.1 运行环境

系统在微软的Windows 2000系统和Windows XP系统下均可工作, IIS是执行ASP的环境[7], 要正确配置好IIS服务。

3.2 开发工具

系统采用ASP网络语言编写, ASP是微软公司开发的一种应用, 它可以与数据库和其它程序进行交互, 是一种简单、方便的编程工具, 可以开发出动态交互性极强的网络系统。因为数据量不大, 我们采用微软的ACCESS数据库, 便于安装维护, 降低成本。

3.3 部分源代码介绍

软件系统的操作基本都需要与数据库进行传输数据, 为了减少代码的编写, 把ASP与数据库的连接代码编写成独立文件, 命名为conn.asp, 以便其他文件调用。部分代码如下:

当有文件需要操作数据库时, 只要在该文件的代码起始处添加:语句, 即可进行数据库相关操作, 避免数据库连接代码重复编写。

保修管理模块是针对每台设备的保修期限进行预警, 当设备保修期快结束时, 系统给出报警提示, 提醒对重要设备的延保等处理工作。部分代码如下:

4 结语

通过使用医疗设备管理系统, 方便了对医疗设备的维修管理[8], 使医疗设备维修管理更加规范化, 降低设备维修成本, 大幅提升设备的维修效率和质量。同时, 医院管理人员更加透明地了解医疗设备的运行情况, 为今后医疗设备的采购提供有力依据。

摘要:目的 设计一套医疗设备维修管理系统, 加强医疗设备维修管理。方法 应用现有的网络资源, 依托ACCESS数据库, 选用B/S架构、使用ASP编程, 开发医疗设备维修管理系统。结果 系统实现了医疗设备维修网络化管理, 优化了维修操作流程, 满足了医院设备维修管理需求。结论 系统的应用提高了医疗设备维修的工作效率和管理水平。

关键词:医院信息系统,医疗设备维修管理,ASP编程,网络化管理

参考文献

[1]张文才, 冉建鹏, 谢京启.浅谈医学工程科设备报修系统开发工具的选择[J].医疗装备, 2010, 23 (7) :83.

[2]朱彤辉.使用VB开发医疗设备维修管理系统[J].中国医疗设备, 2011, 26 (4) :40-42.

[3]冉建鹏, 任春海, 谢京启.医学工程科设备报修系统的开发与应用[J].医疗装备, 2010, 23 (5) :35-36.

[4]曾立.医院综合维修管理系统的设计与应用[J].中国医疗器械杂志, 2011, 35 (2) :117-118.

[5]童斌.医疗设备维修管理的几点问题与对策[J].医疗卫生装备, 2010, 31 (1) :91-92.

[6]刘文, 李敏燕.浅谈医疗设备管理[J].现代医学仪器与应用, 2007, 19 (4) :37-39.

[7]粱丽.在Windows XP环境下配置IIS[J].数字技术与应用, 2010, (10) :120.

编程设备 第2篇

1.类成员指针

Class test

{

Public:

Int fun(int)const;

Int fun(int);

Static int fun(int);

Int iTemp;

}

1.1非静态成员函数指针定义:

int(Test::*pFun)(int)= &Test::fun;

int(Test::*pFunConst)(int)const = &Test::fun;

使用:

Test a;

const Test b;

(a.*pFun)(2)或(a.*pFunConst)(2);

(b.*pFunConst)(2);

不能用(b.*pFun)(2);

1.2非静态成员变量int Test::*pInt = &Test::iTemp;

(a.*pInt)= 3;

1.3静态成员函数指针int(*pFun)()= &Test::fun;

或 int(*pFun)()= Test::fun;都正确;(注:定义无域操作符)使用:

(*pFun)()或 pFun()都正确;

2.非成员函数指针和静态成员函数一致。

3.非成员函数和静态成员函数上不允许修饰符。例如 void fun()const;void fun()volatile;但非静态 成员函数允许const、volatile等修饰符。

4.变量修饰符

auto:指定数据存储在栈中。局部变量默认为auto。该修饰符不能用于成员变量和全局变量。

static: 局部变量表示存储在静态空间,全局变量表示不允许外部引用。

volatile:表示该变量可能随时改变,不要做任何假设优化。

mutale: 去除成员变量的const属性。

extern:全局变量默认为extern属性,表示可被外部引用,此时与static相对。

extern int a =2;表示定义一个可被外部引用的变量。

extern int a;表示引用外部变量。

5.数据类型隐式转换

短数据->长数据(eg: float-> double)

有符号->无符号(eg: int-> unsigned int)PS: 所以 int(-1)>unsigned int(1);

低精度->高精度(eg: int-> float)

6.memcpy 有“防重叠”覆盖机制,strcpy 没有。

7.float表示

共计32位,折合4字节

由最高到最低位分别是第31、30、29、……、0位

31位是 符号位,1表示该数为负,0反之。

30-23位,一共8位是指数位。

22-0位,一共23位是尾数位。

每 8位分为一组,分成4组,分别是A组、B组、C组、D组。

每一组是一个字节,在内存中逆序存储,即:DCBA

8.不能在类的声明中初始化类常量,而只能在构造函数初始化列表来初始化

9.类中的枚举常量不占用对象的存储空间

10.有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。

11.赋值函数,应当用“引用传递”的方式返回String 对象。如果用“值传递”的方式,虽然功能仍然正确,但由于return 语句要把 *this 拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,降低了赋值函数的效率。

12.对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。如果用free 释放“new 创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete 释放“malloc 申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。

13.如果用new 创建对象数组,那么只能使用对象的无参数构造函数,delete时如果对象没有析构函数,则delete和delete[]是功能相同的。

14.只能靠参数而不能靠返回值类型的不同来区分重载函数。编译器根据参数为每个重载函数产生不同的内部标识符。并不是两个函数的名字相同就能构成重载。全局函 数和类的成员函数同名不算重载,因为函数的作用域不同。

15.关键字inline

必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。定义在类声明之中的成员函数将自动地成为内联函数。

以下情况不宜使用内联:

(1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。

(2)如果函数体 内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。

16.只有静态常量整型数据成员才可以在类中初始化,普通成员只能在初始化列表或函数内初始化,常量成员只能在初始化列表。成员对象初始化的次序完全不受它们在 初始化表中次序的影响,只由成员对象在类中声明的次序决定。

17.拷贝构造函数和赋值函数非常容易混淆,常导致错写、错用。拷贝构造函数是在对象被创建时调用的,而赋值函数只能被已经存在了的对象调用。

18.不想编写拷贝构造函数和赋值函数,又不允许别人使用编译器生成的,则只需将拷贝构造函数和赋值函数声明为私有函数,不用编写代码。

19.“const T”和“T const”总是都被允许的,而且是等效的。

注意在常量指针(const pointer)中,“const”永远出现在“*”之后。

例如:

int *const p1 = q;//指向int 变量的常量指针

int const* p2 = q;//指向int 常量的指针

const int* p3 = q;//指向int 常量的指针

20.一个常见的微妙问题是,一个函数风格的宏并不遵守函数参数传递的规则。

21.没有引用数组,但可有指向数组的引用,并且保留数组的边界。

22.左值拥有保存值的位置,而右值则没有相关地址,只是简单值。

23.负索引是可以的,如p[-2]或(-2)[p]都是可以的(p必然不能是数组名),但必须保持不越界。

sum=p()+q()+r();不能保证p(),q(),r()调用的顺序。

逗号运算符“,”可以保证求值顺序.result=(p(),q(),r());是先求p(),q(),然后将r()赋给result

24.在if的条件里声明变量,且可在真假分支里面使用。

const int * const * p;p是个指针,指向常指针的,常指针指向一个常量int。

25.不能用空白初始化列表来规定默认的对象初始化.class a;

a A();//会警告,看起来像函数声明

a *p=new a();//ok

a *p=new a;//ok

26.可以写一句只有数字的代码,如1234;(void)0;可以编译执行,相当于nop。

27.给函数指针赋值时可以对函数名取地址也可以不取,通过函数指针调用函数时可以用*也可不用。

28.static_cast可以转换基本数据类型(int->char)、void*和有类型指针、基类和派生类指针的转换(多重继承也行,它可重新计算偏移地址),但是不能转换如(int*->char*等)。

29.dynamic_cast主要用于执行“安全的向下转型”,reinterpret_cast可执行任何转换,const_cast执行去 const转换。

30.将取地址运算符用到完全限定的类成员名(包括变量和函数),就能获得指向成员的地址。使用形式为“X::*”来声明一个指向类X成员的指针。注意声明成员 函数指针的时候不能像普通函数指针可以省略&或*的使用,但静态成员函数则除外,它和普通函数一致。成员指针和普通指针不一样,并非指向一个内存 区域,而是相当于一个结构的偏移量,当它和具体的对象结合就能指向特定对象的特定成员。

31.当把派生类对象赋给基类对象的时候会产生切割现象,即针对派生类的数据和行为将产生切割。

32.多维数组的第1个元素是数组而非普通类型。

33.在含有单参数构造函数的类中注意隐式转换。如String s=“Hello”;

34.函数对象是重载函数调用运算符的类对象。

35.引用需要用左值进行初始化,但指向常量的引用除外,编译器将创建一个临时左值。如const int c=12;//ok 一般情况下编译器产生的临时对象的生命期在它所在的最大表达式范围内,但用临时对象初始化常量对象的引用时会让编译器保证临时对象和引用生命周期一样。

36.可以将基类的成员指针(变量或函数)安全的转换为指向派生类成员的指针,但反之则不安全。

37.函数参数的传递是采用拷贝构造函数而非赋值操作。对未初始化的对象赋值可能会出现意外,如类中含有未初始化指针。

38.声明但不定义私有的拷贝构造和赋值运算将会关闭类的复制操作。并且赋值运算、拷贝构造函数和析构函数不会被继承,对派生类重载赋值运算时需要调用基类的赋 值运算。

39.在构造函数里对成员变量初始化,比较好的方式是使用初始化列表。在初始化列表中静态成员和数组不能被初始化。

类的初始化顺序是虚拟基类的成员->非虚基类成员->类自身成员,和初始化列表的顺序无关。含有虚拟基类和不含的类在成员布局上不一样,含有虚拟基类的类将虚拟基类的数据放在最后面。另外如B:virtual A,C:virtual A,D:B,C;(均是虚继承)则D的构造函数将对A初始化一次(即使在初始化列表没有显式初始化A),B,C将不再对A初始化。

所有静态数据(全局变量和静态存储变量)在使用前如未初始化其值都为0.全局变量可以存储在静态初始化区和未初始化区。

40.RVO返回值优化,是指在函数返回中执行拷贝初始化到直接初始化(使用带非对象参数的构造函数)的转换,NRV和RVO类似,但使用命名局部变量来保存返 回值。p160

41.重载、覆盖和隐藏的区别

重载的特征:在同一个类,函数名相同,参数不同,virtual可有可无。

覆盖的特征:在两个类(基类和派生类),函数名和参数都相同,且必须有virtual关键字。

隐藏的特征:基类函数名和派生类函数名相同参数不同,且不管是否有关键字。或函数名、参数均相同,但基类 函数没有virtual(有的话就是覆盖)。

不能覆盖而只能隐藏基类非虚函数。

42.相同类型的所有对象公用一个虚函数表,在单继承下不管有多少个虚函数都只有一个虚函数表指针。覆盖就是在为派生类构造虚函数表时用派生类的函数地址替换基 类成员函数地址的过程。

43.使用常量类成员可能在对类对象赋值的时候产生问题。

编程设备 第3篇

关键词:一体化教学 改革 项目教学

随着学院国家骨干高职院校的建设,机电系不断深化“多能并重,学做一体,校企融通”的人才培养模式改革,充分利用校企双方教育资源,以综合职业能力培养为主线,创新人才培养质量评价体系,将思想品德、职业道德、企业文化的养成贯穿学生培养全过程,使学生培养不仅能够适应行业企业当前的具体岗位要求,而且能够面向未来解决跨岗位甚至是跨职业领域的复杂问题,具备职业可持续发展的能力。

通过组织企业专家和骨干教师按照电气自动化专业岗位群知识、能力需求——梳理典型工作任务——结合行业企业标准、维修电工中级技能鉴定和完成工作任务对知识、技能的需求——确定学习目标——创设教学情境——教学实施的“倒推法”开发了《设备控制编程规划与实施》等学习领域课程。在突出综合职业能力培养的基础上,融入企业文化元素。形成了“教师与师傅、学生与学徒、教室与车间”三个一体化教学特色。逐步形成了以综合素质为基础,以专业技能为核心,以综合能力为主线的教学特色,教学质量明显提高。

1 不断学习新的职业教育教学理念,职业教育应加强工学结合一体化

受现有教学设施条件、环境等多种因素影响,多数教师平常忙于日常教学工作,没有系统学习全新的职业教育理念,沿用传统的教学方法进行职业教育教学工作,出现学生厌学、教学效果差等问题。需要教师通过不断学习,提高职业教育教学理论水平,结合职业教育生源变化,用新的教育理念指导改革教学工作,才能适应不断变化的职业教育现状,调动学生学习的积极性,提高教学质量。

1.1 工学结合是职业教育课程的本质特征。学生将来从事的工作应是一个整体,传统的学科课程没有把工作看成一个整体,每一门课程就像大象的一部分,学生在学习过程中像盲人摸象一样,不能给学生整体印象,学生不明白学习该课程对将来工作的作用,会影响到学生学习的兴趣和积极性。为了让学生获得“工作过程知识”,应当实施基于工作过程的工学结合一体化课程。工学结合一体化不是简单的将传统的学科性课程进行解构、排序和重新构造,需要从专业岗位工作中找寻系列具有职业的典型意义的综合性工作任务,然后将专业基础知识和职业技能融会其中,有机整合。

1.2 工学结合课程设计的基本原则。工学结合课程应使基础理论学习与实践技能学习有机结合,相互促进,而不是相互独立。理论基础学习后再进行实践技能训练,职业院校学生单纯学习理论基础的积极性不高,学习效果较差,另外学习的理论知识不能及时加以应用、内化,遗忘率比较高,这些因素会影响后面的技能训练;促进学生认知能力发展与建立职业认同感相结合,使学生在学习工作过程中,不仅锻炼学习工作能力,同时熟悉本专业毕业生将来从事工作的内容、发展方向;符合职业能力发展规律与遵循技术要求和社会规范相结合,在课程设计、项目实施过程中,结合国家行业规范要求,循序渐进地培养学生综合职业能力;科学性与实用性相结合,职业教育更加侧重学生职业能力的培养,在课程项目的设计上应重点考虑实用性,与企业的生产实际密切联系,让学生真实感觉到所学知识的实用性。学生通过对课程项目的设计与实施,对工作的任务、工作环境、实施过程等进行整体化的感受和实践,在项目实施过程中实现理论知识与实践技能、工作过程与解决问题方法、工作态度与价值观学习的统一。

1.3 行动导向学习的层次。从实验导向性学习,主要过程为制订实验计划、进行实验和检验评价结果,目的是解决实际技术问题,适合实现较为单一而明确的学习目标;问题导向性学习,主要过程为理清问题实质、确定结构、解决问题和实际应用结果,目的是培养技术思维能力,典型的如头脑风暴法、和优劣势分析法等;项目导向性学习,按照完整的行动模式,全面培养技术、社会、经济等方面的能力,促进创新精神的发展,典型的如项目教学法和引导课文教学法等。

1.4 项目教学。是以实践为导向、师生共同实施一个完整的项目工作而进行的教学活动。其实质是选用可以动手的工程实例项目为平台,为学生创建学习情景,学生通过对实际项目的认识、了解与协作动手完成,学习并掌握相关的理论知识和实践技能。

1.5 学习情境与学习任务。学习情境是在典型工作任务基础上设计的、学习的“情形”和“环境”;对学生来讲,学习情境是一个“学习与工作任务”,即“内容是工作的学习任务”,简称学习任务(学习性任务)。学习任务是学习情境的物质化表现,它来源于生产或服务实践,能够建立起学习和工作的直接联系;找出有学习价值的工作任务,不是为某一项“技术”想出一个“载体”。

1.6 情境教学的发展过程。从开始简单的以产品为导向,到以项目为导向,逐步过渡到以真实合同为导向。可设计内容复杂、全面的项目任务,培养综合职业能力,保证职业教育学习的全面性和工作过程的系统性。

2 学习领域课程的开发

2.1 校企合作,开发一体化教学项目。通过深入水泥生产、煤深加工、轴承生产加工等行业企业调研,走访一线技术人员,了解企业典型PLC控制的自动设备应用实例,指导本课程的项目设计。以企业中PLC控制的典型设备为载体,与企业技术人员合作设计系统的教学项目,通过与企业生产实际相结合的项目教学,调动学生学习的积极性,全面提升学生的基础理论知识、操作技能、职业素养等综合能力。

2.2 多能并重,强化职业技能和核心能力训练项目教学的内容应该与国家职业资格标准相融通,使学生学完课程后具备获取维修电工及PLC编程相应职业资格证书的能力。

2.3 确定教学项目的标准。项目应具有明确的工作任务,完成具体的产品,进行成果展示交流;与企业生产实际相结合,具有完整的工作过程,具有一定的应用价值;项目实施过程中能将相关理论知识和实际动手操作相结合;学生在项目实施过程中团结协作,既能组织、安排自己的学习行为,独立完成自己分担的工作任务,又要学会合作,小组协调共同完成项目任务;项目设计具有梯度,对前面掌握的知识、技能要熟练应用,小组内学生自己解决在项目实施工程中出现的问题。

3 一体化教学实施过程

3.1 建立一体化教室。通过建立一体化教室,将理论知识和实践技能学习合二为一,可划分为理论学习区和实践学习区,学习环境与实际工作情境一致性高;将学习环境扩展成为生产环境,在一体化教室设置工具材料区、加工区、半成品区、检验区、成品区等,让学生熟悉企业的生产环境,了解企业文化,不局限于单项技能练习。侧重的是一体化教室的每一个环节与企业实景耦合,学生在仿真的环境中学习与工作,在工作过程中按照企业相关规范标准执行,贯彻现场“6S”管理,加强监督管理,帮助学生克服随手摆放工具、材料、工作场地凌乱等不良习惯,养成良好的职业习惯。

3.2 教学组织。在教学过程中按照明确任务获取信息、制定计划、做出决策、实施计划、检查控制、评定反馈六步组织教学。每个工作项目有明确的工作任务,将学生根据各自特点合理搭配,分成若干学习小组。采取灵活多样的形式,引导学生查阅收集资料、鼓励学生小组内讨论交流,制定合理的方案;对于难度较大的问题引导小组间进行交流讨论,互相学习;制定学生工作页,进行项目角色轮换,引导学生合作完成工作任务,使每一个学生都能积极参与项目实施,培养学生的独立工作能力及团结协作精神。不仅重视项目实施的工程控制,同时要引导学生重视项目完成后的总结,根据小组间及教师的评价反馈意见,对项目实施的不完善之处进行反思,借鉴别人的经验方法,不断提高。

综合应用项目法、任务驱动法、引导文法、自主学习法等多种教学法,培养学生综合应用所学专业知识,查阅资料、进行项目规划、软硬件设计、实施、检查综合职业能力,通过自己独立思考或与他人交流合作解决项目设施过程中遇到的问题,培养学生创新思维和创新能力、沟通合作能力。

3.3 教学单元设计。以PLC控制交通灯项目为例,教师先讲解顺序控制方法,交通灯工作过程的顺序划分;接着由学生分成若干个工作小组,结合前面项目知识完成I/O接线图设计、程序编制、系统安装接线、系统调试;此项目既具有实用价值,同时可以采用经验设计方法、单一结构顺序图、并行结构顺序图、采用一个定时器,使用比较指令等多种方法实现控制功能,通过多种不同方法,可以极大的调动学生学习的兴趣,锻炼综合应用所学基础知识的能力。完成后各小组整理项目技术文件,并完成项目技术总结报告,进行交流展示,教师点评。

3.4 改革评价方法,注重过程考核。《设备控制编程规划与实施》课程考核中,改革了以往一张期末试卷定成绩的考核方法。不仅重视学生的期末考试结果,更注重学生整个项目实施过程表现,注重过程评价,做到形成性评价与终结性评价相结合。调动学生参与每一个项目的积极性,激发学生的学习兴趣。过程性考核根据学生在每一个项目实施过程中的表现,对方案制定、电路设计、程序设计、安装工艺、调试规范、团队合作、工作态度等方面综合评定,包括学生按照评分标准自评、互评、教师评定。

4 《设备控制编程规划与实施》一体化教学改革成效

教学过程采用一体化的教学方法,提高了学生学习本课程的兴趣。学生通过对发现的问题、出现的故障不断思索、交流探讨、反复试验,最终顺利完成任务,让学生们有一种成就感,学习的专业课程的积极性提高了。基础理论的学习通过设计与实际应用相关联的实训项目,使学生切实地感受到所学的知识应用于实践的效果,增强学有所用的自信心。独立完成多个学习任务,使所有学生实际动手操作能力和独立解决问题能力大大增强。在项目实施过程中,教师进行针对性的辅导,使每个学生的专业能力都得到最大限度的提高。课程结束时,班级多数学生的编程能力、安装工艺、调试能力有了很大提高,学生的自学能力、自我评价和总结归纳的能力都能够大大提高。学生的互助意识、团队合作的意识也大大提高,小组内成员相互合作,各小组间相互促进。并且在期末的维修电工技能等级考试中取得了优异的成绩。

通过一体化教学改革,以企业生产实际应用为载体、参考国家维修电工职业资格标准设计教学项目,以项目教学为主、任务驱动,按照项目实施每一个环节来传授相关的理论基础知识和训练专业操作技能,体现了职业教育的特点。学生是一体化教学工作中的主体,教师在一体化教学过程中起到组织、引导的作用,通过小组对项目的规划与实施,学生的综合职业能力得到提升。

参考文献:

[1]赵志群.职业教育工学结合一体化课程开发指南[M].清华大学出版社,2009年.

[2]赵志群.职业教育与培训学习新概念[M].科学出版社,2003/

04/05/06.

[3]葛东升.浅谈中职数控编程教学的一体化教学改革[J].新课程(中旬),2014(03).

基金项目:宁夏工商职业技术学院院级教改项目《设备控制编程规划与实施》一体化教学改革探索(GS2012-35)。

编程设备 第4篇

关键词:AFC终端设备各模块,Visual Basic,串口通信,检测,动作操作

自动售检票 (AFC) 系统是综合技术性很强的一个专业系统, 涉及到机械、电子、微控、传感、计算机、网络、数据库和系统集成等多个方面, 整个系统是一个复杂的系统。而AFC系统当中因终端设备与乘客直接接触, 因此在地铁各个系统中, 其终端设备的故障率是比较高的。而对终端设备各模块的非典型故障的判断及处理, 对AFC现场维修人员来说是个棘手问题。直接增加维修人员判断设备模块故障的步骤及难度。虽然模块厂方会提供他们的检测程序, 但由于他们的程序功能过于齐全, 部分操作会直接导致设备出现长短款现象。为此笔者通过Visual Basic软件编写各模块的检测操作程序。

1 程序编写

1.1 Visual Basic简介及控件布置

笔者使用的编程软件是微软公司的可视化、面向对象的结构化程序设计语言Visual Basic (下简称VB) 。因为此软件使用简单、容易上手、开发效率高, 尤其是此软件界面设计非常便捷, 编程工作量较小、开发周期短。使用Visual Basic编写与模块的测试程序, 首先使用到的是控件。它是VB的中最主要的组成部分。如果把一个程序比作一个高楼大厦, 那么控件就相当于高楼大厦的一块块砖、一层层楼板。以笔者编写的苏州轨道一号线TVM发卡模块测试软件 (图1) 为例, 就用到了按钮控件、文本框控件、便签控件、组合框控件等。

下面介绍下主要的几个控件:

标签控件 (Label) 主要用于显示字符和各种文字信息。后面将要介绍的文本框控件 (Text Box) 也是用于显示字符和各种文字信息的控件。标签控件和文本框控件的区别在于标签控件只是用于向用户显示文字信息, 用户不能更改所显示的文字;而文本框控件除了能够向用户显示文字信息外, 用户还可以修改文本框中的内容。

本框控件 (Text Box) 除了具有标签控件所具备的显示文字信息的功能外, 还可以在文本框中输入文本, 让用户和软件进行交互。

命令按钮在Visual Basic中也是一种常用的控件。主要作用就是当我们单击某一个命令按钮时, 将会执行相关的命令。

打开VB软件后进入主界面 (图2) , 通过控件的布置、属性窗口中的属性修改 (图3) 及相关的程序编写, 完成后进入串口通行的编程内容。

1.2 串口通信

利用Visual Basic开发串口通信程序主要有两种方法:一是使用MSCOMM (Microsoft Communication Control) 控件, 此控件提供很多方便操作的属性和方法, 利用它们可以很方便地实现你的目的;另外一种途径就是使用Windows API, 微软为开发者提供了很多相关的串行操作的编程接口, 使用这些接口, 可以很完成更为强大的功能。在实践编程中, 使用Visual Basic串口控件实现通信的方法比使用调用API动态链接库的方法更加方便、快捷, 而且用较少的代码可以实现相同的功能, 从而使编程效率大大提高, 也减少了编程不得当而导致的系统不稳定。所以笔者使用了第一种方法。

在MSComm通讯控件中, 我们只要通过对此控件的属性和事件进行相应编程操作, 就可以轻松地实现串口通讯。只要通过对此控件的属性和事件进行相应编程操作, 就可以轻松地实现串口通讯。下面, 笔者就简要地介绍一下MSComm控件的主要属性、事件。

1.2.1 MSComm的主要属性

由于MSComm控件属性很多, 在此笔者仅介绍与实现串口通讯密切相关的核心属性。

1) Commport:设置通讯所占用的串口号。如设成1 (默认值) , 表示对Com1进行操作。2) Setting:对串口通讯的相关参数。包括串口通讯的比特率, 奇偶校验, 数据位长度、停止位等。其默认值是“9600, N, 8, 1”, 表示串口比特率是9600bit/s, 不作奇偶校验, 8位数据位, 1个停止位。3) Portopen:设置串口状态, 值为True时打开串口, 值为False时关闭串口。4) RThreshold:设置在MSComm控件设置Comm Event属性为com Ev Receive并产生On Comm事件之前要接受的字符数。5) Comm Event属性:返回最近的通讯事件或错误。通过对它具体属性值的查询, 我们就可以获得通讯事件和通讯错误的完整信息。当其值是com Ev Receive时表示接收到数据。

1.2.2 MSComm的事件

除了公共事件之外, MSComm只有一个On Comm事件。当Comm Event属性值变化时将发生On Comm事件, 指示发生一个通讯事件或错误。当我们设置Rtheshold属性值为0时, 将使得捕获com Ev Receive事件无效。

1.3 串口实例

在完成了对MSComm控件的简要介绍之后, 笔者就以实际程序为例, 介绍一下串口通讯的具体实现方法。苏州轨道交通一号线TVM纸币模块测试程序 (图4) , 就是利用MSComm控件操作纸币模块进行测试等操作, 实现串口通信。

实现步骤:1) 添加一个Text控件, 更改Name属性, 用来记录纸币模块的返回码 (图5) ;

添加10个Command Button控件, Name属性分别为“打开纸币模块”、“复位”、“查询”等, 分别用来实现需要操作的各命令 (图6) ;

添加一个MSComm控件, 用来建立与串口的连接;编写相应程序。

2) 设置MSComm控件属性。

3) 程序功能。操作员通过点击相关按钮, 程序向纸币模块发送与点击按钮相对应的代码, 使纸币模块进行相关操作。同时纸币模块向上位机返回模块代码, 如代码无误, 则程序中文本框控件中不显示, 若遇到错误代码, 则将其显示在文本框控件中。

2 结论

通过Visual Basic编写相应程序, 便能测试所有AFC终端设备所有模块。不但能显示终端设备的错误代码, 还能对模块进行任何动作的操作。大大提高了AFC技术人员对AFC终端设备各模块的检测与操作。

参考文献

[1]李江全.Visual Basic串口通信与测试应用技术实战详解, 2008.

编程设备 第5篇

一、自动供料器操作方法及内部电气元件介绍

1、将开关打到启动位置, 此时料架上应安装好料条, 当料条达到上限传感器位置时, 电动机正转, 开始放料;当料条长度达到下限传感器时, 系统延时1S停止放料。当料架上转盘中的料条用完时, 系统通过料架上安装的检测传感器, 将检测没有料条的消息通过闪烁灯和声音报警。

2、为了能够让自动供料器设备可靠稳定的工作, 设备所采用的电子器件, 均采用国内外知名电气厂商生产的元件。以下列出几处重要部件:

2.1 可编程控制器采用: OMRON (欧姆龙) ,

2.2CPM1A-10CPU的I/O接口规格:

输入阻抗:IN00000~00002为2KΩ, 其它为4.7 KΩ。

输入电压:DC24V+10%、-15%。

ON电压:最小DC14.4V。

OFF电压:最大DC5.0V。

2.3 继电器输出型:最大开关能力AC250V/2A DC24V/2A公共端4A。

最小开关能力DC5V、10m A。

继电器寿命:电气寿命:阻性负载30 万次。

感性负载10万次。

机械寿命:2000 万次。

ON响应时间:15m S以下。

OFF响应时间:15 m S以下。

继电器采用:OMRON (欧姆龙) , MY2N, 24VDC。

有两对常开, 常闭触点。5A, 250V。

传感器采用:KEYENCE (基恩士) , FS-V21P数字光纤传感器。

检测传感器采用:OMRON (欧姆龙) , E3C-DS10。

2.4 断路器采用:FUJI , EG32F。

单相电动机采用:51K60GU-CF。

电机主要技术参数:60W/220V, 50Hz, 3.5u F , 0.52A, 1300r/min。

自动供料器用到了电机正反转, 在改变旋转方向时改变了电动机三根线其中的红, 白两根线。

二、主电路部分介绍

为了让可编程控制器工作更加可靠稳定, 本系统采用开关电源提供电源, 保证了电源的可靠稳定性, 避免因电压问题造成不必要的误操作或损失。 在主回路控制中可编程控制器上端的开关电源可用变压器代替, 但考虑到开关电源良好的特性最终还是选用了开关电源。

供料器在可编程控制器内部程序和电气电路中, 都设计了互锁。本系统假设KA1 继电器线圈吸合后为电机正转方向, 即在电路中的白和黑两线。同理, 当KA2继电器线圈吸合后为电机反转方向。

三、可编程控制器部分介绍

3.1 输入部分

可编程控制器输入点0.00 (启动/停止) 应该安装旋转开关, 因为系统只会在0.00 (启动/停止) 有输入信号的时候工作。输入点0.03 (手动退料) 和0.04 (复位) 应安装按钮。手动退料是电机反转且控制方式为点动。

3.2 输出部分

本系统所选用的继电器是线圈24VDC , 有两对常开, 常闭触点 (5A, 250V) 满足了系统对点数需要。在检测到无料时, 输出点10.03, 10.04 同时报警, 采用的方式分别是:红灯闪烁 (1s) 报警, 蜂鸣器声音报警。

本系统所采用的可编程控制器CPM1A-10CPU, 输入点数为6 点, 因为输入点数的限制, 故内部程序中没有设置“非常停止”, 为了保证系统及设备的安全性, 在主回路中添加了非常停止。

程序内设置了四位密码 (1012) , 主要是为了防止他人非法更改程序, 影响系统的正常使用, 甚至会造成设备故障。

该自动供料器设计了手动退料功能, 这主要为了在生产加工后, 材料没有用完, 回收料条用。手动退料采用点动控制方式。

四、PLC在安装和维护时应注意的问题

4.1 PLC的安装

PLC适用于大多数工业现场, 但它对使用场合、环境温度等还是有一定要求。控制PLC的工作环境, 可以有效地提高它的工作效率和寿命。

4.2 电源接线

PLC供电电源为50Hz、220V±10%的交流电。

FX系列可编程控制器有直流24V输出接线端。该接线端可为输入传感 (如光电开关或接近开关) 提供直流24V电源。

4.3 接地

良好的接地是保证PLC可靠工作的重要条件, 可以避免偶然发生的电压冲击危害。接地线与机器的接地端相接, 基本单元接地。如果要用扩展单元, 其接地点应与基本单元的接地点接在一起。为了抑制加在电源及输入端、输出端的干扰, 应给可编程控制器接上专用地线, 接地点应与动力设备 (如电机) 的接地点分开。若达不到这种要求, 也必须做到与其他设备公共接地, 禁止与其他设备串联接地。接地点应尽可能靠近PLC。

4.4 直流24V接线端

使用无源触点的输入器件时, PLC内部24V电源通过输入器件向输入端提供每点7m A的电流。

4.5 PLC应用及使用中应注意的问题:多年来, 可编程控制器 (以下简称PLC) 从其产生到现在, 实现了接线逻辑到存储逻辑的飞跃;其功能从弱到强, 实现了逻辑控制到数字控制的进步;其应用领域从小到大, 实现了单体设备简单控制到胜任运动控制、过程控制及集散控制等各种任务的跨越。

4.5.1 主要抗干扰措施:

(1) 电源的合理处理, 抑制电网引入的干扰

对于电源引入的电网干扰可以安装一台带屏蔽层的变比为1:1 的隔离变压器, 以减少设备与地之间的干扰, 还可以在电源输入端串接LC滤波电路。如图1 所示

(1) 安装与布线

动力线、控制线以及PLC的电源线和I/O线应分别配线, 隔离变压器与PLC和I/O之间应采用双胶线连接。将PLC的IO线和大功率线分开走线, 如必须在同一线槽内, 分开捆扎交流线、直流线, 若条件允许, 分槽走线最好, 这不仅能使其有尽可能大的空间距离, 并能将干扰降到最低限度。

(3) I/O端的输入接线

输入接线一般不要太长。但如果环境干扰较小, 电压降不大时, 输入接线可适当长些。

输入/输出线不能用同一根电缆, 输入/输出线要分开。

尽可能采用常开触点形式连接到输入端, 使编制的梯形图与继电器原理图一致, 便于阅读。

(4) 正确选择接地点, 完善接地系统

良好的接地是保证PLC可靠工作的重要条件, 可以避免偶然发生的电压冲击危害。接地的目的通常有两个, 其一为了安全, 其二是为了抑制干扰。完善的接地系统是PLC控制系统抗电磁干扰的重要措施之一。

安全地或电源接地

系统接地

信号与屏蔽接地

为防止前方主加工设备出现错位等现象的发生, 应适当调好供料检测传感器的位置, 尽量保证料条的松紧。

五、结束语

21 世纪, PLC会有更大的发展, 产品的品种会更丰富、规格更齐全, 通过完美的人机界面、完备的通信设备会更好地适应各种工业控制场合的需求, PLC作为自动化控制网络和国际通用网络的重要组成部分, 将在工业控制领域发挥越来越大的作用。

参考文献

[1]周美兰.PLC电气控制与组态设计.北京:科学出版社, 2003

[2]金续曾.电机电气控制线路图册.中国水利水电出版社, 1999

编程设备 第6篇

关键词:设备控制编程规划与实施,理实一体项目教学,学习主动性

《设备控制编程规划与实施》是基于工作过程的学习领域课程, 使用PLC控制器、交流接触器、信号灯、各种传感器、电磁阀、磁性开关、气缸、按钮等器件, 按照控制任务要求, 设计组装控制系统, 完成一定的工作任务。根据控制任务要求, 进行工作过程分析;在技术、经济评价可行的前提下进行设计与规划、程序编制;组装、调试机械与电气部件, 按照要求完成控制任务。设备控制系统的安装与调试过程模拟企业班组的形式, 各司其职协调工作。工艺编程人员根据任务单进行可行性分析论证后确定组装方案:制订安装流程编写安装流程卡片、编制程序操作工准备必要的安装工具进行控制系统的安装及程序调试质检员根据安装图纸与生产任务书进行检验。各环节人员自觉遵循6S管理规范并及时做好工作记录, 强调安全生产和环保意识。该课程在我院已进行了理论实践一体化教学改革探索, 结合本人的教学实践, 从调动学生的学习主动性方面, 进行了探索。

1 做好说课, 让学生对课程有全面认识

刚开始学生对本课程不了解, 容易理解为计算机编程课程, 产生畏难情绪。老师一定要在情景设计、项目选取上下功夫, 做好说课, 给学生以信心, 激发学生的学习兴趣。设备控制的核心是可编程控制器, 目前已广泛地应用在各个领域, 对各个行业的技术改造和产品的更新换代起了重要的推动作用。通过列举可编程序控制器在都市的霓虹灯、交通灯、汽车自动生产线、数控机床等工业、农业、交通运输业及日常生活中广泛应用的实例, 使学生对这门课程有一个初步的了解。在设计项目时, 融合了“中级维修电工” (PLC部分) 的国家职业资格要求, 和学生学期末的维修电工中级职业资格考试联系起来, 引起学生对本课程的足够重视。学习领域课程的考核方法与普通课程不同, 重视过程性考核, 学生在每一个项目实施中的表现都会影响到课程的最终成绩评定, 从而调动学生学习全过程的主动性。

2 采用项目教学法, 以学生为中心

项目教学法是以能力为本位、以职业实践为主线、以项目课程为主体的模块化教育, 是通过实施一个完整的项目而进行的教学活动。其目的是在教学中把理论和实践教学有机的结合起来, 充分发掘学生的创造潜能, 提高学生解决实际问题的综合能力, “学习的内容是工作, 通过工作实现学习”。让学生在“工作”中掌握知识、技能, 培养学生工作思维、职业素养, 提升学生职业综合能力, 满足学生未来工作和发展需要。

学生接到工作任务后, 由组长进行分工, 要求每个学生的角色在不同项目中进行轮换。在小组中有负责设计的、安装的、调试的、检验的, 每个小组将分工报送老师, 老师负责项目实施过程中的监督管理。实际动手做是职业院校学生乐于接受的学习方式, 边学边做, 可以加深对项目涉及的理论知识的理解, 灵活应用、学以致用, 培养学生应用理论知识的能力及处理和解决实际问题的能力。设计出与实际应用相关联的项目, 使学生真切感受到所学的知识应用于实践的效果, 增强学有所用的自信心, 主动学习的积极性更高是项目教学的关键环节。项目实施过程中, 教师应严格监督管理, 同时注意学生的个体差异, 出现问题时引导学生进行小组内、小组间的相互交流、讨论, 共同提高, 使每个学生的能力都得到最大限度的提升。

PLC控制电机正反转项目教学实施步骤:教师先讲解PLC结构、工作过程, 对照实物介绍输入、输出继电器端子图, 如:PLC中软继电器和传统继电器的相同与不同之处, PLC系统I/O接线图设计方法等理论基础知识;引导学生复习在电气控制中学过的双重联锁电机正反转的控制电路图, 把控制电路图中的元器件触点、线圈替换成它对应的PLC软元件的触点、线圈, 通过直接翻译法的方法, 把传统的继电器控制电路翻译成PLC的梯形图, 理解PLC控制系统输入电路中的按钮、热继电器为什么一般要接常开触点;接着由学生分成若干个工作小组, 分工完成I/O接线图设计、程序编制、系统安装接线、系统调试;完成后各小组整理项目技术文件, 并完成项目技术总结报告, 进行交流展示, 教师点评。在项目教学过程中, 将班里的学生根据各自特点, 强弱搭配分成几个项目团队, 要求每个项目团队给自己的团队起一个响亮有创意的名字, 就地取材制作自己的队签。学生们觉得很新鲜, 积极响应, 想出了许多新颖的队名, 例如:红细胞队 (因为队签是用红色电线做的) 、铭峰实业有限公司 (模拟公司的结构设置) 、蓝领E族 (学生的工装是蓝色的) 等等, 每个小组用纸板、泡沫、电线等材料都制作出了别致的队签。大家在团队中扮演不同的角色, 分工协作, 每个人都积极参与到完成工作任务中去, 效果很好。通过项目教学把原本学生不热心、被动学习的课堂变成了学生自己学习工作的车间, 把原本一章一节的理论变得简单而又实用;学生不但能应用所学的基础理论知识设计制作出企业社会中常见的非常实用的设备和系统, 又能用小组制作的PPT, 把自己的设备和系统进行展示和交流;达到了既能实干又善于宣传的目的, 实现了从一个职业院校学生向企业准工人的转变, 为学生顺利进入企业, 快速适应企业生产环境奠定了基础。一体化课程, 学生干什么用什么老师就教什么, 打破了传统的灌输式教学, 有效地调动了学生学习专业技术的热情。一体化项目教学课堂, 尽量模拟企业真实的生产环境, 设立了材料区、工作区、工具库、检验区、成品区, 带给学生的是与其他课程完全不同的感觉, 它强调的是课堂的每一个环节与企业实景耦合, 学生在仿真的环境中学习与工作, 在工作过程中按照企业相关规范准执行, 特别强调了现场“6S”管理, 克服懒散和随意乱放工具、元器件等不良习惯, 养成了良好的职业习惯。

通过采用项目教学, 每处理一个问题、每一次调试成功, 都会让学生们有一种成就感。当学生看到自己设计安装的电机转动起来时, 有的甚至高兴的手舞足蹈, 喜悦之情溢于言表。体会到了成功的喜悦, 学生们学习的劲头更足了, 主动性更强了。学生由原来的不愿学、被动学变成了主动参与任务实施, 与未进行项目教学的班相比学生精神面貌、技能水平有明显提高, 期末维修电工中级职业资格证考试过关率也大大提高了。

3 让学生自己动手制作PPT, 重视小组间交流展示

学生“学习工作”、完成项目技术文件, 不仅可以通过老师传授, 还可以通过老师下达的任务书, 从参考资料、网络等各方面获取资料, 充分发挥学生的主动性。我在项目实施过程中, 拍摄了各个小组讨论、安装、调试的精彩画面, 提供给各个小组, 让他们在任务完成后, 制作自己小组的展示PPT。提高了学生综合应用多媒体技术能力, 锻炼了组织及语言表达能力。在展示环节, 各小组介绍自己的设计方案、各小组讨论提问, 开始有些学生会胆怯, 介绍时声音很小, 经过老师和小组同伴的鼓励, 慢慢进步了。有时小组间会争论的非常激烈, 大家勇于发表自己的见解, 而不是人云亦云, 通过争论不但锻炼了学生的思维交流表达能力还会对所学的理论知识印象更加深刻。在完成项目任务的同时, 学生们不但熟悉了系统设计调试的全过程, 学会了应用理论基础知识解决实际问题的方法, 同时增强了团结协作精神、锻炼了敏捷思维能力、表达能力。在享受项目成功感的同时培养了自信心、增强了进一步学习的主动性。

因此在学习领域课程教学中, 教师要深入企业调研, 与企业合作设计贴近生产实际的教学项目, 学生对所学知识就容易理解, 觉得可以学以致用, “学习工作”的兴趣就越浓, 从而学习的自觉性和主动性也跟着提高。在项目实施过程中以学生为中心, 教师要善于引导学生主动思维、分析问题、解决问题。

这样不但锻炼了学生创造性思维, 同时养成了主动思考、解决问题的良好习惯, 综合职业能力得到提高, 为将来就业打下良好的基础。

参考文献

[1]陈丽主编.PLC控制系统编程与实现[M].中国铁道出版社.

[2]徐国林主编.电器控制与PLC技术[M].机械工业出版社.

编程型游戏编程框架的设计方法 第7篇

关键词:编程型游戏,编程框架,游戏编程语言,编程接口

0 引言

编程型游戏 (Programming Game) 通常以“角色竞技仿真引擎”的形式出现。典型的编程型游戏有Robocode (以坦克战斗为题材) 、AI-RCJ (以足球比赛为题材) 、Terrarium (以生物进化竞争为题材) 等。游戏者通过编写程序控制属于自己的游戏角色, 把它放到竞技场上同其它游戏角色进行竞争。在游戏过程中, 游戏角色的行为不是由键盘、鼠标或操纵杆来控制, 而是由游戏者为它设计的角色控制程序自动指挥。因此, 为游戏系统设计一个优秀的编程框架是开发编程型游戏系统的一项重要任务。

1 游戏编程语言的范型和设计 (选用) 原则

1.1 游戏编程语言的范型

每一种游戏编程语言的范型, 决定了该语言的特点和适用范围。如何确定游戏编程语言的范型呢?或许可以从现有的程序设计语言得到启发。通常, 可以将现有的程序设计语言分成3种不同的范型, 包括命令式语言、函数式语言和逻辑式语言。

(1) 命令式语言。命令式语言认为一个较大问题是通过若干较小问题的顺次解决而解决的。这类语言把解决各个较小问题的动作和所参加的成员抽象为语句和数据, 换言之, 用这类语言编写的程序是通过为“对显式数据的操作”确定直接语句来进行工作的。命令式语言的核心特性是变量、赋值语句和重复迭代形式 (循环结构) 。命令式语言的优点是执行效率高, 其缺点是编程者必须关注诸如对变量的命名、赋值操作和对基本动作的重复等底层细节, 这种对底层细节的过分关注往往不适用于复杂问题求解。命令式语言种类繁多, 主要有FORTRAN、Basic、Pascal、C、C++、Java、C#等语言。

(2) 函数式语言。函数式语言认为计算机所解决的问题是从一个域到另一个域的函数映射, 这些语言把要解决的问题划分成若干相关成员的集合和集合间的函数关系。与命令式语言不同的是, 函数式语言并不使用变量和赋值语句, 也没有循环结构, 重复性工作必须由递归而不是循环来完成。用函数式语言进行程序设计就是从系统的基本函数出发, 用复合、递归等方法构造新函数。相对而言, 函数式语言比命令式语言更高级, 其优点是克服了命令式语言存在的程序难以 (甚至无法) 实现许多算法中的并行计算成分, 语言结构复杂、表达能力弱、缺乏数学性质等缺陷, 其主要缺点是执行效率较低。函数式语言有Hask Kell、LISP和Scheme等几种, 其中以LISP语言最具代表性和影响力, 在人工智能领域有广泛应用。

(3) 逻辑式语言。逻辑式语言支持“说明性程序设计风格”根据问题约束的高层描述来构建程序。逻辑式语言把要解决的问题描述为一系列逻辑公式 (例如:事实和规则) 的集合, 一旦问题描述好, 就可向系统提出问题, 要求系统根据已建立的知识库搜索答案。用命令式、函数式语言进行程序设计时, 编程者必须告诉计算机如何进行计算;用逻辑式语言进行程序设计时, 编程者则不必明确指出如何计算出一个结果, 只须对结果的形式加以描述。可见, 逻辑式语言的程序设计要比命令式、函数式语言更容易, 但其执行效率也相对较低。迄今为止, 逻辑式语言种类不多, 主要以Prolog语言为代表。

1.2 游戏编程语言的设计 (选用) 原则

设计或选用游戏编程语言时应遵循以下几个原则: (1) “拿来主义”原则。如果有适合的语言, 则尽量选用现有的语言, 避免重复劳动; (2) “减少细节”原则。根据学科知识内容和游戏题材, 确定语言的范型和语言成分, 使游戏者把主要精力用于问题求解, 尽量少花费时间在编程细节上; (3) “易学性”原则。针对游戏者思维的能力和特点, 设计 (选用) 让游戏者易于学习掌握的语言; (4) “可读性”原则。充分考虑游戏者阅读程序的难易程度; (5) “可写性”原则。充分考虑游戏者编写程序的难易程度; (6) “高效性”原则。尽量选用执行效率比较高的语言。

2 编程接口的设计原则、设计方法

2.1 编程接口的设计原则

(1) 简单性。API的设计应当是简单的。API是供游戏玩家使用的, 要让游戏被编程水平各异的游戏玩家广泛接受, API就必须尽可能简单, 复杂难用的API会挫伤游戏玩家的信心和积极性。

(2) 高效性。API应该在坚持简单性的前提下, 兼顾高效性。当某些组合操作应用非常频繁时, API的设计者应当为这样的组合操作调用设计一个只需一次交互的单一入口调用, 以提升游戏角色代码的执行效率, 在玩家较多的情况下有效减轻服务器负载。

(3) 完备性。API的完备性指整个API要覆盖所有需要对游戏玩家公开的功能。只要设计阶段考虑得完备, 就能达到完备性的要求, 万一发现不完备的情况, 修正起来也较为容易。

2.2 编程接口的设计方法

运用面向对象的思想与方法, 将游戏系统的API框架分成主体类和辅助类。在编程型游戏中, 因为玩家编程控制的对象是游戏角色, 所以API框架的主体类是游戏角色类。可以设计一个类 (例如Robot) , 根据游戏角色的仿真模型, 按照“属性方法事件 (PropertyMethodEvent, 或PME) ”的方式, 将游戏角色的相关操作封装起来。其中, 游戏角色的状态可用属性描述, 游戏角色的操作可用方法描述, 游戏角色获取内、外界的消息可用事件描述。辅助类是用于协助主体类更有效率地运作, 或提供额外功能的类。例如, 事件队列类、数学运算类、规则类、神经网络支持类等。

3 仿真模型的设计 (以坦克战斗为题材举例)

设计游戏的仿真模型是设计良好编程接口的基础, 构建易于理解的仿真模型有助于实现API的简单性。编程型游戏的主要仿真模型有场景模型、游戏角色的感知模型和动作模型。

3.1 场景模型

场景模型包括单位长度、竞技场空间、地面、坐标系、方向系等。

(1) 单位长度指游戏实体移动的最小距离, 通常为1个像素点。

(2) 竞技场空间、竞技场地面及坐标系。竞技场空间规定了游戏实体的最大活动范围。二维游戏的竞技场空间通常是一个CK的二维空间 (竞技地面) , C为竞技场长度, K为竞技场宽度, 用单位长度度量, 其坐标系如图1所示, P (X, Y) 代表竞技场空间中一点P的坐标。

三维游戏的竞技场空间通常是一个CKH的三维空间, 其中C为竞技场长度, K为竞技场宽度, H为竞技场高度, 用单位长度度量, 其坐标系如图2所示, P (X, Y, Z) 代表竞技场空间中一点P的坐标。三维游戏的竞技场地面是一个CK矩形平面。三维坐标系有左手坐标系和右手坐标系两种, 图2是一个右手坐标系。选择哪一种坐标系主要与编写游戏系统所使用的三维图形API有关。目前, 常用的三维图形API有Open GL和Direct3D, 其中Direct3D采用左手坐标系, Open GL采用右手坐标系。

(3) 绝对方向系。绝对方向系用来描述游戏场景中的方向, 通常用一个向量表示某个方向。二维游戏中各方向都是以竞技场地面为参照物的绝对角度, 可设沿X轴方向为0度角, 从X轴逆时钟向Y轴旋转角度增大, 沿Y轴方向为90度角, 绝对方向系如图3所示。

三维游戏的绝对方向系中的方向可用两个分量描述。设三维空间中的一个方向A, 用A (α, β) 表示, 其中α表示该方向所在XOY平面 (竞技场地面) 上的投影所指方向的角度, β表示该角与XOY平面的夹角 (0度β90度) , 如图4所示。

(4) 相对方向。相对方向是指以游戏角色自身所向的角度为参照物的角度差, 随着游戏角色移动而改变, 不再以竞技场地面为参照物。

3.2 游戏角色的感知模型

游戏系统必须为游戏角色提供一个多方位、多层次的感知模型。游戏角色通常能够感知3类信息自身的状态信息、对方的状态信息和通知消息。

(1) 自身状态。游戏角色的自身状态指游戏角色当前的物理状态。例如, 某时刻游戏角色的坐标、方向、能量、速度和位置等信息。

(2) 对方状态。对方状态指竞技场中其它游戏角色当前的物理状态。在发现其它游戏角色时, 游戏角色将得到关于对方游戏角色的状态信息。例如, 对方游戏角色的距离、方向、能量等信息。

(3) 通知消息。通知消息是指其它游戏角色发送的消息。当一个游戏角色要向其它游戏角色发送消息时, 采用“点对点”的方式将消息发送给对方, 对方在消息发出后的下一“帧”中收到此通知消息。通知消息的主要结构如表1所示。

3.3 游戏角色动作模型

动作模型描述游戏角色能够执行的所有操作。例如, 使游戏角色前进或后退一段距离、转动一个角度等。

4 角色控制程序的结构

一个完整的角色控制程序由1个时间片任务处理函数和若干个事件处理函数构成。假设采用C#语言编写角色控制程序, 其典型的代码如下:

所有的角色控制程序都必须是Robot的子类, Robot是一个抽象类, 封装了所有的事件处理函数的原型, 角色控制程序必须实现这些原型。

采用.NET的“委托”技术实现“事件”, 对每种事件处理函数定义一个“委托类型”, 例如:

5 结束语

为游戏系统设计一个优秀的编程框架是开发编程型游戏系统的一项重要任务。本文阐述了编程型游戏编程框架的设计方法, 包括游戏编程语言的范型和设计 (选用) 原则、编程接口的设计原则和设计方法、仿真模型的设计、角色控制程序的结构。所述方法对同类软件的研发具有一定借鉴意义。

参考文献

[1]江耿豪, 郑炜冬.编程型游戏的设计与实现[J].现代计算机 (专业版) , 2008 (3) .

[2] (美) ROBERT W.SEBESTA.程序设计语言概念[M].林琪, 侯妍, 译.北京:中国电力出版社, 2006.

[3]陈文.高手边玩边学的游戏——Robocode[J].电脑技术-HELLO-IT, 2004 (11) .

[4]IIVERNYLIFE.打造自己的机器人——Robocode[J].电脑爱好者, 2003 (5) .

编程设备 第8篇

目前, 我国软件设计人才在数量上供不应求, 但很大一部分毕业生在编程能力上有一定的缺陷。 如何在教学中提高计算机专业学生的编程能力, 探索出有效提高编程能力培养的方法, 一直以来都是倍受关注的问题。

科学的教学方法能够激发学生的认知潜能, 提高学生的学习效率, 但前提这种教学方法是符合学生的认知规律。 美国心理学家Adelson和Soloway通过对编程专家和新手编程行为的对比研究, 提出著名的编程过程认知模型[1]。 这一模型的提出, 为有效培养学生的编程能力提供了心理学的支持。旨在介绍该认知模型, 并与教学实际相结合提出适宜的教学方法。

2 编程过程认知模型

2.1 基本特征

编程过程认知模型认为编程过程是一个问题解决的过程, 具有以下3 个基本特征。 (1) 目标导向性。 编程行为很显然有一个目标, 就是实现所要求的功能。 (2) 子目标分解。 如果该目标很容易实现, 例如在屏幕上输出一行文字, 这个也是问题的解决, 但这是对一般意义的解决。 问题解决的要点是编程专家需要将目标分成一些子任务, 如设计不同的功能模块。 (3) 算子应用。 算子是指将某一问题状态转化为另一问题状态的动作。 整个问题的解就是这些已知算子的一个序列[2]。 如将A、 B两瓶中的溶液互换问题, 问题的轨迹图如图1 所示。

2.2 模型成分及运作机制

Adelson和Soloway的编程过程认知模型如图2 所示。 该认知模型除了有上文中提到的目标和算子还包括知识基础和粗略心理模型。 其中知识基础是指, 为了能够完成具体程序的编写所需要的陈述性知识、 程序性知识和策略性知识; 粗略心理模型是指, 在程序设计的不同阶段心理模型的抽象水平不同, 当前阶段较下一阶段而言抽象水平高, 即为粗略心理模型。 可见, 粗略心里模型是动态的, 随着编程的进行而更加具体化。

编程过程以粗略心理模型向最终详细心理模型转化为最终目标。 粗略心理模型在编程过程中动态发展, 以所具备的知识基础为基础, 在目标和算子的控制下不断细化, 最终详细化为与可执行程序一致的最终详细心理模型。 在最终详细心理模型的指导下完成具体的程序。

目标和算子控制着粗略心里模型细化的方向。 粗略心理模型不断细化过程其实是目标的在编程过程中在算子的作用下不断分解过程。 无论是粗略心理模型还是最终详细心理模型和目标、 算子与知识基础之间相互作用。 在构建最初的粗略心理模型时, 编程者需调用自己已有知识储备 (即知识基础) , 若缺乏相应知识或具有错误知识, 则无法建构最初心理模型或建构错误的模型, 而粗略心理模型的建构反过来又会激活相关领域知识; 显然知识基础也决定着目标设定与算子选择, 缺乏相应知识或具有错误知识, 则会导致设定错误目标及选择错误算子, 而后者对前者也具有制约作用, 决定着激活和调用哪些知识。

3 借鉴意义

编程者以所具备知识储备为基础, 构建粗略心理模型, 利用算子, 逐个实现子目标, 将粗略心理模型不断细化为详细心里模型, 最终形成与可执行程序一致的详细心理模型, 指导程序编写。 通过上文对编程过程认知模型运作机制的分析可知, 知识基础在编程过程中起着决定性的作用。 在教学过程中提高学生陈述性知识、 程序性知识和策略性知识共同构成编程者的知识基础的掌握程度, 可以有效提升学生的编程能力。

3.1 基础知识成分识别

使用基础知识成分识别并确保学生能全部掌握这些成分, 将会强化编程者的知识基础。 软件设计学习之初, 学生要大量学习陈述性知识, 如程序语言的约定, 数据的定义规则等。教师在教学过程中, 首先分析要教授内容的要素即基础知识成分识别, 这种教学方法被称作是成分分析法[3]。 掌握学习是成分分析法行之有效核心环节, 在这一环节的根本任务是跟踪学生在每个成分上的绩效, 以此确保所有成分都被掌握。这一过程也可以理解为各类算子的储备阶段, 但这些算子仍然处于陈述性状态, 在算子的应用上还很迟钝。

3.2 有目的的练习

有研究指出, 只有投入大量的时间练习才能获得某一领域的专业技能, 但并非所有练习都能使得能力提升。 我们也注意到很多学生花费大量时间编写程序, 但却没有取得很大的进步。 问题的关键在于他们的练习是否是有目的练习。 有目的练习和普通练习的区别在于以下两点: (1) 学习的动力。 在有目的的练习中, 学习者不是机械地操作, 他们有学习的动力。 针对这一点, 教师在安排练习的同时要从情感上激发学生练习的积极性, 适时地鼓励也可增加学生学习的动力。 (2) 反馈。 学生能够得到关于自身操作的反馈, 他们可以通过比较自己的操作和正确的操作不同, 发现哪些做对了, 哪些有差距, 并能消除差距。 这就要求教师在练习的设计上要把握题目的数量和难度。

在有目的练习过程中, 学生最初的错误理解会被逐渐发现和改正而且解决问题所需要的各要素之间的联系被强化。在有目的练习之后, 陈述性知识转化为模式驱动的程序性知识。 学生编程能力的变化就是从外显的运用陈述性知识转变为直接运用程序性知识。

3.3 策略学习

在前面的陈述性知识和程序性知识的学习, 其实是很多小问题的反复出现, 能够快速得到问题的解并可以验证问题的解是否正确。 然而实际的编程问题往往是一个庞大的复杂问题, 短时间内无法解决更无法评估解决的方法是否正确, 但它们解决过程是类似的。 也就是说, 在解决实际编程问题与解决简单问题相似的, 编程者都是从问题的陈述开始着手, 到子问题再到更下一层的问题, 直到问题的解决, 这一策略也叫自上而下。 这一策略应用的困难在于需要设立目标和子目标并记住它们, 对于复杂问题, 这无疑给工作记忆带来了沉重的负担, 即在粗略心理模型构建和细化的过程中很容易失败, 无法到达最终详细心里模型, 而不能完成编程任务。因此, 如何细化粗略心里模型, 确定子目标的粒度以平衡记忆负荷是策略性知识学习的关键。 在策略学习中, 可以模仿问题解决的实例, 或是通过直接的指导而习得。 这类知识的教学教师要安排合理的课程设计任务, 以提高学生的策略知识的掌握程度。

4 结语

基于编程过程认知模型提出了提高学生编程能力的教学方法。 在分析中, 重点叙述了知识基础的重要性, 针对3 个层次的知识与教学实际相结合给出了基础知识成分识别、 有目的的练习、 策略学习具体的实施方法。 但是, 在学生编程能力的培养中, 知识基础的提高是重点也是难点, 因此, 需要更多的学者去关注并研究。

参考文献

[1]郝宁, 吴庆麟.埃德尔森的编程过程认知模型简介[J].开放教育研究, 2004, 04:46-48.

[2]约翰, 安德森, 著.认知心理学及其启示[M].人民邮电出版社, 2012, 227-257.

编程设备 第9篇

关键词:九宫格,枚举法,C#语言,趣味编程

1 概述

九宫格游戏19世纪起源于法国,虽然有别于现代九宫格,但要求行、列、对角线数的和相等。在销声匿迹了近一个世纪后,1984年九宫格被引入了日本,之后被命名为Sudoku,意思是“独数”[1],并一直沿用至今。九宫格还有许多变种,例如3x3、4x4、6x6宫格等等。现在许多的报刊杂志常会刊登一些九宫格的小游戏,例如英国的免费日报Metro(赶早的话在任意车站都可以拿到)就刊登有九宫格游戏(分为很难、难、易三种),而且读者若将答案寄往指定的地址还有可能获取100英镑的抽奖呢。为了打发时间,笔者还见过有人带着名为Soduku题库的书在火车上研究呢。九宫格在2005年左右风靡全球,世界上每年也举办九宫格世锦赛(World Sudoku Championship)[2],上一届(2009年4月)在斯洛伐克的日利纳举行,今年将是第五届了。有意思的是九宫格竟然如此让人着迷以至于出现了一些令人啼笑皆非的事情。在2004年12月12日英国泰晤士报刊登九宫格题的第二天刊登了一则投诉,说由于九宫格导致他地铁坐过了站。他在投诉中写道:“Sir, Su Doku puzzles (T2 and leading article, November 12) should carry a warning.It's not even day one and already I've missed my stop on the Tube[3]”。在2008年6月悉尼法院的一个花了100万澳元调查取证的吸毒审判竟由于5个陪审员中的4个被发现在庭审听证时玩九宫格而夭折[4]。

网络为九宫格的发展提供够了一个很好的平台,随便搜索关键字“Sudoku”或者“Sudoku forum”便可以找出很多技术交流的网站来,例如:

解九宫格的方法很多,还有人编写了口诀“一居上行正中央,依次斜填切莫忘;上出框时向下放,右出框时向左放;排重便在下格填,右上排重一个样”[5],这对简单问题可行,但对稍难一点的恐怕就不是几句口诀能解决得了的了。本文提供了通过枚举法解九宫格的思路和C#实现方法,希望起到抛砖引玉的效果。

2 编程的思路及算法

2.1 建立对象类

九宫格的网格有个共性,就是每个网格数字的左右可能值为1到9。所以可以创建一个网格单元对象(cell类),便于编程。这个类需要有以下功能:

1) 设置已知网格的初始值;对待求网格,其初始值为1到9;

2) 获知当前的剩余可能数字集,可以用自由度(dof)来表示;那么一个正确的结果必须是每个网格单元的dof为1;否则,dof将在运算过程中随时更新;

该对象的部分代码如下:

2.2 解题思路

一旦网格类已经建立,自然地,九宫格就是一个网格单元类的二维数组,命名为g[9, 9]。九宫格要求每一行、列以及3x3的子网格内不能有重复数字,因此解题的总体思路为:

根据已知cell的值对待求cell中的可能数字集依次按行、列、三宫格进行消元;

更新所有待求cell的dof并累加为总的dof,用DOF表示;

如果DOF=81,解题完毕;

如果DOF>81,说明还有某些cell的值未确定,必须进一步进行后面的枚举计算。

部分代码如下:

2.3 枚举算法

在进行枚举算法时首先选取dof最小(dof>1)的cell进行枚举,对于每一次枚举,都按前面给出的思路进行。如果不能达到DOF=81,那么就通过进一步的嵌套递归调用进行枚举,直到DOF=81为止。但这里要注意的是由于这里采用的是枚举法,枚举的值未必就是正确的,所以要增加一个结果的检查判断。检查的方法是:

1) 每个行、列没有重复值;

2) 行、列和三宫格的累加值均为45;

如果不满足上述要求,那么这次枚举值是错误的,要换下一个枚举值。

递归调用的部分代码如下:

3 解题举例

按以上思路编程在Microsoft Visual Studio 2005上编译通过后笔者还没发现有解决不了的九宫格题。简单的就不说了,笔者对所有网络上被认为最难的所谓“Extreme”级的九宫格难题进行了试算,发现都可以在较短的时间内解决,这里仅举两例予以说明。这两个难题如图1a和1b所示,解题结果如图2a和2b所示,虽然运算过程包含了数百次的嵌套递归调用,但在笔者的笔记本(ASUS-M9V)上所花的解题时间不过两三秒而已。

4 结论与探讨

本文简要回顾了九宫格的起源、发展和现状,然后详细介绍了如何用枚举法进行解题的C#实现,最后举了两个九宫格难题的例子。从解题效率上说,该方法不是最优化的,比如计算效率受枚举值排序的影响,例如在可能值1, 2, 3, 4中,假定4为正确值,那么前三次枚举都是徒劳,浪费了处理时间。尽管如此,九宫格解题本身就不是很复杂,出结果一般是眨眼间的事儿,在电脑代替人脑从事复杂计算的年代,这点时间耗费实在算不了什么。当然,从算法优化研究这个角度而言,本程序还有待于进一步的改进。九宫格作为一种趣味游戏,笔者的建议是能不用电脑就尽量不用电脑,这样解出来更有乐趣和成就感,不是吗?

参考文献

[1]Brian Hayes, "Unwed Numbers", American Scientist, 94 (2006) :12-15.

[2]http://www.wsc2006.com/eng/index.php.

[3]http://www.timesonline.co.uk/tol/comment/letters/article390381.ece.

[4]http://www.smh.com.au/news/national/jurors-get-1-million-trial-aborted/2008/06/10/1212863636766.html.

编程设备范文

编程设备范文(精选9篇)编程设备 第1篇1 系统流程设计系统依照医疗设备维修的周期进行设计。当医疗设备出现故障, 使用科室登录系统申请...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部