当前位置:首页 » 网页前端 » 如何写昆态传感器脚本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

如何写昆态传感器脚本

发布时间: 2022-09-23 02:19:54

‘壹’ 如何用pic单片机写DS18B20数字温度传感器的程序

#include<pic.h>//单总线的运用.DS18B20数字温度传感器(在I/O口上进行总线操作时,读取数据要用或运算,发送数据要用与运算)
#define uchar unsigned char//宏定义
#define uint unsigned int
///这几个宏定义为了DQ 是要读和写程序所以直接宏定义可以简化设置输入输出状态
#define DQ RC1 //宏定义DQ等同于RC1这个端口
#define DQ_HIGH() TRISC1=1 //宏定义DQ高电平时设为输入状态(即DQ_HIGH()字符串等同于TRISC1=1)
#define DQ_LOW() TRISC1=0;DQ=0 //宏定义DQ低电平时设为输出状态且RC1端口拉低电平(即DQ_LOW()字符串等同于TRISC1=0且RC1=0)
uint temper;//先定义一个要显示温度的变量
uchar a1,a2,a3,a4;//定义数码管显示的4个变量,我们只取小数前两位和后两位
__CONFIG(0x3b31);//设置配置位
const uchar table[]={0x3f,0x06,0x5b,0x4f,//注意code是用在51单片机中的程序储存器中,const是一个常量,pic和51的单片机也可以共用的常量,但要写在前头
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x20};//数码管数字表从0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,无显示
const uchar table1[]={0xbf,0x86,0xdb,0xcf,//带小数点的0,1,2,3,4,5,6,7,8,9
0xe6,0xed,0xfd,0x87,0xff,0xef};
void delayus(uint,uchar);//微秒的延时声明
void delay(uint x);//毫秒的延时声明
void init();
void disp(uchar num1,uchar num2,uchar num3,uchar num4);
void reset();
void write_byte(uchar date);
uchar read_byte();
void get_tem();
void main()
{
init();//调用初始化
while(1)//因为要不断地循环扫描键盘检测是否按下所以要进行死循环
{
// NOP();//单片机的空指令可以当作1us延时使用,不用声明,但一定要大写
// delayus(0,0);//20us可用软件调试仿真的Stopwatch可得20us,30us,45us,70us,500us,750us
// delayus(1,1);//30us
// delayus(2,2);//45us
// delayus(4,4);//70us
// delayus(70,30);//750us
// delayus(50,10);//500us
get_tem();//调用获取DS18B20温度程序
// for(num=20;num>0;num--)//隔20us变更一次
// disp(a1,a2,a3,a4);//同时调用数码管
}
}
void reset()//DS18B20的初始化工作时序而不是单片机的
{
uchar st=1;//在初始化中要读DS18B20返回的低电平,所以要先定义一个变量st,且等于1
DQ_HIGH();//上面已定义了等同于TRISC1=1即设置RC1为输入状态,又因为原理图上有上拉电阻,所以为高电平
NOP();NOP();//延时2us
while(st)//循环st=0为假说明DS18B20已经返回0响应了确定存在,退出while
{
DQ_LOW();//上面已定义了等同于TRISC1=0,RC1=0即设置RC1为输出状态,且输出低电平
delayus(70,30);//延时750us
DQ_HIGH();//拉到高电平
delayus(4,4);//延时40us
if(DQ==1)//进行判断如果等于1,则at=1,DS18B20没有返回低电平未有响应
st=1;//等于1则要超过或循环while语句重新发送给DS18B20响应,不可能一次就确定18b20的存在
else
st=0;//循环直到st=0为假说明DS18B20已经返回0响应了
delayus(50,10);//因为已经有返回响应,确定DS18B20的存在,所以要延时500us再退出while
}
DQ_HIGH();//重新拉高,也叫释放总线
}
void write_byte(uchar date)//DS18B20的写工作时序,里面的date是单片机要发送的数据
{
uchar i,temp;//定义一个for循环的变量和发送数据中的一个位的变量
DQ_HIGH();//先置高电平
NOP();NOP();//延时2us
for(i=8;i>0;i--)//因为发送一个数据有8位
{
temp=date&0x01;//和00000001与,无论date是什么数与之后只有最低位是有效的,temp得到的其实是date的最低的一位
DQ_LOW();//置低电平
delayus(0,0);//延时20us
if(temp==1)//说明date的最低位是1,用if,else语句把数据从最低位到高一位一位的发送
DQ_HIGH();//因为temp=1表示数据线要置高电平
else
DQ_LOW();//表示temp=0数据线要置低电平
delayus(2,2);//延时45us
DQ_HIGH();//重新拉高,也叫释放总线
date=date>>1;//发送完一位后需要把date右移一位才能进行循环,如原来是01010101,右移1位后得到00101010,最低位被移走即发送
}
}
uchar read_byte()//DS18B20的读工作时序,因为是读所以是一个带返回值的函数,括号里面不用写变量,因为单片机只是读取而不发送任何东西
{
uchar i,date;//再定义一个for循环的变量i和接收数据的变量date
static bit j;//定义一个状态位,j是一个位的变量
for(i=8;i>0;i--)//因为接收一个数据有8位
{
date=date>>1;//先将数据右移一位其实这里只移动7位,加上或运算移动一位就共8位
DQ_HIGH();//先要确定数据线拉高
NOP();NOP();//延时2us
DQ_LOW();//将数据线拉低
NOP();NOP();NOP();NOP();NOP();NOP();//延时6us
DQ_HIGH();//拉高
NOP();NOP();NOP();NOP();//延时4us
j=DQ;//把RC1数据线的状态附给状态位j,这样读取到的数据线高低电平就是j的变化
if(j==1)//如果等于1,则说明是高电平,等于0时不需要或运算,因为或运算相当于右移,最高位自动补0
date=date|0x80;//只有读回来的数是1时才和10000000或运算,因为第一个读回来的是最低位,如果第二个又读回到要放在倒数第二位会不好放,所以要将最低位或运算放在最高位,这里已经移动过一次了
//如date是1或运算后得10000000,而这里只读取一次,循环后可得第二个11000000如果是0则直接填10000000
delayus(1,1);//延时30us
}
return (date);//把接收到的数据返回去经单片机
}
void get_tem()//获取温度指令将数据化为温度给数码管显示的函数
{
uchar temp1,temp2,num;//因为同时一次从低到高读两个字节,定义两个字节的变量,是下面的指令的变量
float aaa;//定义一个浮点数等于aaa的变量,提高精确度
reset();//调用DS18B20初始化相当复位
write_byte(0xcc);//ccH,因为只接了一个不需要配对,跳过了匹配的ROM指令
write_byte(0x44);//发送温度转换指令44H
for(num=100;num>0;num--)//隔100次,数码管闪一次
disp(a1,a2,a3,a4);//同时调用数码管
reset();//重新复位
write_byte(0xcc);//ccH,因为只接了一个不需要配对,跳过了匹配的ROM指令
write_byte(0xbe);//BEH是指接下来我要读你的指令
temp1=read_byte();
temp2=read_byte();//因为同时一次从低到高读两个字节
// temper=(temp2*256+temp1)*0.0625*100;//将温度转换成十六位温度数据,转换成十进制还需要乘以0.0625,因为我们只显示4个数码管,后两个是小数,不好提取就乘以100变成整数再提取
aaa=(temp2*256+temp1)*0.0625*100;//因为前面定义temper是一个整形的变量,乘出来的会是取整数精确度不高,附给用浮点数float表示的aaa就可以乘出小数部分
temper=(int)aaa;//再将aaa强制转换给整形temper,这时的整形temper就可以是带小数的了,注意书写格式
//这里面是强制转换的指令
a1=temper/1000;//因上一条程序已化为4位整数,提取对最高位千位求模
a2=temper%1000/100;//提取对百位求模
a3=temper%100/10;//提取对十位求模
a4=temper%10;//提取对个位求佘
}
void delayus(uint x,uchar y)//定义一个整形一个字符形变量表示微秒
{
uint i;
uchar j;
for(i=x;i>0;i--);
for(j=y;j>0;j--);
}
void delay(uint x)//延迟函数x表示毫秒
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);//嵌套
}
void init()
{
TRISD=0;//因为RD接的是数码管设置全为输出状态
TRISA=0;//设置数码管的位选为全输出状态
PORTD=0;//设置输出先全部关闭
PORTA=0;//在初始化时数码管不能显示
}
void disp(uchar num1,uchar num2,uchar num3,uchar num4)//数码管的扫描函数,要在里面有4个变量,每一个为一个数码管显示的数
{
PORTD=table[num1];//调用数码管的显示函数(注第一个是显示0)这是从左到右第一个数码管要显示的段选
PORTA=0x20;//00100000由原理图可得第一个数码管是由RA5控制位选的
delay(10);//因为是要动态,所以要加延时,但时间不能太长
PORTD=table1[num2];//调用数码管的显示函数(注第一个是显示0)这是第二个数码管要显示的段选,显示的小带小数点的
PORTA=0x10;//00010000由原理图可得第二个数码管是由RA4控制位选的
delay(10);//因为是要动态,所以要加延时,但时间不能太长
PORTD=table[num3];//调用数码管的显示函数(注第一个是显示0)这是第三个数码管要显示的段选
PORTA=0x08;//00001000由原理图可得第三个数码管是由RA3控制位选的
delay(10);//因为是要动态,所以要加延时,但时间不能太长
PORTD=table[num4];//调用数码管的显示函数(注第一个是显示0)这是第四个数码管要显示的段选
PORTA=0x04;//00000100由原理图可得第四个数码管是由RA2控制位选的
delay(10);//因为是要动态,所以要加延时,但时间不能太长
}

