组态王与单片机8051/5x通讯,通讯 点击:2097 | 回复:14



amwccje

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-07 19:19:00
楼主
组态王通迅下位机(单片机)程序说明:

1)包括显示,收和发。程序中内容
2)其内有读和写和子程序,可直接使用,只是要注意不打包。
3)组态王串口通迅口为com1,设备地址为15.0(15表示地址,0表示不打包
也可不限地址,但不打包).
4)协议见通用单片机通讯协议(ASCII.doc).

特别说明:本例子只做了不打包程序,打包可按通用单片机通讯协议格式做.
     组态王6.5与单片机的通信方法——中的调试方法是一种不错的方法。

组态与单片机通讯上位机(组态王)程序说明:
1)按通用单片机通讯协议(ASCII.doc)上设置,注意COMM口的较验为<无较验>。
2)组态还给我们提供了一种不错的调试工具。右健单击本中的设备——单片机1
   ——再单击测试单片机1,试试看啊!
3)与单片机通讯时需安装相应的组态驱动程序。
4)在通讯前必须保正下位机设备正常运行,否则失败。

组态DDE通讯下位机程序说明:
1):程序包括!18B20程序和要上发的数据,发的方式为自动循环的无触发方式。
2):单片机为89C52RC。程序说明见程序。

组态与CBDDE通讯上位机程序说明:
1)在设备选项上新建DDE设备,这时可按F1帮助,上面说明得非常详细。
2)要说明的是数是通过MSComm连接的,通讯的控件是:CB\System\DdeServerCovn控件.
   具体数据则是通过CB\System\DdeServerItrm控件传输的,一个DdeServerItrm控件只能
   对应一个组态变量.
3)组态中的变量只需做两件事就可通讯了,一是连接设备即CB工程生成的.EXE文件(通过DDE连接),一是读
  DdeServerItrm控件的数据即可.

CB做的DDE通讯程序说明:
它的做用是收下位发送和数据并传给DDE.俱体见程序,中有详细的注释.


以上程序均有详细注释QQ:370302924
Mail:amwccje@163.com




amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-07 19:23:00
1楼
CB——DDE与单片——组态王通讯程序(原创)
上载中

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-07 19:25:00
2楼
今天晚了明天再上传
整理中

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-08 11:19:00
3楼
组态与单片机通讯有多种方式,最赏常用的是组态——CB DDE——单机和组态——单片机直接通讯。
下面的例程序是CB与单片通讯的一个简单例子,要说明一下的是,CB的DDE控件需添加MScomm.ocx控件到ActiveX下,Component/ImportActivex/找到MScomm.ocx /ADD就可完成添加。不过MScomm控件 需把Mscomm32.ocx复制到System32文件夹下,Mscomm32.ocx在网上可找到,或安装VC可直接解决,如还不能解决或觉得这样都麻烦,可联系我们,我们可提供一个Mscomm32.ocx的安装EXE文件(CB制作的)或提供Mscomm32.ocx文件和详细的安装说明。
我们的服务宗旨是:用我们的技术给你带来方便和效益。 
//---------------------------------------------------------------------------
#include 
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 MSComm1->PortOpen=1;    //打开串口,

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{       //发数据给单片程序。
    unsigned char i;
   i=StrToInt(Edit1->Text); // Edit1->Text是指向输入的数,为字符型。
        //StrToInt(Edit1->Text) 转换成INT型。
  OleVariant TxBuff; //定义一个万能变量。
  Byte TxDat[6]={0xaa,1,  1,     0,  1,0xbb};  //定义一个数组,其容与本程序无关
                    // ADD,ON/OFF,IO,YANZHE
  TxDat[0]=i;  //放入数据,可多个
  TxBuff=VarArrayCreate(OPENARRAY(int,(0,0)),varByte);
                        //定义TxBuff的各式 ,int(0,0)的意思是有0个字节,1个数据
                        //又int(0,5)表示0字节,6个数据。
  for(unsigned int i=0;i<1;i++)  //给TxBuff赋值,个数由i决定。
  TxBuff.PutElement(TxDat[i],i);  //给TxBuff赋值,个数由i决定。
  MSComm1->Output=TxBuff;  //发送出去。
  MSComm1->InBufferCount=0;  //结束。
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{   /收单片机数据程序
Byte RxDat[8];
unsigned int  ByteNum,i;
OleVariant RxBuff;

   if(MSComm1->CommEvent==comEvReceive)  //下位机发数据触发信号。
   {
      RxBuff=MSComm1->Input;    //数据存入万能变量。
      ByteNum=RxBuff.ArrayHighBound(1);  // 得到数据个数
      for(i=0;i<=ByteNum;i++)
        RxDat[i] = RxBuff.GetElement(i);  //数据转换成Byre型并存起。
      MSComm1->InBufferCount=0;          //结束。
         Text_To_View1->Text = RxDat[0];   //发给组态变量1
         Text_To_View2->Text = RxDat[1];   //发给组态变量2
         Text_To_View3->Text = RxDat[2]; //……….
         Text_To_View4->Text = RxDat[3];
         Text_To_View5->Text = RxDat[4];
   }        
}
//---------------------------------------------------------------------------
代理销售STM32芯片、最小系统开发学习板(各种档次芯片开发学习板188元以下)
代理销售台达PLC、变频器等工控产品。
销售 51实验板   销售 51学习板   销售 51最小系统板 销售 51开发板 
销售 89C51F040开发板   销售 89C51F020开发板 销售 ADUC0832开发板
销售 51工控板和例程 销售 51工控板和例程 销售 51工控板和例程
提供课程设计、实验学习51系统板,和多达40多个例程,只需150元,只相当一个开发板的价格、你还可获得我们的在线服务。
为广大学子提供优秀的毕设计方案和再学习机会,只需1000元学习、毕业论文两不误。
长期提供嵌入式培训;三菱PLC、台达PLC和欧母龙PLC的编程欧培训;组态王开发培训;Protol 99应用培训等软硬件设计培训服务。
我们的培训口号是:以我们的系统开发方案为您提供充分的学习平台,用我们实时的交流平台为您带来技术上质的飞越。
以上培训费用只需988元,送学习板,例程。随到随学,一个人也开课,学时8天。

单片机菜鸟群:17373243
单片机学习群:57464005
QQ:370302924

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-08 11:24:00
4楼
组态王与CBDDE通讯就简单了,只要有了MScomm控件,参照组态王帮助就OK拉。
组态王与CBDDE通讯就简单了,只要有了MScomm控件,参照组态王帮助就OK拉。

代理销售台达PLC、变频器等工控产品。
销售 51实验板   销售 51学习板   销售 51最小系统板 销售 51开发板 
销售 89C51F040开发板   销售 89C51F020开发板 销售 ADUC0832开发板
销售 51工控板和例程 销售 51工控板和例程 销售 51工控板和例程
提供课程设计、实验学习51系统板,和多达40多个例程,只需150元,只相当一个开发板的价格、你还可获得我们的在线服务。
为广大学子提供优秀的毕设计方案和再学习机会,毕业论文两不误。
长期提供嵌入式培训;三菱PLC、台达PLC和欧母龙PLC的编程欧培训;组态王开发培训;Protol 99应用培训等软硬件设计培训服务。
我们的培训口号是:以我们的系统开发方案为您提供充分的学习平台,用我们实时的交流平台为您带来技术上质的飞越。
以上培训费用只需988元,送学习板,例程。随到随学,一个人也开课,学时8天
单片机菜鸟群:17373243
单片机学习群:57464005
QQ:370302924
我们的服务宗旨是:用我们的技术给你带来方便和效益。 


组态王与CBDDE通讯就简单了,只要有了MScomm控件,参照组态王帮助就OK拉。

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-08 11:25:00
5楼
以上培训费用只需988元,送学习板,例程。随到随学,一个人也开课,学时8天
单片机菜鸟群:17373243
单片机学习群:57464005
QQ:370302924
我们的服务

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-08 11:28:00
6楼
有要CB程序的请与我联系。

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-12 19:04:00
7楼
????????

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-12 19:05:00
8楼
????????

中尉兄

  • 精华:0帖
  • 求助:0帖
  • 帖子:25帖 | 436回
  • 年度积分:0
  • 历史总积分:647
  • 注册:2006年6月05日
发表于:2008-03-12 21:46:00
9楼
给兄弟提个建议:如果你自己有自己的软件的话,再加上你的单片机控制部分,这样估计会有人考虑。如果你是自己开发的软件加上自己开发的plc的话,考虑的人会更多。后者面对的客户可是很广的。

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-13 09:46:00
10楼
呵呵谢谢!其实我们用单片机和组态通讯主要是解决温度控制系统方案,这个方案我们是成功解决了的,用物流和粮食储备上经济又实惠。为些我们还开发了单片工控板,只是没有很好的推广。

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-18 18:49:00
11楼
/*
*
* 文件名称:组态王与单片机通迅
* 文件标识:07.11.21.c
* 摘 要:组态王与单片机通迅,包括显示,收和发.与18b20温度传感器接合使用.
*  组态王串口通迅口为com1,设备地址为15.0(15表示地址,0表示不打包
*  也可不限地址,但不打包).
* 当前版本:1.0
* 作 者:黄双明
* 完成日期:2007年11月28日
*/




/*
* 组态协议: 字头 设备地址 标志 数据地址 数据字节数 数据… 异或 CR
* 字头:1字节1个ASCII码,40H
* 设备地址: 1字节2个ASCII码,0—255(即0---0x0ffH)
* 标志:1字节2个ASCII码,bit0~bit7, //把接收值将它发出即可
* bit0= 0:读,bit0= 1:写。
* bit1= 0:不打包。
*     bit3bit2 = 00,数据类型为字节。
*     bit3bit2 = 01,数据类型为字。
*     bit3bit2 = 1x,数据类型为浮点数。
* 数据地址: 2字节4个ASCII码,0x0000~0xffff   //把接收值将它发出即可
* 数据字节数:1字节2个ASCII码,1—100,实际读写的数据的字节数。  //把接收值将它发出即可
* 数据…:为实际的数据转换为ASCII码,个数为字节数乘2。   
* 异或:异或从设备地址开始异或,到异或字节前结束得异或值,异或值转换成2个ASCII码
* //如得0x4b,对应Ascll为0x34和0x42.
* CR:0x0d。
*/////////
// 读格式为:字头 设备地址 标志 数据地址 数据字节数 异或 CR
// 写格式: 字头 设备地址 标志 数据地址 数据字节数 数据… 异或 CR


#include "reg52.h"
#define  uchar unsigned char
#define  CTH0   0xfe
#define  CTL0   0x0c

sbit led1=P2^7;//定义LED.
sbit led2=P2^6;
sbit led3=P2^5;
sbit led4=P2^4;
//unsigned char i10=0;  //收数据标

//unsigned int j=0;   //动态显示数据用
unsigned char i=0;   //动态显示用
int  j=0; ////调试用
unsigned char k=0; ////调试用1~100.
//unsigned char k4=0; //K4为发送的数据 ;K6为组态下传数据标志。k6=0;
int k2=0; //接收死机保护。
uchar  duan_tabled[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//需要显示的段选码


char pp1[22]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,
0x0a,0x0a,0x0a,0x0a,0x0a,0x0a};  //接收上位机读写暂存
char pp2[10]={0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d};  //数据发送暂存

uchar pp3[8]={0x40,0x00,0x00,0x2a,0x2a,0x00,0x00,0x0d} ; //uchar pp4[8]={0x40,0x00,0x00,0x23,0x23,0x37,0x36,0x0d} ; //





delay(unsigned int i)  //延时子程序。
{
unsigned int j=0;
for(;j<=i;j++);;;
}



 void Init()   //初始化
{
// TMOD=0x01;   
TMOD=0X21; //设置T1为方式2   
    TH0=CTH0;                                                  //1MS
    TL0=CTL0;
    ET0=1;
    TR0=1;

EX0=1;
IT0=1;

TH1=0Xfd; //设置波特率为9600
TL1=0Xdf;
SCON=0X50; //设置串口位方式1
PCON=0X00;
// SPCTL=0x4d;
TR1=1;    //定时器1开始计数
ES=1;  
EA=1;
}





void  timer0() interrupt 1 //显示中断;前两位调试用,
   //第三位显示——接收上位机读写暂存——的第几位.
{    //第四位显示对比。
TH0=CTH0;
TL0=CTL0;
i++;   
if(i==5)
{
   P0=duan_tabled[pp1[21]%10]; //第二位 显示上面传下来的数据的个位
 P1=0xfd;
}
if(i==10)
{

  P0=duan_tabled[pp1[21]/10];//  第一位 显示上面传下来的数据的十位
  P1=0xfe;
}

if(i==15)
{
P0=duan_tabled[k%10];//第三位 ////K调试用 1~100显示
P1=0xf7;
}
if(i==20)
{
P0=duan_tabled[k/10];  //第四位
P1=0xfb;
i=0;

if(j++>=100){j=0; k++;} ////j调试用
}
if(k>=100) k=0;////K调试用,1~100显示
}




void UART() interrupt 4    //接收中断,只接收
{

uchar ii ;
unsigned int temp;
if(RI)
{
if(SBUF==0x40) //简单判断是否为组态发送数据,否则RI=0。

for(ii=0;ii<18;ii++) //不管发多少Bit,按最多收18个Bit。  

pp1[ii]=SBUF; 
RI=0;
if(pp1[ii]==0x0d) {k2=1;return;}    //也可用break; 跳出for语句
  temp=0;  
while(RI==0&&temp<1000)temp++; //while(!RI&&temp)temp--;也可退出
if(temp>=1000)return;
}   
}

}
RI=0; // 



