PLC如何与单片机进行通讯?共有三种方法!你会用几个?
原创不易,请勿抄袭!
通讯是一个工控朋友学习或者工作到一定程度不得不面对的一个难题,可也是区别新手和高手的一道分水岭,新手遇到通讯问题往往会比较抓狂,不知道如何着手,而老手即使面对没有经验的设备也会有一个大概的思路.有朋友问我关于西门子PLC与单片机通讯的问题,今天给大家汇总一下.
首先西门子PLC与单片机共有三种办法进行信号交换:
1 信号线连接.这是一种最简单的方式,即在单片机和PLC之间进行连接信号线,PLC的输入接单片机输出;PLC输出接单片机输入,这是一种最普遍的方式,通过这种方式PLC几乎可以和任何工控的控制装置连接,比如伺服系统,变频器,机器人等等!缺点是如果需要传递的信号太多,那么电缆数量也会很大,而且一旦电缆损坏,维护起来很困难!
2 自由口通讯,以前我们多次讲到过自由口通讯,而且专门讲解过ASCII码,有需要的朋友可以去我以前的文章里去找,今天不重复了。
3 第三种方法是利用ModBus协议进行通讯。
本节主要讲解以PLC作主站,51单片机作从站,用ModBus协议进行通讯。PLC读取单片机保持寄存器区的数据。S7-200PLC程序主要通过调用Modubs RTU 主站指令库完成。
一、调用 Modbus RTU 主站初始化和控制子程序
使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:
各参数意义如下:
1 EN 使能:必须保证每一扫描周期都被使能(使用 SM0.0)
2 Mode 模式:为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议
3 Baud 波特率:支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
4 Parity 校验:校验方式选择;0=无校验,1=奇较验,2=偶较验。
5 Timeout 超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒(1 秒),允许设置的范围为 1 - 32767。
注意: 这个值必须设置足够大以保证从站有时间响应。
6 Done 完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作(见例程)
7 Error 初始化错误代码(只有在 Done 位为1时有效): 0= 无错误,1= 校验选择非法,2= 波特率选择非法,3= 模式选择非法。
二、调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;
各参数意义如下:
常见的错误:
如果多个 MBUS_MSG 指令同时使能会造成 6 号错误库存储区被程序其它地方复用,有时也会造成6 号错误从站 delay 参数设的时间过长会造成主站 3 号错误从站掉电或不运行,网络故障都会造成主站 3 号错误。
含义如下:
1 EN 使能:同一时刻只能有一个读写功能(即 MBUS_MSG)使能
注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见例程)。
2 First 读写请求位:每一个新的读写请求必须使用脉冲触发
3 Slave 从站地址:可选择的范围 1 - 247
4 RW 从站地址:0 = 读, 1 = 写;注意:
1. 开关量输出和保持寄存器支持读和写功能
2. 开关量输入和模拟量输入只支持读功能
5 Addr 读写从站的数据地址:选择读写的数据类型
00001 至 0xxxx - 开关量输出
10001 至 1xxxx - 开关量输入
30001 至 3xxxx - 模拟量输入
40001 至 4xxxx - 保持寄存器
6 Count 数据个数;通讯的数据个数(位或字的个数)
注意: Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)
7 DataPtr 数据指针:
1. 如果是读指令,读回的数据放到这个数据区中
2. 如果是写指令,要写出的数据放到这个数据区中
8 Done 完成位 读写功能完成位
9 Error 错误代码:只有在 Done 位为1时,错误代码才有效
0 = 无错误
1 = 响应校验错误
2 = 未用
3 = 接收超时(从站无响应)
4 = 请求参数错误(slave address, Modbus address, count, RW)
5 = Modbus/自由口未使能
6 = Modbus正在忙于其它请求
7 = 响应错误(响应不是请求的操作)
8 = 响应CRC校验和错误
-
101 = 从站不支持请求的功能
102 = 从站不支持数据地址
103 = 从站不支持此种数据类型
104 = 从站设备故障
105 = 从站接受了信息,但是响应被延迟
106 = 从站忙,拒绝了该信息
107 = 从站拒绝了信息
108 = 从站存储器奇偶错误
三、需要从站支持的功能及Modbus 保持寄存器地址映射
为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:
Modbus 保持寄存器地址映射举例:
四、S7-200PLC程序
五、单片机程序;STC11F04E单片机,9600波特率
START: MOV TMOD,#21H ;定时器1是8位再装入,定时器0为16位定时器
MOV TH1,#0FDH;预置初值(按照波特率9600BPS预置初值)
MOV TL1,#0FDH; 0FDH=9600=11.0592
MOV TH0, #0DCH;88H ;8800=12t,7000=stc1t
MOV TL0, #00H
ORL IE, #92H ;EA=1,ES=1;ET0=1
SETB PS ;串口中断优先
SETB TR1 ;启动定时器1
MOV 98H,#50H ;scon
MOV P1M0,#01000000b ; P1M0=0 P1M1=0双向口 P1M0=1 P1M1=0输入口 P1M0=0 P1M1=1推挽输出20ma
MOV P1M1,#10000000b
MOV WDT_CONTR ,#27H 看门狗设置使能
QL0: MOV A,#00H
MOV R0,#10H
MOV R2,#9BH ;10-ABH清零
CLEAR: MOV @R0,A
INC R0
DJNZ R2,CLEAR
CLR FLAG
CLR FLAG_0
SETB TR0 ;启动定时器0
;ANL AUX,#07FH ;p3.0p3.1当串口
ORL AUX,#80H ;p1.7,p1.6当串口
CLR P3.7 ;485芯片接收使能
WA1: ;MOV WDT_CONTR ,#37H;喂狗; SETB CW
JNB FLAG_0,WA1 ;FLAG_0=1表示已经接收到上位机数据
CLR TR0
MOV A,2CH ;检查设备地址是01h码,设本机地址码是1
MOV R2,A
XRL A,#01H
JNZ QL0
ACALL FSZJ ;FH: DB 01H,03H,16,00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,10H,11H,12H,0DH,0EH,0FH,10H,11H,12H,13H,14H,15H,16H,17H,18H,19H,1AH,1BH,1CH,1DH,1EH,1FH;18
ACALL DELAY
CALL FZJ
AJMP QL0
FZJ: MOV R0,#2cH ;向主机发送数据子程序
FZJ0: MOV R2,#10H
FZJ1: CLR EA
ANL AUX,#07FH ;p3.0p3.1当串口
FZL1: MOV A,@R0
MOV SBUF,A
JNB TI,$
CLR TI
INC R0
DJNZ R2,FZL1
SETB EA
RET
FSZJ: MOV DPTR,#FH
MOV R2,#19;
ORL AUX,#80H
SETB P3.7 ;发送数据
MOV R0,#40H
FSZJA: MOV A,#0H
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R2,FSZJA
MOV R0,#40H
MOV CRCCD,#19
LCALL CRC1
MOV R2,#21
MOV R0,#40H
FSZJ2: MOV A,@R0
MOV SBUF,A
JNB TI,$
CLR TI
INC R0
DJNZ R2,FSZJ2
SETB EA
RET
FH:DB 01H,03H,16,00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,10H,11H,12H,0DH,0EH,0FH,10H,11H,12H,13H,14H,15H,16H,17H,18H,19H,1AH,1BH,1CH,1DH,1EH,1FH;18
用串口助手检测到的数据如下图。
喜欢的话请点赞并分享,您的支持是我坚持下去的动力!送人玫瑰,手有余香!
西门子S7-1200编程应用入门培训课程
西门子S7-1200编程应用入门
授课老师:
课时内容
课时介绍
第1课时.S7-1200PLC与S7-200PLC的对比01
从硬件和通信两个方面将1200的PLC与200的PLC进行对比介绍。
第2课时.S7-1200PLC与S7-200PLC的对比02
从存储器、定时器以及程序结构等几方面将1200的PLC与200的PLC进
行对比介绍。
第3课时.S7-1200CPU型号及参数介绍01
介绍SU1200PLC的模块和CPU型号及相关参数。
第4课时.S7-1200CPU型号及参数介绍02
介绍SU1200PLC的存储器的各种型号及相关参数
第5课时.S7-1200CPU硬件结构与扩展模块介绍01
介绍S7-1200CPU硬件结构与扩展模块
第6课时.S7-1200CPU硬件结构与扩展模块介绍02
介绍S7-1200CPU硬件结构与扩展模块
第7课时.MC卡的使用演示-传送卡
边讲解边演示S71200的MC卡的作用,创建过程和使用注意点。
第8课时.MC卡的使用演示-程序卡
边演示边讲述S71200的程序卡的制作过程,固态升级和作用的过程。
第9课时.S7-1200PLC的安装与接线说明01
讲述S71200的CPU、扩展模块和信号板的安装。如何统计可以安装
多少块扩展模块。
第10课时.S7-1200PLC的安装与接线说明02
对S71200中的数字量接线的输入接线的相关知识进行讲述并演示
部分操作。
第11课时.S7-1200PLC的安装与接线说明03
对S71200中的数字量输出接线的相关知识进行边讲述边用电路
图来配套演示。
第12课时.TIAPortal软件的组成及安装
讲述博图软件的构成,安装和升级的问题及知识。并最后实际演示。
第13课时.使用TIAPortal软件创建一个简单S7-
1200的项目01
介绍博图软件中的视图中一些和项目有关的工具栏的名称和用处。
第14课时.使用TIAPortal软件创建一个简单S7-
1200的项目02
简述建立S7-1200的项目的要求和步骤是什么。并在软件中实际演示。
第15课时.使用TIAPortal软件创建一个简单S7-
1200的项目03
讲解OB块、FB块、FC块及DB块的使用情况和区别
第16课时.使用TIAPortal软件创建一个简单S7-
1200的项目04
对S7-1200程序的讲解
第17课时.使用TIAPortal软件创建一个简单S7-
1200的项目05
本节课结合软件讲解建立变量表及其作用
第18课时.使用TIAPortal软件创建一个简单S7-
1200的项目06
边讲述边实操演示,在程序块中如何进行项目的程序设计。
第19课时.使用TIAPortal软件创建一个简单S7-
1200的项目07
讲述在创建项目中“下载PLC”这一步骤的操作过程。
第20课时.使用TIAPortal软件创建一个简单S7-
1200的项目08
讲述该1200项目各参数及内都配置好后,怎么在仿真软件中使用。
第21课时.S7-1200系统存储的分类01
介绍S71200系统存储有那几个区,并讲述当中的几个区的作用
第22课时.S7-1200系统存储的分类02
继续讲述系统存储的剩余的区的作用。
第23课时.S7-1200数据类型讲解01
介绍三种数据类型的概念和特点,重点讲述其存储方式。
第24课时.S7-1200数据类型讲解02
讲述S71200中的日期和时间数据类型的大小,范围等知识。
第25课时.S7-1200数据类型讲解03
简述S71200中的字符和字符串的数据类型种类,大小和范围等知识,并
讲述这些知39识是如何在程序和图形中体现出来。
第26课时.位逻辑指令-触点线圈指令
简单介绍1200PCL的指令系统包括那几大类。重点讲述了位逻辑指令中 的触点线圈指令的指令格式,指令应用和操作数内容。
第27课时.位逻辑指令-置位复位类指令
讲述置位复位指令的指令格式、指令操作数内容和注意点,要求点。
第28课时.位逻辑指令-沿脉冲类指令01
简述沿脉冲类指令的分类及其名称。重点讲述头两种沿脉冲类指令的作 用,图形表达式和操作方法,并在软件中演示过程。
第29课时.位逻辑指令-沿脉冲类指令02
继续讲述剩余的两种沿脉冲类指令的指令格式,梯形图表达式和作用。
并在软件中演示其操作过程
第30课时.位逻辑指令练习
通过两个小例子来讲述S7100中的位逻辑指令怎么使用。并在软件中实 操演示一番。
第31课时.定时器指令之脉冲定时器
简述S71200PLC中的定时器的类别,重点讲述了脉冲定时器的指令格式
和使用功能,特点。
第32课时.定时器指令之TON丨TONR丨TOF
分别讲述定时器的三个指令TON丨TONR丨TOF的指令格式,使用注意点, 使用功能。
第33课时.定时器指令举例
通过一个例子的讲解,程序设置等过程来讲述定时器指令是如何使用的
第34课时.计数器指令讲解001
简述计数器指令的作用,S71200的计数器格式类型及每个类型的程序操 作步骤。
第35课时.计数器指令讲解002
重点讲述加减计数器格式的程序操作步骤。并在软件中实操演示。
第36课时.触点比较指令33
叙述触点比较指令的指令格式内容,指令的应用注意点和功能。并软件 演示其作用。
第37课时.范围比较指令
叙述范围比较指令的作用及其特点,并在软件中实操演示所讲知识点。
第38课时.数学函数指令01
讲述S71200中的数学函数指令有哪些指令,并叙述其简单的数学运算指 令是什么。
第39课时.数学函数指令02
继续讲述计算指令中一些换算方面,和结果有关的指令的内容。
第40课时.数学函数指令03
讲述INC指令和DEC指令的使用范围和指令格式内容等知识。
第41课时.数学函数指令04
讲述MIN,MAX和LIMIT三个指令的定义,指令格式等内容,并在软件中演 示其使用过程。
第42课时.数据处理指令01
简述数据处理指令中的移动类指令的常用指令有哪些。其指令格式分别
是什么。
第43课时.数据处理指令02
讲述数据处理指令中的块填充指令,块移动和交换等几种指令的指令格 式,执行功能等知识。
第44课时.数据处理指令03
讲述数据处理指令中的读取域和写入域两个指令的指令格式,用法和执
行功能。
第45课时.数据处理指令04
简述数据处理指令中的转换值、浮点数转整数、标准化等指令的指令格 式,指令功能和应用场合等知识。
第46课.时跳转指令
讲述1200PLC指令系统中的时跳转指令的指令格式,程序图中的位置和
应用注意点等知识。
第47课时.逻辑运算指令
先简述逻辑运算指令有哪些类型,并指出这些类型的指令格式,应用功 能和特点。
第48课时.移位指令
讲述移位指令的类型及适用途径,并在软件中实操演示其应用过程。
第49课时.基本位逻辑指令的综合练习(一)01
先简述本章节学习内容和学习目标是什么?再具体讲述一个案例的实际 操作过程。
第50课时.基本位逻辑指令的综合练习(一)02
第51课时.基本位逻辑指令的综合练习(二)01
第52课时.基本位逻辑指令的综合练习(二)02
第53课时.基本位逻辑指令的综合练习(三)01
第54课时.基本位逻辑指令的综合练习(三)02
相关问答
博图V16能组态怎么从固件版本V4.51的PLC上载程序?
1可以使用软件博图V16进行组态2从固件版本V4.51的PLC上载程序需要使用博图V16软件的在线修改功能,在PLC上选择Online->OnlineModify,选择上传程序即可。3....
2022湖南对口招生考试电子电工类专业考试基本要求及考试大纲...
电子电工类专业综合知识考试基本要求及考试大纲一、考试基本要求(一)基本知识和基本技能的考试要求1.掌握电工技术和电子技术专业的基础知识、基...
什么是plc,有什么用途,和51系列单片机有什么区别?
PLC是programlogiccontrol的简称,译成中文是“可编程序控制器”。它是一个内部装有单片机和很多电子元器件的、用于设备自动控制的完整装置。而单片机从功能上...
求一个三菱plc4位密码锁程序-ZOL问答
51单片机4位电子密码锁我经常做这个,可以帮你,有用(0)回复baludong有例子自己设计个键盘电路再用EEPROM存密码每次开机核对一下再转入程序有用(0)回复...
大仙们十万火急!内蒙古附近的隧道PLC编程软件,隧道PLC编程...
[回答]服务很耐心。而且还终身售后。奥利给!!要想买便宜的话,就去淘宝买个,搜国产plc,有很多的,好多用三菱plc编程,然后转换成51的目标代码写到单片机器...
懂OMRONPLC的进来,我在做编码器的实验,接的是OMRON的编码器A...
[回答]PLC是什么型号的?CP系列的A、B相接的是0.08、0.09,A270是高数计数的低位保存通道,高位是A271,要读取高数计数值要读两个通道PLC是什么型号的?CP系...
89c51的封装属于什么类型?
AT89C51的封装形式:DIP40、PLCC44、TQFP44、PQFP44。AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasa...
电子专业的进,PLC,PLD,EDA,DSP,单片机,嵌入式系统都是...
PLC主要是指数字运算操作电子系统的可编程逻辑控制器,用于控制机械的生产过程。可编程逻辑器件PLD(programmablelogicdevice):PLD是做为一种通用集...
那些企业能用到plc特别是西门子的plc主要卖给那些企业?
例如做做轧机、高炉控制、锅炉控制、重型自动化产品等。很广的.你在招聘网站上搜索一下是最快的。要多少企业名称都有。做什么行业的都有。比如你在51job搜...
老表们,有谁知道么!正规PLC编程培训专业培训学校,PLC编程...
[回答]TV,CV,SD,CV2,D都是触摸屏所连接的PLC中的数据存储区的编号,他们分别是以下含义:1.TV:计时器的当前计时值;2.CV:16位计数器的当前计时值;3.CV2:32位...