‘贰’ 在MCGS中如何表示传感器的上升沿和下降沿

在循环策略里,正跳变就是上升沿,负跳变就是下降沿

‘叁’ mcgs中传感器的用法

那你模拟下这个传感器的动作就好了,传感器有信号没信号可以自己模拟一个开关量的,当这个开关量为1时,认为有信号,这时候用脚本使剪刀电机动作=0,那么就可以了

‘肆’ adams怎么在传感器触发后改变驱动的函数

先用measuer建立力的测量如measure1
然后建立传感器sensor,函数选之前建立的measure,设置力大于或小于、等于某一值时的动作

‘伍’ adams传感器与脚本

我认为你可以不失效传感器,因为你设置的传感器条件为>=所以会不断触发,终止上一个仿真命令,继续下一个仿真命令,但后续你没有命令了,所以就没法再驱动,失效传感器也是说让他触发一次的效果,可以将传感器设置为=,这样就只会一次触发

‘陆’ 怎么用ADAMS编辑多段运动脚本,需要用到传感器

其实如果是真正的工程仿真的话,你是不能人为提前写好其运动方式的,你因该设置好初始条件如初始速度,它本来有的驱动力,以及一些滑动约束等,然后仿真看它自己能不能实现你要求的运动,若能,说明设计合理,若不能,则说明设计不合理。
有急问题的朋友可上讨宝的“小鱼的淘淘阁”,我们可以对问题互相交流学习。