void write(uchar k5) //写子程序,写的格式为:字头 设备地址 标志 数据地址 数据字节数 异或 CR
{
uchar ii;  //变量
uchar yihou1,yihou2,yihou3; //计算暂存变量
yihou1 = pp1[1]^pp1[2]^pp1[3]^pp1[4]^pp1[5]^pp1[6]^pp1[7]^pp1[8]^pp1[9]^pp1[10];
  //异或较验;组态协议。
yihou2 = yihou1;   //转换成ACall码。如73的AsAALL为0x37和0x33
yihou1 = yihou1>>4  ;
yihou2 = yihou2&0x0f ;
if(yihou2>0x09) yihou2=yihou2-9+0x40;
else yihou2=yihou2 +0x30;  
if(yihou1>0x09) yihou1=yihou1-9+0x40;
else yihou1=yihou1 + 0x30;   ///转换
if( yihou1==pp1[11]&&yihou2==pp1[12] )   //较验

   pp2[1] = pp1[1]; pp2[2] = pp1[2];   //  放入需发送的内容。
pp2[3] = pp1[9];   pp2[4] = pp1[10]; // 组态协议。
pp2[5]=pp2[6]=k5; // 把数据转换成Asall码
pp2[5] = (pp2[5]>>4)&0x0f;
pp2[6] = pp2[6]&0x0f;
if(pp2[5]>=0x0a) 
pp2[5] = pp2[5]-9+0x40;  //0x0a~0x0f的转换,a对应Ascll值为0x40。
else 
pp2[5] = pp2[5]+0x30;  //0~9的转换。
if(pp2[6]>=0x0a) 
pp2[6] = pp2[6]-9+0x40;
else 
pp2[6] = pp2[6]+0x30 ;
yihou3 = pp2[1]^pp2[2]^pp2[3]^pp2[4]^pp2[5]^pp2[6];  //取得异域较验值。
pp2[7] = yihou3>>4;
pp2[8] = yihou3&0x0f;
if(pp2[7]>=0x0a) 
pp2[7] = (pp2[7]-9)+0x40;
else 
pp2[7] = pp2[7]+0x30;
if(pp2[8]>=0x0a) 
pp2[8] = (pp2[8]-9)+0x40;
else 
pp2[8] = pp2[8]+0x30;
for(ii=0;ii<10;ii++) //发送。
{
SBUF = pp2[ii] ;
while(!TI);
TI=0;
}
}
else  //错误发送见组态协议。
{  
pp3[1] = pp1[1]; pp3[2] = pp1[2];
yihou3 = pp3[1]^pp3[2];  //错误代码的较验
pp3[5] = yihou3>>4;    //Aacll转换。
pp3[6] = yihou3&0x0f;
if(pp3[5]>=0x0a) 
pp3[5] = pp3[5]-9+0x40;
else 
pp3[5] = pp3[5] +0x30;
if(pp3[6]>=0x0a) 
pp3[6] = pp3[6]-9+0x40;
else 
pp3[6] = pp3[6] + 0x30 ;
for(ii=0;ii<8;ii++)

SBUF = pp3[ii] ;
while(!TI);
TI=0;


}


