當前位置:首頁 » 網頁前端 » 如何寫昆態感測器腳本
擴展閱讀
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,上面有範例