力控组态软件怎样和单片机串口通信
你看看威纶触摸屏的编程软件例程行吗,感觉和组态软件差不太多,一般是通过modbus协议或其他常用协议,你可以看看相关内容。
http://www.weinview.cn/download.php?sortserial=109&pageIndex=4这是威纶官网上的51单片机例程通信例程,希望对你有帮助
急!本人单片机实验板可以正常与笔记本通讯做实验,现想使用 组态王...
我觉得如果是单片机的话,还是自己在上位机用VB或者VC自己做画面最好,组态软件里面一般带有不少市面上硬件的驱动,自己的设备想操作的话不知道会不会有难度。
如果实在是想用组态软件的话,可以考虑下MODBUS,一般的都支持。
给你个截图,是力控组态软件里面的。
利用串口实现单片机与PC超级终端通信
标准串口参考程序如下:(来源周立功单片机公司)具有一般参考意义。
#includeunsigned char UART_RX; //定义串口接收数据变量unsigned char RX_flag; //定义穿行接收标记/*********************************************************************************************函数名:UART串口初始化函数调 用:UART_init();参 数:无返回值:无结 果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)备 注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]/**********************************************************************************************/void UART_init (void){ EA = 1; //允许总中断(如不使用中断,可用//屏蔽) ES = 1; //允许UART串口的中断 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 }/**********************************************************************************************//*********************************************************************************************函数名:UART串口接收中断处理函数调 用:[SBUF收到数据后中断处理]参 数:无返回值:无结 果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备 注:过长的处理程序会影响后面数据的接收/**********************************************************************************************/void UART_R (void) interrupt 4 using 1{ //切换寄存器组到1 RI = 0; //令接收中断标志位为0(软件清零) UART_RX = SBUF; //将接收到的数据送入变量 UART_data RX_flag=1; //标记接收 //用户函数内容(用户可使用UART_data做数据处理) //SBUF = UART_data; //将接收的数据发送回去(删除//即生效) //while(TI == 0); //检查发送中断标志位 //TI = 0; //令发送中断标志位为0(软件清零)} /**********************************************************************************************//*********************************************************************************************函数名:UART串口发送函数调 用:UART_T (?);参 数:需要UART串口发送的数据(8位/1字节)返回值:无 结 果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式备 注:/**********************************************************************************************/void UART_T (unsigned char UART_data){ //定义串口发送数据变量 ES=0; //禁止穿行中断 SBUF = UART_data; //将接收的数据发送回去 while(TI == 0); //检查发送中断标志位 TI = 0; //令发送中断标志位为0(软件清零) ES=1; //打开穿行中断}/*********************************************************************************************函数名:UART串口发送字符串函数调 用:UART_S (?);参 数:需要UART串口发送的数据(8位/1字节)返回值:无 结 果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式备 注:/**********************************************************************************************/void UART_S(unsigned char *str){ while(1) { if(*str=='\0') break; UART_T(*str++); }}/*********************************************************************************************函数名:主函数调 用:main();参 数:返回值:无 结 果:备 注:/**********************************************************************************************/void main(){ unsigned char Buf_data[]={" welcome to MCU world. \n\r"}; UART_init(); UART_S(Buf_data); while(1){ if(RX_flag==1) { UART_T(UART_RX); RX_flag=0; } }} ///////////////////////////////////////////////////////////////////个人认为普通单片机在通信频率上及不上AVR单片机,更可能使用USB转串口工具进行开发,所以串口波特率不能过高,最好是2400或4800。
过高只会导致乱码或丢失。
而楼主的中断服务程序也不正确,设计缺乏经验,所以需要继续努力。
怎么实现组态软件和设备通讯
单片机就不用太细说了。
最简单的输出/输入构成。
如输出用LED,输入用开关。
并且能实现最基本的运行条件,如应有供电、时钟附属电路等。
而PLC出Programmable Logic Controller可编程逻辑控制器,是工业控制计算机。
采用梯形图、助记符、功能图等编程语言,完成逻辑运算、顺序控制、记数、定时、计算及模拟量处理等功能。
具有光电隔离的输入输出端子,可代替大量的定时器、记数器、继电器,具有极高的可靠性。
通过各种扩展模块,可增加输入/输出点数,增加模拟量功能如可直接接热电偶等,增加通信功能及特殊通信协议等,具有较高的使用灵活性。
最主要的差别:PLC包括操作系统及强电的光电隔离的输入/输出,方便应用并具有极高的可靠性与抗干扰能力、扩展能力及使用方便性。
组态王软件与单片机串口ascii通讯时浮点数为什么这样转换。
求解答?...
展开全部 没错,这不是IEEE754规格化的浮点数表示形式。
这个换算写得太复杂了,反而让人很难看懂。
给你举个33.3的例子吧……①33.3的整数部分为33,即100001。
因此阶数为+6。
②33.3化为小数2^6*0.5203125。
③剩下连续3个字节储存尾数,0.5203125*256^3 = 8729395.2,整数部分为8729395,即853333h。
④所以最终的4字节浮点数为06h 85h 33h 33h。
⑤然后还得转成8字节ASCII码:30h 36h 38h 35h 33h 33h 33h 33h。
...
转载请注明出处51数据库 » 利用组态软件和单片机通讯
我等他