read()  // 读程序。读格式: 字头 设备地址 标志 数据地址 数据字节数 数据… 异或 CR
{
uchar ii; 
uchar yihou1,yihou2,yihou3;
yihou1 = pp1[1]^pp1[2]^pp1[3]^pp1[4]^pp1[5]^pp1[6]^pp1[7]^pp1[8]^pp1[9]^pp1[10]^pp1[11]^pp1[12];
yihou2 = yihou1;  
yihou1 = yihou1>>4  ;
yihou2 = yihou2&0x0f ;

if(yihou2>0x09) yihou2=yihou2-9+0x40;
else yihou2=yihou2 +0x30;  

if(yihou1>0x09) yihou1=yihou1-9+0x40;
else yihou1=yihou1 + 0x30;

if(yihou1==pp1[13]&&yihou2==pp1[14])
{
/* if(k6==2)
{
pp1[19]=pp1[11]; //取数据
pp1[20]=pp1[12];
} */
pp4[1] = pp1[1]; // 取设备地址
pp4[2] = pp1[2]; // 取设备地址
yihou3 = pp1[1]^pp1[2]; //异或效验
pp4[5] = yihou3>>4; //异或效验结果转换成ASCII码。
pp4[6] = yihou3&0x0f;

if(pp4[5]>=0x0a) 
pp4[5] = pp4[5]-9+0x40;
else 
pp4[5] = pp4[5]+0x30;

if(pp3[6]>=0x0a) 
pp4[6] = pp4[6]-9+0x40;
else 
pp4[6] = pp4[6]+0x30; 

for(ii=0;ii<8;ii++)

delay(100);
SBUF = pp4[ii] ;
while(!TI);
TI=0;
}
}
else 
{  
pp3[1] = pp1[1];
pp3[2] = pp1[2];
yihou3 = pp3[1]^pp3[2];
pp3[5] = yihou3>>4;
pp3[6] = yihou3&0x0f;

if(pp3[5]>=0x0a) 
pp3[5] = pp3[5]-9+0x40;
else 
pp3[5] = pp3[5] +0x30;

if(pp3[6]>=0x0a) 
pp3[6] = pp3[6]-9+0x40;
else 
pp3[6] = pp3[6] + 0x30 ;

for(ii=0;ii<8;ii++)

SBUF = pp3[ii] ;
while(!TI);
TI=0;


}

