台达PLC与单片机的通讯

        最近由于工作需要用PLC与单片机通讯,以此用PLC来控制单片机,使单片机作为一个IO扩展模块来使用。这是第一次尝试自己写代码来使两个器件通讯,故在此做一下笔记,顺便巩固一下在这个过程中所学到的知识。

        本次使用的PLC型号是台达的DVP26SE11T,通过基于RS485的MODBUS协议连接单片机,使用MODBUS的RTU模式,把PLC作为主机,单片机作为从机。

一、首先需要把PLC的通讯和单片机的通讯设置一致,本次实验中的单片机的通讯格式为:波特率 115200、奇偶校验无、数据位 8、停止位 1 ,所以PLC的通讯格式也应设成相同,以下是PLC的通讯设置代码

 M1002:开启正向 (RUN 的瞬间’On’) 脉冲

D1120:COM2 (RS-485) 通讯格式设定

M1120:COM2(RS-485)通讯格式保持用,设置后变更 D1120 无效

D1129:COM2(RS-485) RS-485 通讯逾时异常设置 (ms)

M1143:COM2(RS-485)的 ASCII/RTU 模式选择 (Off 时为 ASCII 模式 On 时为 RTU 模式)

M1161:8/16 位处理模式 (On = 8 处理模式)

其中D1120的设置:

根据PLC的手册,D1120 是本PLC设定485通讯口通讯格式的寄存器,设定格式如下图:

​根据单片机的通讯格式 :波特率 115200、奇偶校验无、数据位 8、停止位 1 ,b15~b1应该为0000 0000 1100 0001,转化为16进制即为00C1,故D1120设置为16#00C1。

二、之后是控制接发数据,本实验直接读取和发送多笔数据,所以只用到H03(读取多笔字符(Word)装置)和H10(多笔字符(Word)装置数据写入) 两个功能码。这里需要注意,PLC与单片机的功能码需要通用,如果对功能码的定义不一样,则不能准确的发送接收数据。

 代码如下:

其中的MODRW 功能:MODBUS 读写数据

 接收数据代码解析:

S1:单片机作为从站,通讯地址为0X01,所以PLC作为主机通讯地址也需要设置为0X01,所以S1设置为16#0001(H0001);

S2:要接收单片机的多个点位,用到功能码H03(读取多笔字符(Word)装置),所以S2设置为16#0003(H0003);

S3:本次实验用到的单片机有16个输入,根据单片机的MODBUS协议,读取16个输入点位的地址为0X00FF,所以S3设置为16#00FF(H00FF)

S:因为PLC自带设置了MODRW指令读取的数据的寄存器(D1296~D1311),D1296~D1311所以这个数据用不上,可以随意设置一个空寄存器;

     在 ASCII 或 RTU 模式,PLC COM2 会将传送出去的数据储存在 D1256~D1295,而且回传的 数据会被储存在 S 操作数开始连续的寄存器中,并且自动将转换后的 Hex 数值后储存 D1296~D1311

N:读取的数据长度为1

写入数据代码解析:

S1:单片机作为从站,通讯地址为0X01,所以PLC作为主机通讯地址也需要设置为0X01,所以S1设置为16#0001(H0001);

S2:要接收单片机的多个点位,用到功能码H10(多笔字符(Word)装置数据写入),所以S2设置为16#0010(H0010);

S3:本次实验用到的单片机有16个输出,根据单片机的MODBUS协议,写入16个输入点位的地址为0X00FF,所以S3设置为16#00FF(H00FF)

S:把D50作为写入的寄存器,在D50内设置数值,即可控制输入;

N:写入的数据长度为1

