6
西门子模块6AV2124-0MC01-0AX0技术参数
在实际调试过程中,有时出现这样的情况,一个软件系统从理论上推敲能符合机械设备的工艺要求,而在运行过程中无论如何也不能投入正常运转,在系统调试过程中,除考虑软件设计的方法外,还可以从以下几个方面寻求解决的途径。
1 扫描击期和响应时间
用PC设计一个控制系统时,一个重要的参数就是时间,PC执行程序中的所有指令要用多少时间,(扫描时间)有一个输入信号经过PC多长时间后才能有一个输出信号(响应时间)掌握这些参数,对设计和调试控制系统无疑非常重要。
当PC开始运行之后,它串行地执行存储器中的程序。我们可以把扫描时间分为4个部分。共同部分,例如时间监视器和检查程序存储器;数据输入,输出;执行指令;执行外围设备指令。
时间监视器是PC内部用来测量扫描时间的一个定时器,所谓扫描时间,是执行上面4个部分总共花费的时间。扫描时间的多少取决于系统的购置,I/O的点数,程序中使用的指令及外围设备的连接,当一个系统的硬件设计定型后,扫描时间主要取决软件指令的长短从PC收到一个输入信号向输出端输出一个控制信号所需的时间,叫响应时间,响应时间是可变的,例如在一个扫描周期结束后,收到一个输入信号,下一个扫描周期结束后时,收到一个输入信号,下一个扫描周期一开始,这个输入信号就起作用,这时,这个输入信号的响应时间短,它是输入延迟时间,扫描周期时间,输出延迟时间三者的和,如果在扫描周期开始收到了一个输入信号,在扫描周期内该输入信号不会起作用,只能等到下一个扫描周期才能起作用,这时,这个输入信号的响应时间长,它是输入延迟时问,输出延迟时间三者的和,因此,一个信号的小响应时间和大响应时间的计算公式为:
小的响应时间=输入延迟时间+扫描时间+输出延迟时间,大的响应时间=延迟时间+2×扫描时间+输出延迟时间。
从上面的响应时间估算公式可以看出,输入信号的响应时间由扫描周期决定,扫描周期一方面取决于系统的硬件配置,另一方面由控制软件中使用的指令和指令的条数决定,在砌块成型机自动控制系统调试过程中发生这样的情况,自动推板过程(把砌块从成型台上送到输送机上的过程)的启动,要靠成型工艺过程的完成信号来启动,输送砖坯的过程完成同时完成了送板的过程,通知控制系统可以完成下一个成型过程。
单从程序的执行顺序上考察,控制时序的安排是正确的,可是,在调试的过程中发现,系统实际的控制时序是,当个成型过程完成后,并不进行自动推板过程,而是直接开始下一个成型过程,遇到这种情况,设计者和用户的反应一般都是怀疑程序设计错误。经反复检查程序,未发现错误,这时才考虑到可能是指令的响应时间产生了问题。砌块成型机的控制系统是一个庞大的系统,其软件控制指令达五六百条。成型过程启动信号,由一个成型过程的结束信号和有板信号产生,这时,就将产生这样的情况,在某个扫描周期内扫描到HR002信号,在执行置位推板过程,直接进行下一个成型过程,这可能是由于输入信号的响应时间过长引起的,在这种情况下,由于硬件配置不能改变,指令条数也不可改变,处理过程中,设法在软件上做调整,使成型过程结束信号早点发生,问题得到了解决。
2 软件复位
在PLC程序设计中使用平常的一种是称为保持继电器的内部继电器。PLC的保持继电器从HR000到HR915,共10×16个,另一种是定时器或计数器从TIM00到TIM47(CNT00或CNT47)共48个(不同型号的PLC保持继电器,定时器的点数不同)。其中,保持继电器实现的是记忆的功能,记忆着机械系统的运转状况,控制系统的运转的正常时序,在时序的控制上,为实现控制的性,及时性、准确性、通常采用当一个机械动作守成时,其控制信号(由保持继电器产生)用来终止上一个机械动作的同时,启动下一个机械动作的时间继电器不能正常被复位的情况,
在开机前,如果不强制使保持继电器复位,将会产生机械设备的误动作,系统设计时,通常采用的方法是设置硬件复位按钮,需要的时候,能够使保持继电器,定时器、计数器、高速计数器强制复位,在控制系统的调试中发现,如果使用保持继电器,定时器,计数器、高速计数器次数过多,硬件复位的功能很多时候会不起作用,也就是说,硬件复位的方法有时不能准确,及时地使PLC的内部继电器、定时器、计数器复位,从而导致控制系统不能正常运转,在调试过程中,人为地设置软件复位信号作为内部信号,可确保保持继电器有效复位,使系统在任何情况下均正常运转。
3 硬件电路
PLC的组成的控制系统硬件电路。当一个两线式传感器,例如光电开关,接近开关或限位开关等,作为输入信号装置被置被接到PLC的输入端时,漏电流可能会导致输入信号为ON,在系统调试中,如果偶尔产生误动作,有可能是漏电生的错误信号引起的。为了防止这种情况发生,在设计硬件电路时,在输入端接一个并联是阻,并联电阻的计算公式。
其中,不同型号的PLC漏电流值可查阅厂商提供的产品手册,在硬件电路上做这样的处理,可有效地避免引言
增强生产力和效率——这些都是现在的所谓工业4.0或智能制造(SM)的焦点
1,工厂被鼓励“将工厂运营效率提高10%(损耗/单位产品)”。
2,以较少的能源、水及其它自然资源产出多产品。有人认为,这是满足不断增长的需求的途径。
3,规划工业4.0的目的是“连续提高整个链中的资源生产力和效率”。
4,为了使“产出大化...就要提高资源生产力...和资源效率。
”所以,许多文献和报告一致赞成如下主题:21世纪的制造工厂优化系统生产力和效率,以20世纪生产相同产品所需的相同或生产大量的产品。
现代自动化工厂大都通过电子和信息技术来提高生产力,特别是可编程逻辑控制器(PLC)和分布式控制系统(DCS),已成为现代工厂中无处不在的众多神经系统的控制。我们将工厂中广泛分布并受控于相同PLC和DCS的每个模块、子系统或元件称为“神经系统”。您任何时候提高这些子系统的生产力和效率时,都将对整个工厂的运营产生积影响。
本文介绍如何使PLC的设计和实现达到高的效率和生产力,也讨论了预期——满足将来不断增长的生产需要的系统的预期。本文介绍一款优异的子系统参考设计Alameda,该参考设计利用率的反激式变换器的电源提供四路、模拟输出。通过部署Alameda,自动化工厂将立即看到其PLC系统生产力的大飞跃,提前满足将来SM工厂的效率要求。
四路模拟输出,无常见噪声
过去,PLC和DCS的模拟输出参考系统专注于模拟性能;高的效率和系统生产力往往被忽略。如果某个设计者试图通过集成电源来提高系统效率,则仍然需要解决系统噪声问题。
现在,有一种途径既可实现四路模拟输出又可以解决噪声问题:Alameda (MAXREFDES24#) 4通道模拟输出子系统参考设计,Alameda具有四路(<±0.1%)的灵活模拟输出、一个率电隔离电源,以及自动故障检测和过热保护。完备的硬件和固件设计文件以及实验室测量数据,能够帮助快速设计原型及开发。
元件数量较少,具有大通用性
高度集成是这里的关键,集成提高了通用性、避免了噪声问题,并且减少了器件数量。我们了解一下硬件。
MAX5134四通道、16位、带缓冲电压输出、高线性度DAC是该系统的。器件具有4路通道、低死区(大0.02V)、满摆幅输出,所以DAC负电源。器件提供电压输出,驱动四片MAX15500信号调理器的输入。同时也要注意,DAC输出直接驱动调理器输入,无外部元件,使得接口非常简单。
每片MAX15500为单通道、、模拟电流/电压输出调理器,专为满足PLC及DCS要求而开发。信号调理器工作在±24V电源范围,产生用户可编程、单性和双性、电流或电压输出。电流输出驱动高达1kΩ负载,电压输出驱动低至1kΩ的负载。MAX15500具有过流和短路保护,也监测过热和掉电情况,并提供的错误。
MAX6126电压基准驱动模拟输出调理器和DAC的基准输入,初始精度为0.02%,大温度系数(tempco)为3ppm/℃。
对于数据隔离,MAX14850对现场测和系统控制器侧的数据通信进行隔离。合成的电源和数据隔离为600VRMS。
电源由隔离、宽直流输入范围、反激式变换器提供。峰值电流模式反激式控制器MAX17498B驱动隔离变压器,支持+18V至+32V单直流电压输入,产生±24V和+8V输出。MAX17498B电路的工作效率为85%。正确安装的1000pF、2000V电容耦合两个隔离地,同时仍然维持隔离,减小模拟输出噪声。MAX1659低压差(LDO)线性稳压器将+8V输出调节至+5V低噪声输出。整个系统只需要24V输入作为电源。
针对LX9和ZedBoard平台开发
Alameda设计经过LX9和ZedBoard平台验证。Alameda具有简单板载Pmod兼容连接器,可连接至Pmod兼容的现场可编程门阵列(FPGA)/微控制器开发板。目前提供这两种平台的项目文件、器件驱动器以及示例代码。可通过以下网址下载完整的源代码和文件:
性能测量
微分非线性(DNL)、积分非线性(INL)和总计不调整误差(TUE)是PLC及其它过程控制系统的重要技术指标。MAX15500高度灵活、可配置,满足不同应用的需求。数据在+25℃下获得。下图中,由于编码0至320在MAX5134的死区范围(0至0.02V),所以前320个DAC编码的DNL、INL和TUE标为0。
结论
工业4.0和智能制造倡导全新的四代工业制造,这些概念代表现代化工厂提高生产力和效率的一个全新的21世纪。现在,Alameda子系统的出现使得当今的预期生产力和效率加可行。Alameda提供模拟输出和优异的电源效率,适用于PLC和DCS内的IO模块;解决了相关的噪声问题,并加快工业系统设计。如开篇所述,Alameda将对整个工厂的运营产生积影响。



西门子S7-1200PLC的IEC格式的定时器属于功能块。在插入定时器指令时,要求创建一个16字节的IEC_Timer数据类型的DB结构(即背景数据块),来保存有关的数据。在功能块中,可以事先创建一个IEC_Timer数据类型的静态变量(多重背景),然后将它给定时器指令。
CPU没有给任何特定的定时器指令分配专门的资源。每个定时器使用DB结构和一个连续运行的内部CPU定时器(我的理解是一个硬件定时器)来执行定时。
在定时器指令的输入IN的上升沿启动定时器时,连续运行的内部CPU定时器的值将被复制到为该定时器指令分配的DB结构的元素START(起始值)中。
该起始值在定时器继续运行期间将保持不变,以后将在每次新定时器时使用。以下条件时将会执行定时器新:
1)执行定时器指令(TP、TON、TOF 或 TONR);
2)定时器结构的元素ELAPSED(经过的时间)或位输出Q作为其它指令的参数,该指令被执行。
新定时器时,将从内部CPU定时器的当前值中减去上述起始值,得到经过的时间ELAPSED。再将ELAPSED与预设值PT进行比较,以确定定时器的位输出Q的状态。然后新该定时器的DB结构的元素ELAPSED和Q。达到预设值PT后,定时器不会继续累加经过的时间ELAPSED。
STEP 7 Basic的V11版与V10.5版相比,增加了类似于S7-300/400的定时器线圈指令。
从上述的定时器内部的定时机制可知,在使用定时器时,其定时精度与CPU的扫描周期有很大的关系。在CPU两次新定时器之间,定时器的输入、输出参数保持不变。
为了验证上述结论,在FB1中调用定时器指令TP,在OB1中用I0.1作为调用条件,调用FB1。用监视表格监视定时器的输出Q和经过的时间ET,用输入IN的上升沿启动定时器后,如果I0.1为0状态,没有调用FB1和执行定时器指令,定时器的输出Q和经过的时间ET保持不变。只有在调用FB1,执行定时器指令时,ET的值才会变化。
在设计PLC时,要考虑到很多因素,需要很多的特殊设计。比如:一台PLC强调内部诊断,结合硬件和软件,可以让设备随时检测自身工作状态的不适;一台PLC具有的软件,要使用一系列的特殊技术,能确保软件的性;一台PLC具有冗余功能,即使一部分失效,也能够维持系统运行;一台PLC还具有外加的机制,不允许通过数字通信接口随便读写内部的数据。
PLC与常规PLC的不同还在于:PLC需要得到三方机构的认证,满足苛刻的性和性标准。地采用系统方法,来设计和测试PLC。德国的TUV和美国的FM会提供对PLC设计和测试过程的、三方立的确认和验证,
特殊的电子线路,细致的诊断软件分析,再加上对所有可能失效进行测试的完整性设计,确保了PLC具有测定99%以上的内部元件潜在危险失效的能力。一种失效模式、影响和诊断分析(FMEDA)方法一直指导着设计,这种方法会指出每个元件是怎样引起系统失效,并且告诉你系统应该如何检测这个失效。TUV的工程师会亲自执行失效测试,把它作为他们认证过程的一个部分。
严格的标准软件应用于PLC。这些标准需要特殊技术,避免复杂性。进一步的分析和测试,细致地检查操作系统的任务交互操作。这种测试包括实时的交互操作,比如多任务(当使用时)和中断。还需要进行一种特殊的诊断,被称为“程序流控制”和“数据确认”。程序流检查能确保基本功能能按正确的顺序执行,数据确认使所有的关键数据在存储器里进行冗余存储,并且在使用前进行有效性测试。在软件开发过程中,一个PLC需要附加的软件测试技术。为了核实数据完整性检查,执行一系列“软件失效注入”测试,也就是人为对程序进行故意破坏,来检查PLC的响应是否运行在预计的方式。软件的设计和测试带有详细的文件资料,这样三方的检查员就能够明白PLC的运行原理,而多数软件开发没有使用这种规范的操作流程,这也正好说明为什么众多的垃圾软件会出现那么多的臭虫而无法发现了。
在网络中有时候有些产品通讯协议非标准,这是就要用到自由通讯了,相当的灵活,但要一定的计算机网络基础。
在PC ACCESS中起动客户机测试时,显示“出现错误”对话框,不能启动测试。
现在的互联网真是个好东西,有问题上互联网,已经成了我们的生活习惯。我遇到问题的个反应就是上网。
在西门子网站的S7-200论坛上搜索“PC ACCESS”,出现了大量的有PC没有ACCESS的帖子。改为搜索“ACCESS”,搜索到的帖子少了很多,剩下的有效帖子的比例也高了。
逐个打开找到的帖子,说什么的都有,例如:
1)用的是的PC/PPI电缆吗?
我用的不是的,有人说的也不行。
2)只要能下载程序,说明PC/PPI电缆肯定没问题。
我也能下载程序,看来电缆没问题。
3)在Microwin中定义变量名不要使用中文。
我改为英文也不行。
4)PC ACCESS 内建立的变量保存了吗?
我保存了也不行。
5)系统安装了WinCC flexible2008_SP2,不能连接。卸载后重装系统问题得到解决。
我用一个重装的“干净”的操作系统也不行。
6)PC ACCESS V1.0 SP3~SP5安装后都不能用,只有SP1能用,后来找了个SP6又能用了。
说明此软件与操作系统可能有兼容性问题。
7)在“找答案”版区找到“pc access sp6为升级包,需要您先安装完整版才可以,pc access sp3是完整版”。
我在西门子网站下载了PC ACCESS V1.0 SP6,安装时需要先卸载老版的PC ACCESS、MicroWIN V4.0和S7-200 Explorer(真是麻烦!)。
安装好PC ACCESS V1.0 SP6和MicroWIN V4.0 SP9后,在PC ACCESS中起动客户机测试时,没有显示“出现错误”对话框了。“测试客户机”窗口可以显示PLC中变量的数值了,
西门子S7-200与PC ACCESS的通信不是目的,我的终目的是要实现3方组态软件(组态王)与S7-200的OPC通信。
S7-200的程序,组态王画面上的起动按钮和停车按钮控制M0.0和M0.1的状态,通过PLC的程序控制Q0.0,用组态王画面上的指示灯显示Q0.0的状态。
T37的当前值以锯齿波的波形在0和MW10的预置值之间不断变化。用组态王的画面显示T37的当前值。可以用组态王画面上的模拟值输入字符串修改T37的预置值MW10。
在组态王中组态好S7-200.OPCServer的变量和画面后,在测试组态王和S7-200的通信时,发现S7-200的数据可以传送给组态王,例如用组态王画面上的指示灯显示Q0.0的状态和显示T37的当前值。但是组态王中的数据(例如用画面上的按钮控制的M0.0和M0.1)不能传送到PLC,只能实现单向的通信。
在西门子的论坛和“找答案”版区搜索“ACCESS 组态王”,几乎找不到什么有用的信息。在组态王的生产厂商亚控公司的论坛搜索,得到的有用信息也很少。
用百度搜索“ACCESS 组态王”,找到了很多与数据库ACCESS有关的帖子。改为搜索“PC ACCESS 组态王”,发现有几个和我同病相怜的人,遇到和我相同的问题。
下面两个帖子讲到了原因:
1) 原因找到了,还是因为组态王是的原因呀!很多功能实现不了。
这个原因我不认同,我用的是亚控公司给的组态王的试用版光盘,每次可用2小时,不存在的问题。
2) 有个新文件。
3)在组态王V6.53里边有个补丁,找组态王要一个就行了,我用的时候就是。
看来问题出在组态王身上,我用的是V6.51版的组态王。在亚控的网站上找不到组态王有关的补丁和新文件,干脆下载了新版的组态王V6.55。重新安装组态王后一试,按钮信号可以传送到PLC,问题解决了!
这个问题的解决过程可以得出一些结论:
1)遇到问题找互联网,一般都可以解决问题。
2)在什么地方搜索很重要,西门子产品的问题的当然是西门子网站的论坛和“找答案”版区。组态王的问题可以在生产厂商的论坛搜索。这个例子用百度搜索得到了启发。
3)搜索时的关键词很重要,有时需要使用不同的关键词搜索。
4)要学会在搜索到的大量信息中,地找出有用的信息。
5)很多信息后还需要通过实验来验是否正确,去伪存真,大浪淘沙始得金。
1、PPI协议是专门为西门子S7-200PLC开发的通信协议。西门子S7-200 CPU的通信口(Port0、Port1)支持PPI通信协议,西门子S7-200的一些通信模块也支持PPI协议。Micro/WIN与CPU进行编程通信也通过PPI协议。
编程时西门子PPI电缆使用方法
进入 STEP7 Micro/WIN 编程软件中的“设置 PG/PC 接口”,选中“ PC/PPI cable ( PPI )”条目后点击“ Properties… ”按钮。
在“ Local Connection ”的下拉框中选中“ USB ”选项。
在“ PPI ”的 Station bbbbbeters 设置中进行如下设置: Address : 0 , Timeout : 1s
在“ PPI ”的 Network bbbbbeters 设置中根据你的需要可选择以下通信协议的任何一个:
PPI :勾选 Advanced PPI 复选框;
多主站 PPI :勾选 Multiple Master Network 复选框;
普通 PPI :不勾选以上二个复选框,这是默认的选项。
!注:要与西门子新推出的 S7-200CN CPU 正常编程通信,满足以下条件:
(1) 、使用编程软件 STEP 7-Micro/WIN V4.0 SP3 以上版本
(2)、将编程软件的工作环境设置为中文状态
S7-200 CPU的PPI网络通信是建立在RS-485网络的硬件基础上,因此其连接属性和需要的网络硬件设备是与其他RS-485网络一致的。
S7-200 CPU之间的PPI网络通信只需要两条简单的指令,它们是网络读(NetR)和网络写(NetW)指令。
PPI协议是西门子的协议,其具体详情是不公开的,一般用于西门子设备之间的通讯。
S7-200 PLC之PPI协议详解
通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源
S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。在这种通讯方式中,需要编程者定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发。采用这种方式,PLC编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。
SIEMENS S7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PLC的通讯代码。如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。
软件设计
系统中测控任务由SIEMENS S7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。计算机的软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。
PPI协议
西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。这样收发两次数据,完成一次数据的读写[5]。
其通讯数据报文格式大致有以下几类:
1、读写申请的数据格式如下:
SD LE LER SD DA SA FC DASP SSAP DU FCS ED
SD:(Start Delimiter)开始定界符(68H)
LE:(Length)报文数据长度
LER:(Repeated Length)重复数据长度
SD: (Start Delimiter)开始定界符(68H)
SA:(Source Address)源地址,指该地址的指针,为地址值乘以8
DA:(Destination Address)目标地址,指该地址的指针,为地址值乘以8
FC:(Function Code)功能码
DSAP:(Destination Service Access Point)目的服务存取点
SSAP:(Source Service Access Point)源服务存取点
DU:(Data Unit)数据单元
FCS:(Frame Check Sequence)校验码
ED:(End Delimiter)结束分界符(16H)
报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值。
在读写PLC的变量数据中,读数据的功能码为 6CH,写数据的功能码为 7CH。
2、PLC接收到读写命令,校验后正确,返回的数据格式为 E5H
3、确认读写命令的数据格式为:
SD SA DA FC FCS ED
其中SD为起始符,为10H
SA为数据源地址
DA为目的地址
FC为功能码,取5CH
FCS为SA+DA+FC的和的末字节
ED为结束符,取16H
PPI协议的软件编制
在采用上位机与PLC通讯时,上位机采用VB编程,计算机采用PPI电缆或普通的485串口卡与PLC的编程口连接,通讯系统采用主从结构,上位机遵循PPI协议格式,发出读写申请,PLC返回相应的数据。程序实现如下:
1、串口初始化程序:
mPort = 1
MSComm1.Settings = "9600,e,8,1"
MSComm1.bbbbbLen = 0
MSComm1.RThreshold = 1
MSComm1.bbbbbMode = combbbbbModeBinary
PPI协议定义串口为以二进制形式收发数据,这样报文的通讯效率比ASCII码高。
2、串口读取数据程序,以读取VB100数据单元为例:
Dim Str_Read(0 To 32) ‘定义发送的数据为字节为元素的数组。
Str_ Read (32) = &H16 ‘相应的数组元素赋值,按照以下格式:
Str_ Read (29) = (100*8) \ 256 ‘地址为指针值,先取高位地址指针
Str_ Read (30) = (100*8) Mod 256 ‘取低位地址指针
Str_ Read (24) = 1 ‘读取的数据长度(Byte的个数)
For I=4 to 30
Temp_FCS = Temp_FCS + Str_Read(i)
Next I
Str_Read(31)= Temp_FCS Mod 256 ‘计算FCS校验码,其它数组元素赋值省略。
68 1B 1B 68 2 0 6C 32 1 0 0 0 0 0 E 0 0 4 1 12 A 10 2 0 1 0 1 84 0 3 20 8B 16
PLC返回数据 E5 后,确认读取命令,发送以下数据:
10 2 0 5C 5E 16
然后上位机VB程序接受到以下数据:
68 16 16 68 0 2 8 32 3 0 0 0 0 0 2 0 5 0 0 4 1 FF 4 0 8 22 78 16
识别目标地址和源地址,确认是这次申请的返回数据,然后经过校验检查,正确后解析出26号数据(&H22)即为VB100字节的数据。
3、串口写入数据程序,以写VB100数据单元为例:
Dim Str_Write(0 To 37) ‘定义发送的数据为字节为元素的数组。
Str_Write (37) = &H16 ‘相应的数组元素赋值,按照以下格式
Str_Write (35) = &H10 ‘要写入的数据值
68 20 20 68 2 0 7C 32 1 0 0 0 0 0 E 0 5 5 1 12 A 10 2 0 1 0 1 84 0 3 20 0 4 0 8 C B9 16
PLC返回数据 E5 后,确认写入命令,发送以下数据:
10 2 0 5C 5E 16
然后上位机VB程序接受到以下数据:
68 12 12 68 0 2 8 32 3 0 0 0 0 0 2 0 1 0 0 5 1 FF 47 16
这是PLC正确接收并写入信息的返回数据。
4、串口接收程序:
在数据接收程序中,利用VB中MSComm控件,一次接收缓冲区中的全部数据,存放到数组形式的暂存单元中,然后分析每个元素的值,得到读写的数据。
Dim RCV_Array() As Byte
Dim Dis_Array As bbbbbb
Dim RCV_Len As Long
RCV_Array = MSComm1.bbbbb ‘取出串口接收缓冲器的数据。
RCV_Len = UBound(RCV_Array)
ReDim Temp(0 To UBound(RCV_Array))
For i = 0 To RCV_Len
Dis_Array = Dis_Array & Hex(RCV_Array (i)) & " "
Next i
Text1.Text = Dis_Array ‘接收到的数据送显示。
在程序的读写过程中,一次大可以读写222个字节,目前给出的数据读写为整数格式。
数据类型 Str_ Read(27)
S 04H
SM 05H
I 81H
Q 82H
M 83H
V 84H
以上程序,是以读写PLC的V变量区为例,利用PPI协议还可以读写S7-200PLC中的各种类型数据,包括I、Q、SM、M、V、T、C、S等数据类型,能够直接读出以上变量中的位、字节、字、双字等,其中读位变量时,是读取该位所在的字节值,然后上位机自动识别出该位的值。按照读写的数据类型,其中Str_ Read(27)的值各不同:
在控制系统中,PLC与上位计算机的通讯,采用了PPI通讯协议,上位机每0.5秒循环读写一次PLC。PLC编程时,将要读取的值、输出值等数据,存放在PLC的一个连续的变量区中,当上位机读取PLC的数据时,就可以一次读出这组连续的数据,减少数据的分次频繁读取。当修改设定值等数据时,进行写数据的通讯操作
2、自由口:
S7-200 CPU的通信口可以设置为自由口模式。选择自由口模式后,用户程序就可以控制通信端口的操作,通信协议也受用户程序控制。
S7-200 CPU上的通信口在电气上是标准的RS-485半双工串行通信口。此串行字符通信的格式可以包括:
一个起始位
7或8位字符(数据字节)
一个奇/偶校验位,或者没有校验位
一个停止位
自由口通信速波特率可以设置为1200、2400、4800、9600、19200、38400、57600或112500。
凡是符合这些格式的串行通信设备,理论上都可以和S7-200 CPU通信。
自由口模式可以灵活应用。Micro/WIN的两个指令库(USS和Modbus RTU)就是使用自由口模式编程实现的。