main ()
{
unsigned char k4=0;
//delay(1000);
//uchar ii ;
Init();  //初始化
while (1)
{
if(k2==1) //
{
k2=0;
if(pp1[4]==0x30)  //pp1[4]判断组态是要读还是写数据

k4=k;
if(pp1[8]==0x31)   //
write(k4);  
if(pp1[8]==0x32)
write(pp1[21]);
}
if(pp1[4]==0x31)  /
{
read(); //
pp1[19]=pp1[11]; //
pp1[20]=pp1[12];

if(pp1[19]>=0x41)  
pp1[19] = pp1[19]-0x37;
else 
pp1[19] = pp1[19]-0x30;

if(pp1[20]>=0x41) 
pp1[20] = pp1[20]-0x37;
else 
pp1[20] = pp1[20]-0x30;

pp1[19]=pp1[19]<<4 ;
pp1[21]=(pp1[19]&0xf0)|(0x0f&pp1[20]);
}
}
}  
}

amwccje

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 20回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2007年4月14日
发表于:2008-03-18 18:52:00
12楼
Easy51-B单片机实验板
本实验板主要提供以下实验:led灯光闪烁、蜂鸣器的鸣笛、数码管的显示(可以显示0~F的数据)、按键控制、串口发送、液晶显示,本实验板可以提供三种液晶的正常显示(1602 、7920、0108),还有红外接收,温度采集等功能,可以通过数码管或液晶显示,为学者提供整套工具,并提供一些实例,当然还可以扩展出其他功能。

硬件资源:
      1 .采用STC8951RC(与标准51指令、脚位完全兼容),支持在线串行ISP下载。
2 .供电方式:USB供电
3 .串口RS232
4 .4个LED发光管
5 .四位数码管
6 .4个独立式键盘(包含外部中断按键)
7 .一个蜂鸣器
8 .1602液晶接口(液晶为选配件)
9 .128X64液晶接口(液晶为选配件)
10 .DS18B20温度传感器(选配件)
11 .IrDA红外接收头
   功能:
     1  IO控制LED闪烁
2  定时器0控制LED 1S闪烁
3  外部中断0(按键)控制LED亮灭
4  多种频率产生警笛声(蜂鸣)
5  四个按键控制四个LED对应亮灭或液晶的翻页。
6  1602液晶显示。
7  KS0108、或ST7290液晶显示。
8  四个数码管上分别显示1234
9  串口通讯,上位机和下位机互相通讯。
10  DS18B20温度传感器显示出温度值。
11  红外接收,红外遥控控制指示灯或液晶的动作等。

qqin008

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2011年12月06日
发表于:2011-12-31 16:50:46
13楼
想学习真难,啥都要买啊。。。

關羽

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2012-01-01 13:37:23
14楼
还是用MODBUS RTU协议好 这样不管是什么上位机 不管是组态王还是力控 还是杰控 还是易控 还是MCGS 都可以哦 你这个显然不具有通用性哦 QQ149034219

热门招聘
相关主题

官方公众号

智造工程师