精华内容
下载资源
问答
  • 本程序主要讲述维纶触摸与51单片机通讯实例,包括触摸程序,单片机程序与线路图。
  • 使用MCGS触摸单片机通讯的心得

    千次阅读 2018-09-30 08:56:40
    1.MCGS的设备驱动是真的不好用,灵活性较差,当然这里针对MCGS与单片机通讯的时候,PLC设备还好。所以如果你想做MCGS与单片机通讯,最好采用他们提供的脚本驱动开发工具V2.0,这个在网上都能找到的,这里我就不给出...
     使用MCGS在项目中已经有一年了,有些个人心得如下:
     1.MCGS的设备驱动是真的不好用,灵活性较差,当然这里针对MCGS与单片机通讯的时候,PLC设备还好。所以如果你想做MCGS与单片机通讯,最好采用他们提供的脚本驱动开发工具V2.0,这个在网上都能找到的,这里我就不给出链接了。这款软件使用的语言是类VB语言,不完全遵循VB语言的语法规则,所以你还是要看下他的语法手册,这个已经在软件中集成好了,不需要另找。总结下,使用这种方式基本可以实现项目的功能,但会有些许麻烦。如果你的时间够多,可以使用单片机方式开发人机界面,这样会使你的自由度很高。
     2.MCGS的以太网通讯暂不支持自主开发驱动,这点很局限
     希望各位能使用好MCGS,祝大家工作愉快!
    
    展开全文
  • 介绍了51单片机和触摸之间的通讯技术,给出了方案和程序
  • MCGS触摸单片机Modbus协议通讯

    热门讨论 2013-06-10 09:34:53
    此程序为51单片机与MCGS组态监控软件Modbus RTU通讯下位机程序, 此程序在STC12C5A60S2单片机上测试通过,可以移植到其他51系列单片机! 包含下位机单片机程序,上位机界面,Modbus RTU 驱动级说明文件。
  • 51单片机与维控触摸基于MOSBUS通讯程序,能处理上位机发给下位机的所有指令
  • 针对台达触摸内没有与既有的89C51单片机通信程序,但却支持Modbus通信协议,用89C51单片机编程实现Modbus通信协议的功能,进行两者之间的通信连接。
  • 我在研发的一款产品,经常用着用着屏幕死掉,而单片机还能工作。我猜测是单片机的驱动板通讯出了问题,请问我该怎么解决呢?麻烦高手们给个建议,思路,指个方向,谢谢。
  • 本程序讲述的是威纶通单片机通讯实验
  • 140CPU67160 RJ45 与威纶通 MT6100I 触摸 RS485 通讯说明1:PLC 设置2:MT6100I 设置3:通信线制作UNITY PLC 需与触摸屏通讯,接线方式参照上图。NC 不接。正常后 CPU167160 显示 4854、140CPU67160 统J45 与 MT6100I...

    70688aa4c3c123aa1db9c43d10d4b34f.png

    140CPU67160 RJ45 与威纶通 MT6100I 触摸屏 RS485 通讯说明

    1:PLC 设置

    f82f06bad6da1307c69e7a4a0e51e5e3.png

    2:MT6100I 设置

    5309b49bb7aca9bdf09b79de861ea087.png

    3:通信线制作

    41e05e16592dfc87dcc1919e14e93daa.png

    028bd4617d1c16de588365514f884cba.png

    UNITY PLC 需与触摸屏通讯,接线方式参照上图。NC 不接。正常后 CPU167160 显示 485

    4、140CPU67160 统J45 与 MT6100I 触摸屏 统S485 通信热备冗余,只需将两个 CPU 统J45 线并接到触摸屏 统S485 线上即可。


    MT6100i与Premium系列PLC以Unitelway方式通讯说明

    第一:Premium系列 PLC端设端设置,    PLC  设置端口 CTER  AUX接口与可以与MT6100i通信信:协数设置 PLC 口 通信参 ,  设 置,PLC设置为主站等步骤。

    2a72115f6abde38d0a8299a94607ab51.png

    第二步:对HMI程序设端设置:添加 TE UniTelway驱动,设置接口类型与通信参

    8092858de7e8638d4268f2620e349fc4.png

    第三步:务必保证触摸屏与 PLC 通讯电缆接线正确,接线方式如下:

    ca843a805820f3e0b00afe622592993b.png


    威纶通 tk6070ih 与 M340 通讯说明

    1、触摸屏与 M340PLC 之间通讯线对接线序如下

    86c25124a73b7ac049229502bc12fe5d.png

    RJ45的RS485 端口定义如下图:

    41e05e16592dfc87dcc1919e14e93daa.png

    2、下位机 modbus 口设置如图

    d5a19b88e7f6e67f701aaa4927378df6.png

    设置从站 波特率 据 校验 物理线路为 485 

    3、触摸屏画面    系统参 设置

    5ba1433150a382e7999eaa3ae2cdffa6.png

    其中本机 PLC 2 是由我们自己建立  ,点 新增可以建立,其中设置如下

    c6b32852070f255eb7346ee8a5cba4f8.png

    我们选择 是 统S485 通信,设置照图设置,其他默认C点 编辑—系统参 设置从 MODBUS 统TU 到 Local HMI 传输属于输出量,反过来则是输入量,bit 是 离散量,word   是模拟量。每步个地址 据交换需要新增步个。

    展开全文
  • 1、昆仑通态做主机用昆仑通态组态软件开发,STM32单片机做从机由c语言代码; 2、在STM32单片机上,定义寄存器的开关量读取、数值采集读取的定义; 3、主机和从机通讯遵循Modbus协议; 3、昆仑通态主机按从机的...
  • 闲来无事,做个记录,触摸使用迪文DGUS-T5D2 10.1寸触摸单片机STM32F013系列,欧姆龙CP1E-N40PLC,之所以通过单片机转发是因为迪文触摸价格的巨大优势,核算单片机成本后,10.1寸触摸价格不超过400元,...

    闲来无事,做个记录,触摸屏使用迪文DGUS-T5D2 10.1寸触摸屏,单片机STM32F013系列,欧姆龙CP1E-N40PLC,之所以通过单片机转发是因为迪文触摸屏价格的巨大优势,核算单片机成本后,10.1寸触摸屏价格不超过400元,其次就是迪文触摸屏质量还算可以,进入正题。

    1.迪文触摸屏配置:

            1)串口配置:迪文触摸屏T5触摸屏串口配置在文件T5UID2.CFG文件,具体配置参看迪文手册:"T5UID2应用指南.PDF",我配置的串口参数:115200,8,1,N;

            2)  界面配置:根据使用的触摸屏分辨率,做一张相应分辨率的图片,做好按键,数据显示框,再做一张键盘页面,通过迪文软件转换成迪文屏幕可以使用的图片将两张图片加载到软件;

          注:T5屏的0x1000以上变量地址用户使用,这里需要注意。

                     (1)配置按键:在图片的按键部分放置一个“按键返回”控件,配置:按键地址0x1000,键值0,勾选“数据自动上传”;

                              键盘按键配置:在图片的按键部分放置多个“基础触控”控件,根据提示设定键值:0-9,退格,确认,取消等键值,设定好后放在对应位置;

                     (2)显示框配置:在图片显示框部分放置一个“数据变量显示”控件,变量地址0x1100;

                    (3)输入框配置:这个需要做好键盘;在图片显示框部分放置一个“变量数据录入”控件,变量地址0x2100,勾选“数据自动上传”,键盘设置,选择做好的键盘,设置好对应的显示位置坐标(这里是控制用户输入的数据显示在屏幕那个位置)。

        至此,触摸屏配置完成;

    2.STM32F103VCT6

    配置:

         1)硬件:迪文T5触摸屏使用无壳体屏串口输出电平为TTL电平,由于传输距离有5米左右(单片机还有其他用途,距离较远),所以触摸屏端使用232芯片转换为232电平.

                     屏端:24V输入使用LM7805输出5V给屏和MAX232供电,屏幕供电的24地很干净,所以不做隔离;

                    单片机和屏端:同样24V输入使用LM7805输出5V再通过LM1117-3.3输出3.3给STM32F103VCT6和SP3232EEN供电,单片机端232转换芯片使用兼容3.3V的SP3232EEN;

                     CP1E端:使用RS232或者RS485选件板;

                    单片机对CP1E端:使用MAX3485或者SP3232EEN连接转口,芯片选择兼容3.3V;

       至此,硬件配置完成;

        2)软件:

                      1)PCL-CP1E:使用hostlink mode-c协议,为接收到命令后主动响应,所以PLC端不需要编程;

                      2)STM32软件使用“STM32CubeMX”配置,生成KEIL MDK5工程,很简单,网上有很多教程,需要使用什么功能可以去查;

    3.通讯协议:

            1)STM32F103VCT6与T5屏按键的实现:

                  按键下发给单片机的数据格式:  5A  A5  06 83 10 00 01 00 00

                          5A A5:帧头,可以在T5UID2.CFG文件修改;

                                06:该字节后接收的数据长度;

                                83:迪文指令;

                           10 00:变量地址;

                                01:数据长度,单位“字”;

                           00 00:数据,这里是前面按键控件键值设定多少,接收就是多少;

              然后根据接收的键值不同来控制PLC-CP1E的开关量,在这里我接收到上个按键之后,是控制PLC的H1.00的打开和关闭,

    下面阐述开关PLC的H1.00;

             因为H区的写入是按字写入的,所以在写H1.00之前,需要保持H1.01--H1.15的状态不变,我们先读取H1整个字节的状态,然后对第0位取反后在写入PLC的H1寄存器,hostlink mode-c协议为ASCII码:   

              读H区的指令格式如下:@00RH+0001+0001+FCS校验(两字节)+*+结束码,对应单片机程序如下:

                usart2_txBuf[0]  = 0X40;//@  0X40
                usart2_txBuf[1]  = 0X30;//0  0X00
                usart2_txBuf[2]  = 0X30;//0     0X00
                usart2_txBuf[3]  = 0X52;//R     0X52
                usart2_txBuf[4]  = 0X48;//H     0X48
            
                usart2_txBuf[5]=(uint8_t)((start_addr>>12)&0x000f);
                usart2_txBuf[5]=HEX2ASCII(usart2_txBuf[5]);        
                usart2_txBuf[6]=(uint8_t)((start_addr>>8)&0x000f);
                usart2_txBuf[6]=HEX2ASCII(usart2_txBuf[6]);            
                usart2_txBuf[7]=(uint8_t)((start_addr>>4)&0x000f);
                usart2_txBuf[7]=HEX2ASCII(usart2_txBuf[7]);    
                usart2_txBuf[8]=(uint8_t)(start_addr&0x000f);
                usart2_txBuf[8]=HEX2ASCII(usart2_txBuf[8]);//4字节地址
                
                usart2_txBuf[9]=(uint8_t)((len>>12)&0x000f);
                usart2_txBuf[9]=HEX2ASCII(usart2_txBuf[9]);        
                usart2_txBuf[10]=(uint8_t)((len>>8)&0x000f);
                usart2_txBuf[10]=HEX2ASCII(usart2_txBuf[10]);            
                usart2_txBuf[11]=(uint8_t)((len>>4)&0x000f);
                usart2_txBuf[11]=HEX2ASCII(usart2_txBuf[11]);    
                usart2_txBuf[12]=(uint8_t)(len&0x000f);
                usart2_txBuf[12]=HEX2ASCII(usart2_txBuf[12]);//读取长度
                
                XORCheck(usart2_txBuf, 13);
                usart2_txBuf[13]=((FCS_CHECK>>4)&0x0f);
                usart2_txBuf[13]=HEX2ASCII(usart2_txBuf[13]);    
                usart2_txBuf[14]=(FCS_CHECK&0x0f);
                usart2_txBuf[14]=HEX2ASCII(usart2_txBuf[14]);//校验
                FCS_CHECK=0;
                
                usart2_txBuf[15]=0X2A;// "*"   0X2A
                usart2_txBuf[16]=0X0D;//   结束码

       单片机等待PLC返回数据后,返回数据为ASIIC码形式,处理数据后并对H1的第0位取反,在将对应数据写到PLC的H1寄存器;           写H区指令如下:@00WH+0001(写入的开始地址)+0001(写入数据)+FCS校验+*+结束码,对应单片机程序如下:

        usart2_txBuf[0]  = 0X40;//@   0X40
        usart2_txBuf[1]  = 0X30;//0   0X00
        usart2_txBuf[2]  = 0X30;//0     0X00
        usart2_txBuf[3]  = 0X57;//W     0X57
        usart2_txBuf[4]  = 0X48;//H     0X48
        
        usart2_txBuf[5]=(uint8_t)((start_addr>>12)&0x000f);
        usart2_txBuf[5]=HEX2ASCII(usart2_txBuf[5]);        
        usart2_txBuf[6]=(uint8_t)((start_addr>>8)&0x000f);
        usart2_txBuf[6]=HEX2ASCII(usart2_txBuf[6]);            
        usart2_txBuf[7]=(uint8_t)((start_addr>>4)&0x000f);
        usart2_txBuf[7]=HEX2ASCII(usart2_txBuf[7]);    
        usart2_txBuf[8]=(uint8_t)(start_addr&0x000f);
        usart2_txBuf[8]=HEX2ASCII(usart2_txBuf[8]);
        for(i=0;i<len;i++)
        {
            usart2_txBuf[i*4+9]=(uint8_t)(((*(cio_data+i))>>12)&0x000f);
            usart2_txBuf[i*4+9]=HEX2ASCII(usart2_txBuf[i*4+9]);
            
            usart2_txBuf[i*4+10]=(uint8_t)(((*(cio_data+i))>>8)&0x000f);
            usart2_txBuf[i*4+10]=HEX2ASCII(usart2_txBuf[i*4+10]);
            
            usart2_txBuf[i*4+11]=(uint8_t)(((*(cio_data+i))>>4)&0x000f);
            usart2_txBuf[i*4+11]=HEX2ASCII(usart2_txBuf[i*4+11]);
            
            usart2_txBuf[i*4+12]=(uint8_t)((*(cio_data+i))&0x000f);
            usart2_txBuf[i*4+12]=HEX2ASCII(usart2_txBuf[i*4+12]);
        }
        XORCheck(usart2_txBuf, 13);
        usart2_txBuf[len*4+9]=((FCS_CHECK>>4)&0x0f);
        usart2_txBuf[len*4+9]=HEX2ASCII(usart2_txBuf[len*4+9]);    
        usart2_txBuf[len*4+10]=(FCS_CHECK&0x0f);
        usart2_txBuf[len*4+10]=HEX2ASCII(usart2_txBuf[len*4+10]);
        FCS_CHECK=0;
                
        usart2_txBuf[len*4+11]=0X2A;// "*"   0X2A
        usart2_txBuf[len*4+12]=0X0D;//结束码

    cio_data为定义的数组,里面存放需要写入的数据值,H1的第零位取反后放入这里,len位写入寄存器的长度;这里我们只写入H1,所以len=1;

    至此,更改H1.00结束;

    同理根,据上述操作使用WD和RD命令可以读取和写入PLC的D区;

           2)写入T5屏,使T5屏显示读取的PLC数据:

                使用WD命令读取PLC的数据后,将plc的数据处理,然后发送给触摸屏,发送触摸屏程序如下:

                com_buf[0] = 0x5a;
                com_buf[1] = 0xa5;
                com_buf[2] = 0x05;
                com_buf[3] = 0x82;


                com_buf[4] = 0x11;//写入触摸屏的地址
                com_buf[5] = 0x00;

          
               com_buf[6] = 0x00;

               com_buf[7] = 0x05;  写入的数据5

                HAL_UART_Transmit(&huart1,com_buf,8,20);//STM32F103发送函数;

    触摸屏供电和RS232<-->TTL硬件电路如下图:

    实物图,由于没有正好大小的电容,电感,所以看上去有点歪:

     

          

    展开全文
  • :介绍了PIC单片机与威伦触摸通讯方法及实现过程。简要分析了Modbus通讯协议,给出了PIC单片机与 触摸异步串行通讯的硬件连接图和软件主要功能流程图,对测试结果进行了分析。实验验证:该方法稳定可靠,目前...
  • 此款OLED采用IIC的通讯协议,与STM32单片机的IIC1模块连接进行通讯。IIC接口的0.96OLED 首先我们要对单片机进行基本的时钟、IIC通讯设置。ST推出的STM32CUBEIDE使我们可以通过图形界面的很方...

    OLED屏幕应用十分广泛,我们可以使用STM32单片机对其进行控制,使其显示我们需要的各种数字、字母、汉字、图画等。我们此次使用下图这款非常普遍的0.96寸OLED液晶屏。此款OLED屏采用IIC的通讯协议,与STM32单片机的IIC1模块连接进行通讯。

    1bceeea30fd50da0ccb38e8428097952.png

    IIC接口的0.96OLED屏

    首先我们要对单片机进行基本的时钟、IIC通讯设置。ST推出的STM32CUBEIDE使我们可以通过图形界面的很方便的设置单片机的时钟、IIC外设的基本参数。我们设置的时钟参数、IIC外设参数详见下图。

    a70c19f4a3b40530331330aef3ee0eb4.png

    STM32单片机的时钟配置

    203cd5de2e3ddd8ce0abdcd5bd9a37b5.png

    STM32单片机中IIC配置

    设置完上述基本参数后我们点击STM32CUBE中的代码生成,可以生成基础代码。对于OLED驱动代码,网上有好多例程或者买部件时商家也会提供,这些代码我们可以加以参考。但这些驱动代码大多为IO口模拟的IIC操作屏幕,我们使用HAL库函数需要对驱动代码中的命令发送函数部分,数据发送函数部分加以修改。HAL库中把IIC通讯协议做了集成封装,使我们不需要特别了解IIC通讯的具体步骤及具体形式,只要弄清几个参数就可以使我们初学者快速上手,实现两设备之间的IIC的通讯。但是当熟悉后还是建议系统的学习下IIC通讯,这样我们使用其它单片机时也可轻松应对。下面屏蔽掉的代码为OLED驱动历程中的IO口模拟IIC通讯的整个过程,即:发送开始指令、发送设备地址、等待应答、发送设备中内存地址、等待应答、发送具体指令、等待应答、发送结束指令。库函数HAL_I2C_Mem_Write()已经封装了以上IIC通讯间的所有指令,我们直接调用此函数即可。修改的驱动代码具体如下:

    void Write_IIC_Command(unsigned char IIC_Command){     /*IIC_Start();   Write_IIC_Byte(0x78);            //Slave address,SA0=0IIC_Wait_Ack();   Write_IIC_Byte(0x00);//write commandIIC_Wait_Ack();   Write_IIC_Byte(IIC_Command);IIC_Wait_Ack();   IIC_Stop();*/     HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, &IIC_Command, 1, 100);}
    void Write_IIC_Data(unsigned char IIC_Data){   /*IIC_Start();   Write_IIC_Byte(0x78);//D/C#=0; R/W#=0IIC_Wait_Ack();   Write_IIC_Byte(0x40);//write dataIIC_Wait_Ack();   Write_IIC_Byte(IIC_Data);IIC_Wait_Ack();   IIC_Stop();*/HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT, &IIC_Data, 1, 100);}

    修改完上述代码后单片机就可以与OLED屏进行通讯。但如果想要OLED显示具体内容的话,我们还需向OLED发送相应内容的点阵代码。点阵代码可以通过字摸提取软件进行生成。提取内容见下图:

    b4e0a78a9aa7e736bf731006dcad0ed3.png

    汉字字模提取

    63328db7adaa1b021a1166e23652d242.png

    图片的字模提取

    bb270235f3bb4419f6cc55a50bb69eb7.png

    小鱼图片字模提取后生成的点阵代码

    最后我们可以把这些提取的字模代码写入单片机的头文件,就可以使用OLED驱动程序中的字符串发送函数、汉字发送函数、图片发送函数来控制OLED屏幕。具体可点击后面链接查看实物视频 STM32单片机HAL库点亮OLED

    aad17d0660fd6e01ffa3fa3c8ee796f9.png

    显示数字、英文、汉字

    a6adc573042252a6797479025c050681.png

    显示小鱼图像

    展开全文
  • 通过51单片机,进行多机通讯,主机控制两个从机发送数据,数据为DS18B20所采集到的温度,并用串口显示当前温度
  • 单片机 触摸通道 usSCoilBuf[0] 8 7 6 5 4 3 2 1 usSCoilBuf[1] 16 15 14 13 12 11 10 9 usSCoilBuf[2] 24 23 22 21 20 19 18 17 usSCoilBuf[3] 32 31 30 29 28 27 26 25 usSCoilBuf...
  • 串口(触摸)组态软件+多台51单片机MODBUS RTU多机串口通信程序源码实现触摸(串口)与单片机通讯,主要是解决通讯协议的问题。本文使用开放的Modbus通讯协议,以广州易显的HMImaker触摸作主机(Master...
  • 系统以STM32单片机为核心,采用SIM900模块GSM通讯,利用μC/OS-II与μC/GUI系统进行多任务与TFT彩屏的控制,并通过STM32的串口控制GSM模块STM900实现通讯。 系统通过STM32的SPI接口实现触控从而实现系统的输入、...
  • 0.96英寸oled单片机iic通讯中文说明,0.96英寸olediic通讯格式和时序
  • 单片机串行口与PC机通讯.doc 单片机串行通信发射机.doc 单片机和计算机的串行通信.doc 单片机课程设计1——新颖60秒LED旋转电子钟.doc 单片机课程设计2——数控低频正弦信号发生器.doc 单片机课程设计3——LED点阵双...
  • (1) 段码的驱动程序跟数码管的静态驱动程序一样,只要我们弄懂了怎样显示一个基本单位,根据此基本单位编写一个字库表,然后 用与(&...第二种:单片机用3个IO口跟HT1621进行通讯,用 HT1621驱动段码。...
  • 很多时候,工业控制或者产品设计方面受...单片机与人机界面触摸屏通讯的最简单,最有效的 2种方法,其实就是分为2种通讯协议,即工业标准的 Modbus RTU协议和工程师自己定义的 自由协议。 本实例采用其中一款人机界
  • 51 三菱PLC可读不可写Q:MT8102IQ和三菱Q系列PLC通讯无法写入PLC,但是可以读取PLC的状态和数值?A:PLC程序中"允许RUN中写入"打钩,程序下载重启后解决。52 控制不了输入点Q:触摸做了三菱PLC的X点的元件,...
  • OLED通讯示例代码,包括C51 STM8 STM32 等单片机的IIC和SPI通讯例程。
  • 通过对触摸显示的操作,实现手持部分和终端部分二者的无线通讯。系统采用大容量的SD卡作为存储部分,通过SPI将VS1003B与SD卡的数据与STM32进行交互通信。本解说器在播放时没有出现理论上的断续情况,音质较好,占用的...
  • 1、基本触控。...注意数据自动上传要勾选,否则不会给单片机发串口数据。 如果我们做了这样一个按键。 此处以按返回变量地址0000,键值0021为例: 5A A5 06 83 00 00 01 00 02 5A A5 表示:帧头 06 ...
  • 串口Modbus协议,串口的modbus协议资料,串口modbus通讯协议开发,串口之modbus协议使用技巧 本例程中用51单片机作为Modbus从机,从机的设备地址为2,从机有4个寄存器,寄存器地址分别为3,4,5,6,协议...
  • 2、驱动LCD1602,代码9个:初始化LCD1602、显示开或关和光标设置、LCD1602地址指针的设置、数据指针的位置设置、清屏操作、LCD显示写1个字节数据、LCD写入16个字节数据、LCD显示n字节数据、外加测试代码。...
  • 摘要:通过一个小型监控单元的设计实践,详细介绍了一种使用89C51...它与同类液晶显示模块相比,具有显示信息量大、亮度高、微功耗、体积小、质量轻、超薄等诸多优点,在移动通讯、仪器仪表、电子设备、家用电器等各
  • 89S52单片机的P0口外接8x1kΩ的上拉排阻与1602字符型液晶的数据线相连,P2.5、P2.6、P2.7与1602字符型液晶的三根控制线相连,组成系统的显示部分;P1口与16个按键开关相连,组成4×4行列式键盘;J4为RS232通信...
  • 51单片机例程.rar

    2021-01-09 18:11:42
    51单片机初学者非学全的学习的资料,代码、电路图、及相关说明。 各种实验01 LED灯 02 按键 03 蜂鸣器 04 继电器 05 数码管 06 LED点阵 07 动态-静态LED 08 PWM 09 步进马达 10 EEPROM 11 AD-DA转换 12 RTC实时时钟...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 152
精华内容 60
关键字:

单片机通讯屏