‘柒’ ns2 实现无线传感器网络antsense路由算法的tcl脚本

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。在每年国内外发表的有关网络技术的学术论文中,利用NS给出模拟结果的文章最多,通过这种方法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。

然而,对初学者来说,NS是非常难于掌握的,一般人从学习NS到上手至少需要半年多时间。原因是多方面的:一方面,NS内容庞杂,随软件所提供的手册更新不够快,初学者阅读起来非常困难;另一方面,使用NS还要掌握其它很多必备的相关知识以及相关工具,这会使初学者感到无从入手;有的使用者可能还不了解网络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。另外,不论在国外还是国内,还没有一本书能集中回答和解决这些问题,这也是NS难于被掌握的一个重要原因。

1、NS2简介

NS2(Network Simulator, version 2)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:网络传输协议,比如TCP和UDP;业务源流量产生器,比如FTP, Telnet, Web CBR和VBR;路由队列管理机制,比如Droptail , RED和CBQ;路由算法,比如Dijkstra等。NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。

NS2使用C++和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。

当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。

2、使用NS进行网络仿真的方法和一般过程。

进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需编写OTcl脚本。另一个是基于C++和OTcl编程的层次。如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。

假设用户已经完成了对NS的扩展,或者NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:

(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。

(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。

(3)配置业务量模型的参数,从而确定网络上的业务量分布。

(4)设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。

(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。

(6)用NS解释执行刚才编写的OTcl脚本。

(7)对Trace文件进行分析,得出有用的数据。

(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。

NS2采用两级体系结构,为了提高代码的执行效率,NS2 将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。

3、NS2的功能模块

NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。

(1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。

(3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。

(4)代理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。

(5)包(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。

4、NS2的软件构成

NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一个开放脚本语言,用来对NS2进行编程;Tk是Tcl的图形界面开发工具,可帮助用户在图形环境下开发图形界面;OTcl是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用C++编写,以OTcl解释器作为前端;Tclcl则提供NS2和OTcl的接口,使对象和变量出现在两种语言中。为了直观的观察和分析仿真结果,NS2 提供了可选的Xgraphy、可选件Nam。

5、NS现有的仿真元素

从网络拓扑仿真、协议仿真和通信量仿真等方面介绍NS的相应元素:

(1)网络拓扑主要包括节点、链路。NS的节点由一系列的分类器(Classifier,如地址分类器等)组成,而链路由一系列的连接器(Connector)组成。

(2)在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如NS的TCP代理,发送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,还提供有UDP代理及接收代理Null(负责通信量接收)、Loss Monitor(通信量接收并维护一些接收数据的统计)。

(3)网络的路由配置通过对节点附加路由协议而实现。NS中有三种单播路由策略:静态、会话、动态。

(4)在链路上,可以配置带宽、时延和丢弃模型。NS支持:Drop-tail(FIFO)队列、RED缓冲管、CBO(包括优先权和Round-robin 调度)。各种公平队列包括:FQ,SFQ,DRR等。

(5)通信量仿真方面,NS提供了许多通信应用,如FTP,它产生较大的峰值数据传输;Telnet则根据相应文件随机选取传输数据的大小。此外,NS提供了四种类型的通信量产生器:EXPOO,根据指数分布(On/Off)产生通信量,在On阶段分组以固定速率发送,Off阶段不发送分组,On/Off的分布符合指数分布,分组尺寸固定;POO,根据Pareto分布(On/Off)产生通信量,它能用来产生长范围相关的急剧通信量;CBR,以确定的速率产生通信量,分组尺寸固定,可在分组间隔之间产生随机抖动;Traffic Trace,根据追踪文件产生通信量。

‘捌’ 姿态传感器通过电脑读取保存成 txt格式的数据,请问如何用txt里的数据控制舵机 ,用什么软件与硬件

先说硬件吧:
控制舵机的话需要单片机,51,arino都可。当然专业的舵机都有自己的控制器,看你是什么需求。以上是基本,如果需要无线通信,就需要wifi模块、蓝牙模块等。
软件:这个我不太懂你什么意思,你可以自己写你软件来配合下位机。如果你要现成的软件,我推荐你查一下陀螺仪厂商的官网,应该会有你要的软件。
望采纳

‘玖’ Adams脚本分析突然停止问题

这个需要看到具体的模型才能指导你

‘拾’ 如何通过PLC把现场实时温度显示在触摸屏上

首先要通过模拟量采集模块将温度传感器的信号采集过来,读入plc,也就是在plc的内部寄存器中,指定一个寄存器放温度值,当然这个温度值要相应运算处理,然后通过触摸屏放一个寄存器数值显示元件,将元件编号对应到plc里面的这个寄存器上面,这样就可以显示了,这个是原理,要实现起来其实也是简单的,可以参考一下三菱特殊模块使用手册,需要手册可以联系sipabc,上面有范例