西门子PLC模块CPU1211C西门子代理商 西门子总代理西门子PLC模块CPU1211C西门子代理商 西门子总代理西门子PLC模块CPU1211C西门子代理商 西门子总代理西门子1200PLC实用定位控制程序案例引言本文是一篇综合性比较强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好地将所学知识结合起来。
开发平台采用西门子TIA Portal V16编程软件编写运动控制程序,实现PLC(S7-1200系列:CPU1214C DC/DC/DC )对步进电机的控制,再通过编写ModbusTCP程序,将控制地址进行映射,从而方便上位机(VS 2019开发)与PLC进行通信,最终实现步进电机的运动方向、速度及距离的灵活控制。
涉及硬件:开关电源、S7-1200PLC、步进驱动器、步进电机、单轴模组、限位开关涉及软件:TIA Portal V16、VS2019、ModbusPoll(用于测试通信)硬件接线PLC编程 上位机开发思路为了便于操作,需要配一个HMI人机界面来进行使用。
这个的HMI形式是比较多样化的,如触摸屏、组态软件等,但是这里,我们采用目前比较流行的方式——C#开发上位机,来供用户使用。
C#开发上位机相对于传统的组态软件,各自都有自己的优缺点,主要体现在如下三个方面:功能限制:组态软件对于一些特定的需求或者逻辑,会有一定的局限性,使用上也受到软件本身的约束;C#开发上位机完全自主开发,几乎不存在功能上的限制,并且扩展方便。
技术要求:组态软件最大的优势在于方便,因为它本身都集成了一些通用协议和元件,只需要按照使用说明进行组态配置即可;C#开发需要完全自己搭建框架和实现底层代码,对开发者的技术要求会更高一些。
价格成本:组态软件需要按套、按点位收费,意味着每个项目无形中都有一个基础成本;C#开发上位机自主开发,不需要二次授权费用,并且开发一套之后,可以快速应用到其他项目中。
采用C#上位机开发,首先需要考虑的是通信问题。
西门子S7-1200支持很多种不同的通信协议,包括S7、ModbusTCP、TCP/IP、UDP、OPC等,从开发成本上来说,我们优先考虑S7和ModbusTCP,对于S7和ModbusTCP通信协议,比较一下两者的优缺点:S7协议为西门子内部协议,协议本身不公开,需要调用或者自己开发通信库,使用S7通信协议需要勾选CPU中的允许来自远程对象的PUT/GET通信访问。
ModbusTCP为公开、免费协议,可以自己开发通信库或者使用开源库,使用ModbusTCP通信协议需要编写一定的PLC程序来实现地址映射。
从公开免费和使用范围的角度来考虑,这里采用ModbusTCP通信协议,因为你学会了ModbusTCP,意味着市场上的大部分仪表、PLC通信你都可以搞得定,PLC程序编写如下所示:1、创建DB块这里首先创建一个DB块,里面包含了常用的一些操作和参数设置,值得注意的是,由于Modbus保持型寄存器的Bit位操作比较麻烦,因此这里我们统一使用Word类型来代替Bit。
2、Modbus地址与PLC地址的映射(控制位) 3、Modbus地址与PLC地址的映射(参数地址) 4、ModbusServer程序编写 5、上位机UI界面设计6、ModbusTCP通信库上位机开发功能实现的核心在于ModbusTCP通信库编写,由于Modbus协议是公开免费,可以自己根据Modbus协议来开发,也可以使用开源的Modbus库,如NModbus等,有了ModbusTCP通信库之后,我们可以将更多的精力放在业务处理及逻辑处理上面。
7、ModbusTCP通信点表上位机开发功能1、首先创建一个Windows窗体应用项目,项目名称为thinger.cn.MotionPro。
2、日志显示功能:日志显示采用ListView进行显示,绑定一个ImageList用来区分信息、报警、错误,添加日志方法的参数包含日志等级及日志内容。
3、自己开发ModbusTCP通信库或者使用开源库,该库应该具备建立连接、断开连接、预置寄存器、读取寄存器的功能。
4、建立连接和断开连接:这里通过按钮实现建立连接和断开连接2个功能。
5、相对位置运动:设置相对运动速度和相对运动位置,实现电机的相对运动。
6、juedui位置运动:设置juedui运动速度和juedui运动位置,实现电机的相对运动。
7、点动运动模式:设置点动运动速度,按住正向点动或者反向点动,实现电机的点动运动。
8、回原点模式:点击回原点,可以控制物体回到原点位置并停止。
9、运动停止、运动暂停、复位相关功能。
写在最后这个项目整体来说难度不是很大,但是涉及的知识面比较广,非常适合上位机初学者进行学习和练手。
西门子PLC的通讯方式有哪些?西门子plc通讯方式有哪些?一般五种通讯方式分别是:PPI通讯、RS485串口通讯、MPI通讯、以太网通讯、PROFIBUS-DP通讯,下面我们一起来看。
一、PPI通讯 PPI协议是S7-200CPU最基本的通信方式,通过原来自身的端口(PORT0或PORT1)就可以实现通信,是S7-200 CPU默认的通信方式。
二、RS485串口通讯 第三方设备大部分支持,西门子S7 PLC可以通过选择自由口通信模式控制串口通信。
最简单的情况是只用发送指令(XMT)向打印机或者变频器等第三方设备发送信息。
不管任何情况,都必须通过S7 PLC编写程序实现。
当选择了自由口模式,用户可以通过发送指令(XMT)、接收指令(RCV)、发送中断、接收中断来控制通信口的操作。
三、MPI通讯 MPI通信是一种比较简单的通信方式,MPI网络通信的速率是19.2Kbit/s~12Mbit/s,MPI网络最多支持连接32个节点,最大通信距离为50M。
通信距离远,还可以通过中继器扩展通信距离,但中继器也占用节点。
MPI网络节点通常可以挂S7-200、人机介面、编程设备、智能型ET200S及RS485中继器等网络元器件。
西门子plc与PLC之间的MPI通信一般有3种通信方式: 1、全局数据包通信方式 2、无组态连接通信方式 3、组态连接通信方式 四、以太网通讯 以太网的核心思想是使用共享的公共传输通道,这个思想早在1968年来源于厦威尔大学。
1972年,Metcalfe和David Boggs(两个都是zhuming网络专家)设置了一套网络,这套网络把不同的ALTO计算机连接在一起,同时还连接了EARS激光打印机。
这就是世界上第一个个人计算机局域网,这个网络在1973年5月22日首次运行。
Metcalfe在首次运行这天写了一段备忘录,备忘录的意思是把该网络改名为以太网(Ethernet),其灵感来自于“电磁辐射是可以通过发光的以太来传播”这一想法。
1979年,DEC、Intel和Xerox共同将网络标准化。
1984年,出现了细电缆以太网产品,后来陆续出现了粗电缆、双绞线、CATV同轴电缆、光缆及多种媒体的混合以太网产品。
以太网是目前世界上最流行的拓朴标准之一,具有传传播速率高、网络资源丰富、系统功能强、安装简单和使用维护方便等很多优点。
五、PROFIBUS-DP通讯 PROFIBUS-DP现场总线是一种开放式现场总线系统,符合欧洲标准和guojibiaozhun。
PROFIBUS-DP通信的结构非常精简,传输速度很高且稳定,非常适合PLC与现场分散的I/O设备之间的通信。
西门子PLC编程步骤 PLC由于具有通用性好、适用性强,硬件配套齐全,编程方法简单易学等特点,编程步骤可以分为三步,分别是选择程序结构、建立程序文件、编辑逻辑块,下面来详细了解一下。
1.选择程序结构 作为西门子plc编程软件设计的第一步,首先需要确定的是PLC程序的基本结构体系。
程序结构体系由如下两方面因素决定: ①所使用的PLC型号。
PLC型号从客观上规定了可以采用程序结构,如:当PLC选择为S7-200时,只能选择线性化结构或主一子程序的结构形式:当选择的PLC为S7-300/400时可以采用线性化结构、调用式结构或结构化编程。
②控制系统的要求。
如果控制系统的要求较简单,PLC程序的长度不大,出于简化调试、减少程序设计工作量等方面的考虑,采用线性化结构可以省略编写程序块、功能块、数据块、局部变量等工作,提高编程的速度。
如果控制系统较复杂,程序所占的容量较大,为了使得程序便于分段阅读与调试,可以考虑采用调用式结构( S7-300/400)与主一子程序结构(S7-200);如果控制系统十分庞大,程序异常复杂,或是系统相类似的控制要求较多,在S7-300/400上可以优先考虑采用结构化编程。
2.建立程序文件 建立程序文件包括编写I/O地址表、定义符号地址、编写程序说明等内容,其目的是为程序设计提供方便。
在S7中,一般是直接利用编程软件,通过编程软件的“符号表编辑器”对“符号地址表(SymbolTable)”的编写,一次性完成I/O地址、符号地址、数据格式、注释等全部工作。
3.编辑逻辑块 在选定了程序的基本结构体系与完成符号表的编辑后,即可着手进行PLC程序中各类逻辑块的编辑。
逻辑块的编辑包括了编写逻辑控制程序与定义程序变量两部分内容。
逻辑控制程序可以通过梯形图、功能块图,指令表等方法编写:程序变量应通过“变量声明表”建立与明确(内容见本节后述),对于线性结构的PLC程序也可以不使用变量与变量表。
如果采用的是线性结构,只需要直接编写组织块OBl;如果选择的是分块式结构,则应首先进行FC、FB等基本逻辑块的编制,最后才能编写组织块。
通过编程软件输入程序时,同样应该遵守这一原则,因为,如果基本逻辑块未编制完成,在OB1中将无法确定逻辑块所需要的赋值参数,在输入逻辑块调用指令时将引起出错。