三、最后是处理接法数据

       处理发送数据

    把K4M2000赋值给D50,这样通过控制M2000~M2015的值即可控制单片机的16个输出。例如假设要使单片机的Y4,Y8,Y11,Y15的LED灯亮灯(有输出),那么M2000~M2015的值需要分别为0001 0001 0010 0010,则K4M2000的值为4386(十进制),那么D50为K4386(二进制0001 0001 0010 0010),这样就可在PLC程序中通过控制M2000~M2015来控制单片机的Y1~Y16了。

        处理接收数据

    将MODRW指令通过功能码读到存在D1296里的数据赋值给K4M3000,这样M3000~M3015即可以表示X1~X16的值。例如当D1296的值为8481(十进制),那么K4M3000为K8481,M3000~M3015的值分别为 0010 0001 0010 0001,表示单片机板上的X1~X16的值分别为0010 0001 0010 0001,说明这时单片机板的输入状态为X3, X8, X11, X16的LED灯亮(有输入),其他点的LED灯灭(无输入),这样就可以通过M3000~M3015的状态来判断X1~X16的状态了。

四、综上所述,用PLC控制单片机的输入输出,使其作为一个IO扩展模块来使用是可行的。

 总结:

1.使用MODBUS协议来通讯时,两个通讯元件之间的通讯格式需要设置成一样;

2.通过MODBUS协议使两元件通讯时,功能码的定义一定要一致。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 台达PLC与串口助手通讯是一种常见的工业自动化控制方式。PLC(可编程逻辑控制器)是一种用于工业自动化控制的电子设备,而串口助手是一种用于串口数据传输的工具软件。 在使用台达PLC进行自动化控制时,需要与其进行通讯以实现对设备的控制与监控。在此过程中,串口助手则起到了重要的作用。通过串口助手,我们可以将数据传输给台达PLC,还可以从台达PLC接收到其反馈的数据信息。 通常,我们需要将串口助手与台达PLC进行连接,以便进行数据传输和控制。在这个过程中,需要首先确定通讯协议,然后通过串口将数据进行传输。一般常用的通讯协议有MODBUS、OPC和TCP等。 总的来说,台达PLC与串口助手通讯是实现工业自动化控制的一种常见方式。通过串口助手,我们可以方便地与PLC进行数据传输,实现设备的控制与监控。因此,熟练掌握这种通讯方式对工业自动化控制工程师而言非常重要。 ### 回答2: 台达PLC是一种工业自动化控制装置,常常应用于自动化生产线的控制以及机器人控制等场景。而串口助手则是一种串口调试工具,用于串口通信设备的测试与调试。在设备间进行数据传输时,需要进行通讯协议的制定以确保数据的可靠性和正确性。 要使台达PLC与串口助手进行通讯,需要明确通讯协议以及通讯方式。通讯协议可以选择Modbus或通达协议等,通讯方式可以选择串口通讯或者以太网通讯。在具体的通讯过程中,需要先通过串口助手对PLC进行设置,如设置通讯方式、协议等。然后在PLC端进行地址映射,将需要传输的数据与PLC内部的寄存器或变量进行关联。 当串口助手发送数据时,PLC会根据映射关系将数据进行存储或操作。同时,PLC也可以向串口助手发送数据,进行状态或数据的同步。在整个通讯过程中,需要注意通讯的实时性和可靠性,以及数据的正确性和安全性。 总之,台达PLC与串口助手的通讯是一个比较复杂的过程,需要进行详细的设置和协议制定,以确保通讯的正确性和稳定性。而这种通讯方式可以应用于工业自动化生产线、机器人控制等领域,提高生产效率和自动化程度。 ### 回答3: 台达PLC可以通过串口与电脑上的串口助手进行通讯。串口助手是一款串口调试工具,可以进行串口数据的收发、调试和分析。首先,需要在PC机上连接PLC和串口助手的串口线,并确定两者串口参数一致。然后,在串口助手中设置好串口号、波特率、数据位、停止位和奇偶校验等参数,确保与PLC通讯时的参数设置正确。接着,在串口助手中输入PLC的地址码和指令码等相关信息,如读写寄存器的地址、长度和数据内容等,发送给PLCPLC接收到命令后按照指令执行处理,并将处理结果返回给串口助手。串口助手接收到数据后进行解码处理,并将结果显示在界面上。通过串口助手与PLC通讯,可以实现对PLC的监控、调试和控制,为自动化生产提供了便利和保障。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值