组态王软件的应用与分析(3)

2019-07-13 17:20

数据…:为实际的数据转换为ASCII码,个数为字节数乘2。 异或:异或从设备地址到异或字节前,异或值转换成2个ASCII码 CR:0x0d。

---------------------------------------------------------- 有了这些资料,程序就不难编写了。 先测试一下。

到proteus中,全速运行,这就打开了串口窗口。

在kingview中单击“读取”(见上一篇的最后一个图),可以看到如下字串:

@02E000000176

这个数据字串与地址,数据类型等有关,解读如下: 变量名 X0 X1 XO X1 X0 X1

如果切换成HEX显示,则可以看到字头和字 如:@02A400010274 HEX显示为:

OAT OAT FLORT FL @ 02 C ORT SHTE SHTE BY @ @ @02 C E1 02 4 E0 00004 1 02 4 A1 00004 0 0R 型 BY @02 0 A0 00002 4 0R C类头 @字设备地址 02 0 E1 00002 5 7R C志 E0 00001 7 7R C标数据地址 000数据字节 01 6 7R C或 7R C异R CC40 30 32 41 34 30 30 30 31 30 32 37 34 0D

其中取异或的,不包括字头40H,即从30H开始的10个字符,异或算出来后,转换成ASCII码成为其后的2个字符,即0D前的两个字符。以上面的数字为例,异或算出来为74H,转换成ASCII码为37H和34H。

五、总结

通过以上介绍与实例分析了解到组态王软件具有适应性强、开放性好、易于扩展、经济及开发周期短等优点。组态王强大及方便的功能还在随着科技的发展更加完善,认真学习组态王的应用将使我们在以后的工作中更加左右逢源。

参考文献

[1] 廖常初:《西门子人机界面(触摸屏)组态与应用技术(第2版)》 机械工业出版社 2006年3月;

[2] 紫金桥:《基于紫金桥的牵引变电所计算机监控》2006年8月;

[3] 上海超高压输变电公司:《变电所自动化与监控(第三册)》 中国电力出版社 2006.年7月;

[4] 姚卫丰 :《楼宇设备监控及组态》 机械工业出版社 2008年6月。

附件:实例程序: #include \/*11.0592M 19200 bps */

typedef unsigned char uchar; typedef unsigned int uint;

/*定时器2的波特率:fosc/32*(65536-(rcap2h rcap2l)) 按此,可得波特率是19。2时,要求65536-(rcap2h rcap2l)=18 即(rcap2h rcap2l)=65518 */

void serial_init () {

SCON = 0x50; /* mode 1: 8-bit UART, enable receiver */ C_T2=0; /*Timer2 runing in Timer mode*/ RCLK=\ TCLK=\ RCAP2H=0xff; RCAP2L=0xee;

TR2=1; /*enable Timer2 run */

ES = 1; REN=\时收到的第9位为1才置位RI标志*/ }

/*通过串行口发送数据 */ void UartSend(uchar Dat) { SBUF=Dat; for(;;) { if(TI) break; }

TI=0; }

uchar RecBuf[12];

bit RecOk=\一次接收工作结束

void Recive() interrupt 4 {

static bit StartRec=\如果收到的首个字符是40H,则该值取0 static uchar Count=\计数器 uchar RecDat;

RecDat=SBUF; //取得SBUF中的数据 if(!StartRec) //新的一次接收开始 {

if(RecDat==0x40) //首字符正确 {

StartRec=1; //开始新的一次接收工作 } } else {

RecBuf[Count]=RecDat; Count++; if(RecDat==0x0d) {

StartRec=0; //准备下一次接收 Count=0; //计数器清零 RecOk=1; //一次接收正确 } } RI=0; }

void UartSends(uchar Buff[],uchar Len) { uchar i;

for(i=0;i

void mDelay(uint DelayTim) { uchar i;

for(;DelayTim>0;DelayTim--) {

for(i=0;i<123;i++); } }

uchar SendBuf[10]={0x40,0x30,0x33,0x30,0x31,0x36,0x35,0x30,0x31,0x0d}; void main() { uchar i;

uchar RecCount=\ uchar SendCount=\ uchar xorDat;

uchar cTmp1,cTmp2;uchar cTmp;

uchar SendDat=\这个是程序中准备传递给kingview的,可以自行更改。 serial_init (); //定时器,串口初始化

for(;;){

if(RecOk) //一次完整的接收

{ RecOk=0; //本次接收后的应答处理完毕 xorDat=RecBuf[0]; for(i=1;i<10;i++) {

xorDat^=RecBuf[i]; //异或


组态王软件的应用与分析(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:利率风险管理与监管原则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: