我们将向你介绍:使用PS501软件和AC500系统编辑一个小程序。
使用入门:
下面我们举一个例子来说明如何创建一个工程:
• 一个CPU单元(PM581-ETH )和一个CPU地板(TB511-ETH,带一个扩展通讯槽) • 一个数字量I/O模块DC532 (16点数字量输入,16点数字量输入/输出可设置。) • 一个24v DC 电源。
• 一个安装了PS501 软件的可以用来编写程序的计算机。 • 一根电缆(TK501 5m),用来连接CPU和计算机的串口编程电缆。
任务:在这个例子里,我们是用FBD(功能块)方式编写程序。 以一个数字量输入信号触发一个数字量输出信号。
创建一个新工程:
1. 首先,打开ABB的PS501软件,选择[File] /[New] 新建一个工程。如下图所示:
2.在弹出的窗口中选择相应的CPU型号,本例中我们选择:“AC500 PM581”。 选择完毕后,点击[OK]
3.在上步点击[OK]之后,弹出目标设定窗口。通常我们选择默认设置,直接点击[OK]键确认。
4. 在这个弹出的窗口中,你可以定义POU(程序组织单元)的名字、可以选择POU的类型以及POU的编程语言。在这个例子中我们选择了FBD(功能块编程语言),默认 PLC_PRG名字。
5. 现在你已经打开一个新工程了:
把新建的工程保存在电脑中:
1. 点击[File] / [Save as ] 把新建工程保存在软件的安装目录下[Projects ]文件夹下。
2. 确定新建工程的名称,保存在电脑中。
硬件组态:
1.点击左侧窗口中的[Resources]标签:
2. 在弹出窗口中双击[PLC Configuration ]选项,出现下面的窗口。
3. 在中间出现的窗口中,有一个[AC500]文件夹。打开文件夹,出现硬件组态树状结构图。
选择每一项内容,并在上点击鼠标右键,可以进行相应的设定和选择。
本例中我们只选择I/O – BUS [ FIX ] 选项,点击鼠标右键,进行I/O模块的选择。
配置一个DC532模块:16DI / 16DC
1. 在弹出的窗口中,选择DC532-16 DI/16DC模块。
2.选择完后,点击已添加的模块。可以对相应的模块参数进行设定,本例中选择默认参数。
3. 在添加了DC532 模块后,出现下图说所示的内容。DI输入0-15 / 根据变量属性的不同,分成了:WORD (字变量),BYTE(字节变量),BOOL(布尔变量)。我们在这里全部选用BOOL变量(Input 0 – Input 15).
4. 点击选择某个变量后,会在变量的右侧出现一个基本参数窗口,在注释里可以写入对变量的描述。如下图所示:
5. 除了支持变量内容注释外,软件还支持对于具体的每一个变量进行变量名的更新。
双击变量中的字母“AT”这时,会出现一个方框,可以在里面对变量进行命名。(支持英文和数字)
6. 前面我们介绍了16点数字量输入的变量定义和地址分配;接下来,我们对另外的16 DC
(即:16点数字量输入/输出可设置)进行说明和定义。
如下图所示:对于DC532可设置模块的16个可设置(组态)通道,每一个通道提供了两种状态:( 1.Digital In/Outputs – Inputs 输入 和2.Digital In/Outputs – Outputs 输出 ) 用户可以依据实际需要,进行相应的设置。但是,为了保证设置的正确有效,同一个可设置通道只能有一种状态被设定和使用。(即:不允许同一个可设置通道有两种状态,输入和输出同时被设定。)本例中:我们把可设置通道全部作为输出点来使用。
功能块编辑:(创建一个程序)
1. 点击主窗口右下方的[POU]标签,进入程序编辑界面:本例中我们选用了FBD编程方式。
2.这时,在工具栏中会出现一些常用的功能块快捷图标。本例中我们选择了第三个快捷图标:IN—R (Assign) 用一个输入来触发一个输出。如下图所示:
2. 点击完毕后,在程序界面会出现两组红色的问号。用鼠标单击问号组,然后按下功能键
F2 界面会弹出一个[Help Manager] 窗口。通过这个窗口,用户可以选择已经定义过的变量。包括:本地变量、全局变量和系统变量。
本例中:我们选择了在硬件组态中已经定义过的两个全局变量。 I0 digital (BOOL) 和 Q0 digital (BOOL)
4.编写完程序后,我们需要对程序进行校验。点击 [Project] 选择 [Rebuild ] 或者 [ Rebuild all ] ,编程软件可以对用户编写的程序进行编译和校验。如果出现错误或警告,系统会在信息栏中用红色字体提示和显示。用户可以根据显示的信息和错误代码进行相应的修改和编译。待编译完毕后,需要再次重复上述步骤进行校验。
设置通讯参数:
1. 编译完所有的程序并校验无误后,我们需要把程序下载到CPU中。这时就需要对连接
方式和连接端口进行选择和设定,AC500 系列CPU可以通过多种方式进行编程连接。 如:COM1口 / COM2口 ,如果CPU支持以太网功能则还可以用Ethernet端口来下载程序。 本例中:我们选择COM2口来进行程序下载。在主窗口界面选择[Resource] 按钮,进入硬件设置界面,选择COM2 – Online access [SLOT] (默认)。可以对端口的基本信息进行设定。
2. 接下来,选择[Online] 菜单里的[Communication Parameters ] 通讯参数设定选项,进行通讯参数的设置:如下图所示:
2. 在弹出的通讯参数设定窗口中,首先选择[Gateway…]项 ,把[Connection]项设定为
(Local )模式。 如下图所示:
4. 接下来,我们就可以点击[New] 选项来选择相应的通讯方式。本例中我们选择了串口通讯方式,Serial(RS232),如下图所示:
5. 在选定了通讯方式后,我们可以对选定模式的通讯参数进行设定。如果用户选用了串口通讯方式,在设定中需要注意一点:要把[ Motorola byte order ] 选项设定为Yes 。其它的参数可以根据实际要求来设定,如下图所示:
编译完的程序和PLC硬件的连接:
1. 下载PLC程序
点击[ online ] – Login :弹出程序下载选择界面,选择后即可下载或连接到CPU。
2.下载完毕后,需要创建一个Boot 文件。(此功能可以设定为自动下载)
运行程序:
1.在[ Online ] 菜单里选择Run 选项,程序进入运行状态。
2. 在运行状态中,可以使用强制功能对变量进行强制和释放操作。如下图所示:
3. 我们可以看到,程序中的变量变成了蓝色。如下图所示:
4.用户可以打开硬件组态界面,察看程序中变量的运行状态。如下图所示:
分布式I/O扩展配置举例: 说明: AC500 系列PLC的I/O扩展有两种方式:本地扩展和分布式扩展。在CPU本地最多可以扩展7个I/O模块,如果仍然需要添加I/O模块,可以通过现场总线的方式来进行分布式扩展。AC500 支持常用的现场总线(如:Profibus-DP 、CanOpen、DeviceNet…等)和ABB自己的CS31 总线。 本例中:我们介绍非常普遍的Profibus DP 分布式扩展方式。在进行分布式扩展时,需要增加一个分布式扩展模块:DC505-FBP (Profibus DP 从站) 每增加一个从站就需要添加一个分布式扩展模块。每个分布式模块的带模块能力:开关量模块Max:7块 ;模拟量模块 Max:32路输入32路输出 ,总共不能超过路。通讯距离和带从站的数量由所选择的总线决定。如:Profibus DP ,不带中继器32个从站,通讯距离为1200米。 1..选择CPU类型 2.在选择了编程语言后,进入了程序编辑界面。点击左侧窗口下方的[Resources]进入如下界面。 3.根据实际配置进行硬件组态:添加本地的I/O模块和通讯模块 4.完成硬件配置后,保存工程文件。然后,打开[Tools]文件夹双击[SYCON.net]进行PROFIBUS-DP的配置: 5.首先,在网络配置窗口中选择现场总线的主站模块图标[本例中,选择了PROFIBUS-DP总线的主站:CM572-DPM ]。鼠标拖拽图标,将它添加到绿色的系统总线上。这时,会弹出一个参数配置窗口,可以设定模块的地址。 6. 添加总线的从站。选择相应的从站(总线适配器)图标,并将其通过鼠标拖拽到主站的 总线上。[本例中的PROFIBUS-DP总线为紫色,从站总线适配器为:PDP22-FBP(DPV1-moudal)] 7. 添加从站总线接口模块:点击挂在总线上的从站图标,弹出配置窗口。在窗口中选择 [Modules] 在其右侧[Available Modules]窗口中选择从站总线接口模块[DC505-FBP],双击及可将此模块添加到[Configured Modules]窗口中。如果还需要在DC505-FBP后面继续添加I/O模块,可以重复上述操作,因为DC505-FBP总线接口模块带I/O模块的能力和数量有限[数字量模块Max:7块,模拟量模块Max:路。],所以不能超过其。 8.给从站中I/O进行变量定义。选择[NetConnect]窗口,点击其中添加模块的输入或者输出文件夹,在下方的表格中会出现如下图所示的变量属性描述条目。在该条目上点击鼠标右键弹出[Create Variable]菜单,点击菜单弹出变量定义界面,选择相应的变量属性和变量名即可。 9.主站配置:双击主站图标,弹出配置窗口。首先,确认[Driver]文件夹中的驱动是否正确,即:看[Driver name ]是否和当前下载程序的驱动一致。如:本例中都是用COM4口来下 载程序和下载通讯参数。如果驱动不一致,可以点击右侧下方的[Gateway Configuration]进行选择和配置。 至此,现场总线的组态已全部完成,保存后可退出SYCON.net。编写完程序后,将计算机与CPU用编程电缆连好(通过串口或以太网),在下载程序之间应先将现场总线组态文件下载到主站中,操作如下: 1.主站模块确认:在正确配置了驱动后,点击[Device Assignment]选项。系统会自动地扫描到分配的硬件。选择在表格中列出的硬件名称前的方块,按[OK]确认配置。 2.下载配置内容:在主站模块上点击右键,下载配置内容。 3.下载完毕后,点击[File] – [save] 保存配置,退出完成配置。 下载完网络组态后,再将程序下载到CPU中。进入了程序运行界面,用户可以按照自己的要求进行相应的操作。如: 监视程序: 变量跟踪: 通过CS31总线进行分布式I/O扩展: 通过前面的熟悉和使用,用户对于AC500 PLC 的系统结构和软件使用有了初步的认识。接下来,我们向大家介绍另外一种分布式扩展方式:即ABB公司的CS31总线来实现的分布式扩展。 对于AC500的每一个从站都需要添加一个分布式从站模块:DC551-CS31 ,分布式模块的右侧可以连接I/O模块。每个分布式模块的带模块能力为:开关量模块Max:7块 ;模拟量模块 Max:32路输入 / 32路输出 ,总共不能超过路 。 对于AC500的CPU还可以通过COM1口的CS31总线,来连接AC31系列PLC中的50 、90 型PLC的CPU单元及其扩展模块。通过这种方式添加的分布式从站的带模块能力以AC31系列PLC参数为准。(如:50系列CPU能带6个I/O模块…) 整个CS31 总线系统采用主从结构:一个主站可以带最大31个分布式从站。通讯距离:不加中继器为500米,增加中继器(最多3个)最远可达1200米;最大通讯波特率:187.5Kbit/s 应用举例: • 在这里我们通过一个实例来向大家说明,AC500的CS31分布式扩展: • 本地机架配置: PM581( CPU单元) + TB511-ETH (CPU底板)+TA524(通讯槽盲板)+ DC523(本地连接I/O模块)+TU515(I/O模块地板) , DC 24V 电源 . • 分布式扩展配置: DC551-CS31 (分布式扩展模块,集成8DI / 8 DC‘I/O可设置’) + TU551-CS31(分布式扩展模块地板)+ 其他标准的I/O模块.( 数量和种类参见:前面提到过的标准 ) 1. 首先,我们进入到硬件配置(组态)界面。添加相应地本地I/O模块。接下来,在窗口中选择( Interface [FIX] ) 选项,选择COM1-Online access [SLOT] 项,单击鼠标右键在弹出窗口中选择 [ Replace element ] 。这时,会出现一个选择条目,选中:[ COM1- CS31 Bus] 项即可。如下图所示: 2. 接下来,COM1-Online access [SLOT] 项变换为 COM1- CS31 Bus [SLOT] 项。继续在该 项上点击鼠标右键,在弹出条目中选择[ Append Sub element ]项,在弹出列表中选择可添加的分布式模块。在这里我们统一选择[DC551-CS31 8DI+16DC ]模块,如下图所示: 3. 完成上一步的添加后,再右键点击刚才添加的[DC551-CS31 ] 图标。在弹出的选项中点击[Append Sub element]即可按照前述的标准,给分布式扩展模块添加相应的I/O模块了。 4. CS31总线基于RS-485通讯协议,支持主从结构,一个主站最多可添加31个从站单元。所以,在本例中可以根据需要添加相应的DC551-CS31分布式扩展模块。每一个DC551-CS31模块最多可扩展7个数字量I/O模块和路模拟量模块。如下图所示: 5. 添加完所需的模块后,每个模块的变量地址分配同前面I/O模块的地址分配一致,详情 请察看前面章节的描述和说明。 End 集成以太网的设定 AC500系列PLC的内部以太网口通讯设定,根据其IP地址的形式可以分为两种方式: 第一种:临时IP地址。即:设定的IP地址不具备断电保持功能。在设定后,可以进行程序编辑可以进行临时通讯。但是,在系统重新上电后该IP地址将不能保持。系统IP地址恢复到设定前的状态。 第二种:固定IP地址。这个很简单,即设定的IP地址具有断电保持的功能。能够稳定的进行程序编译和以太网通讯。 接下来我们将分别进行介绍和演示: 一、临时IP地址的设定 在硬件组态中添加相应的内部以太网接口:PM5x1-ETH-Internal-Ethernet[SLOT] 第一步:打开已经编译好的POU(程序组织单元)。在[ Resource] 选项中,展开[Tools]文件夹。选择其中的[IP Configuration] 选项。 第二步:连接好上位机和CPU单元上的以太网接口,在打开的以太网设备配置对话框中,点选[Search Device]选项。(注意:此时应该关闭防火墙,或者将IP地址设置为允许访问地址。) 第三步:这时,系统会自动监测到CPU单元的原来已经设定的IP地址。 本例中:IP:192.168.1.111 ;如果,CPU中没有设定IP地址。搜索结果将是:IP:0.0.0.0 第四步:接下来,我们就可以设置自己的IP地址了,注意:这个地址时断电不保持的。 选择[Configure] – [Set IP Address]就可以输入了。 第五步:将设定好的IP地址下载到CPU中,点选[OK]选项。 第六步:设定确认。我们重新点击[Search Devices ],系统将搜索到我么新设定的IP地址。本例中:IP:192.168.10.100 .设定就完成了。 !!再次提醒大家:这个功能是用在:不具备设定或者更改固定IP地址的情况下,临时的进行程序下载和通讯。它不能用来设定稳定可靠的固定IP地址通讯。 二、固定IP地址的设定 内部以太网固定IP地址的设定:(本例中:以COM口为例,进行设置演示。) 第一步:打开SYSCN.net 设置工具,在总线配置界面上添加CM577-ETH模块。 第二步: 双击添加好的CM577-ETH 模块,弹出设备配置对话框。点击[3S Gateway Driver]选项,在弹出窗口中选择[Gateway Configuration]选项,设置下载和连接的通讯接口。 第三步: 选择[Device Assignment]选项,系统会通过上一步设定好的通讯口自动检测到以设定的内部以太网接口,点击确认。(在硬件组态中添加:PM5x1-ETH-Internal-Ethernet[SLOT] ) 第四步: 选择[Configuration ]选项,进入IP地址设定界面。注意:IP地址的设定在这里有区别: 从上到下依次为从低位到高位, 如本例:100.10.168.192 从低位到高位。实际:IP:192.168.10.100 第五步: 接下来我们配置CPU允许访问或连接的Server 数量。点选[OMB_SRTUP]选项,即可进行设定。本例中,我们设定[Server Connections] 为2 。 第六步: 下载设置好的参数。 第七步: 下载完毕后,断开连接保存设置。 第八步: 检查配置好的固定以太网地址。断开CPU电源,稍后2分钟。系统重新上电,进行IP地址搜索,确认地址设定是否一致。本例中:校验结果相同,设置正确。 第九步: 设置完毕后,可以使用固定IP地址进行:程序编译和以太网通讯。 附录 AC500 的变量和寻址: 1.1 AC500中的输入、输出和标识 PS501软件支持的所有操作数都可以在控制器的文档中找到描述。大家在此读到的文档将详细介绍PS501中的“地址”操作数。( %I 为输入 , %Q为输出 ) 在Control Builder中,所有可设定地址的操作数可以分为:以位(X)变量访问 ,以字节(B)变量访问 ,以字(W)变量访问 和以双字(D)变量访问 。操作数的访问可以采用摩托罗拉字节顺序,在软件中需要把这一项设定为[YES]。 可设定地址操作数的声明: 可设定地址标志区中操作数的声明,可按如下方法操作: Symbol AT address : Type [:=initialization value];(*comment*) [-] 可选项 输入和输出在PLC组态中进行声明。与CPU底板直接连接的输入、输出设备直接在PLC硬件组态中声明。连接在通讯模块上的输入、输出设备用现场总线组态工具SYCON.net来组态。SYCON.net集成在控制器编程软件Control Builder中,详情请查看软件使用手册中的相关描述。 注意: 对于多任务来说,每个任务的开关量输入和输出每个字节循环是一致的。即:例如任务 1的输入为 %IX0.0 - %IX0.7 , 任务2的输入为%IX1.0 - % IX1.7 。 如果,任务1优先权高,输入%IX0.0在任务1和任务2中都用到,那么%IX0.0的值可 能在任务2的循环周期内被任务1修改。 对于只有一个任务的编程来说,不会有这样的问题。 1.2 AC500的输入/输出接口 在AC500中支持下列输入、输出接口: 序号 1 2 3 4 5 6 7 8 9 10 1.2.1 序号 0 … 5 类型 I/O 总线 COM1 COM2 FBP 从站接口 Int. Coupler Line 0 Line 1 Line 2 Line 3 Line 4 描述 I/O模块的接口 CS31总线 分布式I/O扩展 分布式I/O扩展 Field Bus Plug适配器 内部通讯卡 输入输出个数 最多7个模块,每个模块Max: 32通道 (IX、QX、IW、QW) 最多31个从站,每个模块Max:32通道 地址:(0-61) RS-232 / RS-485 RS-232 / RS-485 现场总线从站 ARCNET… (由其他软件设定) 由PS501软件中的硬件组态项来设定: 由PS501软件集成的SYCON.net来设定: 内部通讯卡(Internal 每个4KB %I0.xx / %Q0.xx Couple ) 通讯卡1 通讯卡2 通讯卡3 通讯卡4 每个4KB %I1.xx / %Q1.xx 每个4KB %I2.xx / %Q2.xx 每个4KB %I3.xx / %Q3.xx 每个4KB %I4.xx / %Q4.xx 输入输出的地址: 设备 输入/输出 接口 I/O总线 COM1 COM2 FBP I/O总线 COM1 COM2 FBP Line0 输出(4KB) 区域 0000…0999 1000…1999 2000…2999 3000…4095 0000…0999 1000…1999 2000…2999 3000…4095 0.0000 … 0.4095 地址 %IB0…%IB4095 %IW0…%IW2047 %ID0…%ID1023 %IX0.0…%IX4095.7 %QB0…%QB4095 %QW0…%QW2047 %QD0…%QD1023 %QX0.0…%QX4095.7 %IB0…%IB4095 %IW0…%IW2047 %ID0…%ID1023 %IX0.0…%IX4095.7 %QB0…%QB4095 %QW0…%QW2047 %QD0…%QD1023 %QX0.0…%QX4095.7 采用PS501组态(CPU及I/O),或采用SYCON.net组态(内部通讯卡) CPU I/O模块 输出(4KB) 输入(4KB) CPU 内部通讯卡 输入(4KB) 采用SYCON.net组态 6 通讯卡1 输入(4KB) 输出(4KB) Line1 1.0000… 1.4095 %IB1.0…%IB1.4095 %IW1.0…%IW1.2047 %ID1.0…%ID1.1023 %IX1.0.0… %IX1.4095.7 %QB1.0…%QB1.4095 %QW1.0…%QW1.2047 %QD1.0…%QD1.1023 %QX1.0.0… %QX1.4095.7 %IB4.0…%IB4.4095 %IW4.0…%IW4.2047 %ID4.0…%ID4.1023 %IX4.0.0… %IX4.4095.7 %QB4.0…%QB4.4095 %QW4.0…%QW4.2047 %QD4.0…%QD4.1023 %QX4.0.0… %QX4.4095.7 … 9 通讯卡4 输入(4KB) Line4 输出(4KB) 4.0000… 4.4095 1.2.2 多任务处理系统中的输入、输出的处理。 下图显示了在多任务系统中输入、输出时如何处理的: 输入数据映像的生成: I/O总线的输入: 当所有的I/O模块在I/O总线上处理完毕后,在处理器中生成一个相关的中断。在中断服务程序(ISR)中,输入被复制到输入数据映像上。当任务更新输出后,输出映像中的内容被拷贝到输出。 CS31系统总线的输入: 当CS31驱动器处理了所有的I/O模块后,处理器中生成一个相关的中断。在中断服务程序(ISR)期间,输入被复制到输入数据映像上。当任务完成后,输出映像中的内容被拷贝到输出。 Line0 到 Line4 通讯卡的输入: 当通讯卡接受到新数据后,处理器产生一个相关的中断。在中断服务程序(ISR)中,输入被从DPR中复制到输入数据映像上。当任务更新输出后,输出映像中的内容被拷贝到DPR。 所有这些的前提条件是通讯卡组态有效。 启动一个任务 当任务启动时,任务中用到的输入以字节的方式从输入映像中被复制到映像。字节方式是指,例如:当输入用到%IX0.0时,输入%IX0.0 … IX0.7的映像都将拷贝到映像区。 由于只有那些在任务中直接使用的输入被拷贝,所以如果要求周期一致的话,输入不能间接读取。 处理一个任务: 所有任务将基于映像工作,即输入读自映像,输出写入映像。在[Online ]模式下,可以显示输入/输出的映像。 输出数据映像处理的中止: 在任务处理完毕后,任务中使用到的输出将以字节方式从映像复制到输出数据映像。字节方式是指,例如当用到%QX0.0时,输出%QX0.0 … %QX0.7都将被拷贝到输出数据映像区。CS31处理器和通讯卡0…4中的内部变量“输出数据映像更新”将被设定。 写输出: I/O 总线的输出: 在I/O总线驱动器的下一次中断,输出映像的输出将被写入,并且变量“输出数据映像更新”将被复位。 在C31系统总线的输出: 在CS31处理器的下一次中断,输出映像的输出将被写出,并且变量“输出数据映像更新”将被复位。 Line0 到 Line4 通讯卡的输出: 在通讯卡的下一次中断,输出映像的输出将被写到DPR,并且变量“输出数据映像更新”将复位。 I/O 更新任务: 为了更新在任务中没有用到的输入、输出,所有映像的输入、输出的更新将通过一个低权限的任务来实现。这一任务在没有其它用户任务执行的情况下运行。 2.1 AC500 中寻址标志区 (%M 区) 2.1.1 在AC500中寻址标志区的分配: AC500 的寻址标志区分成不同的段,每段K 。最多8段可以编址。各段或者部分段的性能依赖于CPU 。%M区域的大小在CPU的技术数据(参见CPU技术数据),中可以查到。 段 0 1 2 3 4 5 6 7 操作 %MB0.0 …%MB0.65535 %MB1.0 …%MB1.65535 %MB2.0 …%MB2.65535 %MB3.0 …%MB3.65535 %MB4.0 …%MB4.65535 %MB5.0 …%MB5.65535 %MB6.0 …%MB6.65535 %MB7.0 …%MB7.65535 大小(Dec)累积[KB] K 128K 192K 256K 320K 384K 448K 512K 大小(Hex) 累积[KB] 16#10000 16#20000 16#30000 16#40000 16#50000 16#60000 16#70000 16#80000 2.1.2 通过Modbus® 协议访问%M 区域: AC500系统中支持Modbus®RTU协议。在Modbus®协议下,寻址标志区的段0和段1可被访问。 关于Modbus®协议的详细描述和相关寻址,请参见通讯部分的Modbus®协议。 注释:对于AC500的PM571 CPU来说,寻址标志区只有一个完整的段。因此,并不是 所有的Modbus®地址都可以访问。 Modbus通讯时,不能直接访问输入和输出的地址。内存中的地址%M与Modbus地址的对应关系如下表所示: 字或双字的Modbus地址分配: Modbus地址 十六进制 段0 0000 0001 0002 0 1 2 十进制 字节 : BYTE 位(源于字节): BOOL 字 : WORD 双字: DWORD %MB0.0 %MB0.1 %MB0.2 %MB0.3 %MB0.4 %MX0.0.0 … %MX0.0.7 %MX0.1.0 … %MX0.1.7 %MX0.2.0 … %MX0.2.7 %MX0.3.0 … %MX0.3.7 %MX0.4.0 … %MX0.4.7 %MW0.0 %MD0.0 %MW0.1 %MW0.2 %MD0.1 %MB0.5 0003 … 7FFE 7FFF 段1 8000 32768 %MB1.0 %MB1.1 %MB1.2 %MB1.3 %MB1.4 %MB1.5 %MB1.6 %MB1.7 %MB0.65532 %MB0.65533 %MB0.65534 %MB0.65535 32766 32767 %MB0.65532 %MB0.65533 %MB0.65534 %MB0.65535 3 %MB0.6 %MB0.7 %MX0.5.0 … %MX0.5.7 %MX0.6.0 … %MX0.6.7 %MX0.7.0 … %MX0.7.7 %MW0.3 %MX0.65532.0 … %MX0.65532.7 %MX0.65533.0 … %MX0.65533.7 %MX0.65534.0 … %MX0.65534.7 %MX0.65535.0 … %MX0.65535.7 %MW0.32766 %MD0.16383 %MW0.32767 %MX1.0.0 … %MX1.0.7 %MX1.1.0 … %MX1.1.7 %MX1.2.0 … %MX1.2.7 %MX1.3.0 … %MX1.3.7 %MX1.4.0 … %MX1.4.7 %MX1.5.0 … %MX1.5.7 %MX1.6.0 … %MB1.6.7 %MX1.7.0 … %MX1.7.7 %MX0.65532.0 … %MX0.65532.7 %MX0.65533.0 … %MX0.65533.7 %MX0.65534.0 … %MX0.65534.7 %MX0.65535.0 … %MX0.65535.7 %MW1.0 %MD1.0 %MW1.1 %MW1.2 %MD1.1 %MW1.3 8001 8002 32769 32770 8003 … FFFE FFFF 32771 65534 65535 %MW0.32766 %MD1.16383 %MW0.32767 位的Modbus地址分配: Modbus地址 十六进制 段0 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 十进制 字节 : BYTE 位(源于字节): 字 : BOOL WORD 双字: DWORD %MX0.0.0 %MX0.0.1 %MX0.0.2 %MB0.0 %MX0.0.3 %MX0.0.4 %MX0.0.5 %MX0.0.6 %MX0.0.7 %MX1.0.0 %MX1.0.1 %MX1.0.2 %MB0.1 %MX1.0.3 %MX1.0.4 %MX1.0.5 %MX1.0.6 %MX1.0.7 %MW0.0 %MD0.0 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 001A 001B 001C 001D 001E 001F 0020 0021 0022 … 0FFF 1000 … 7FFF 8000 … FFFF 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 4095 4096 32767 32768 65535 %MB0.511 %MB0.512 %MB0.4095.7 %MB0.4096.0 %MB0.8191.7 %MB0.4 %MB0.3 %MB0.2 %MX2.0.0 %MX2.0.1 %MX2.0.2 %MX2.0.3 %MX2.0.4 %MX2.0.5 %MX2.0.6 %MX2.0.7 %MX3.0.0 %MX3.0.1 %MX3.0.2 %MX3.0.3 %MX3.0.4 %MX3.0.5 %MX3.0.6 %MX3.0.7 %MX4.0.0 %MX4.0.1 %MX4.0.2 %MX0.511.7 %MX0.512.0 %MX0.4095.7 %MX0.4096.0 %MX0.4095.7 %MW0.255 %MW0.256 %MW0.2047 %MW0.2048 %MW0.4095 %MD0.127 %MD0.128 %MD0.1023 %MD0.1024 %MD0.2047 %MW0.1 %MD0.1 %MW0.1 2.1.3 在可编址标志区访问操作数: 在%M区域的操作数可以通过位(Bit)、字节(Byte)、字(Word)和双字(Double Word)的方式访问。 字节 :BYTE 段0 %MB0.0 %MB0.1 %MB0.2 %MB0.3 … %MB0.65532 %MB0.65533 %MB0.65534 %MX0.65532.0 … %MB0.65532.7 %MX0.65533.0 … %MB0.65533.7 %MX0.65534.0 … %MB0.65534.7 %MW0.32767 %MW0.32766 %MD0.16383 %MX0.0.0 … %MB0.0.7 %MX0.1.0 … %MB0.1.7 %MX0.2.0 … %MB0.2.7 %MX0.3.0 … %MB0.3.7 %MW0.1 %MW0.0 %MD0.0 位(源于字节):BOOL 字 :INT / WORD 双字: DINT / DWORD %MB0.65535 段1 %MB1.0 %MB1.1 %MB1.2 %MB1.3 … %MB1.65532 %MB1.65533 %MB1.65534 %MB1.65535 段2 %MB2.0 %MB2.1 %MB2.2 %MB2.3 … %MB2.65532 %MB2.65533 %MB2.65534 %MB2.65535 …. 段7 %MB7.0 %MB7.1 %MB7.2 %MB7.3 … %MB7.65532 %MB7.65533 %MB7.65534 %MB7.65535 End %MX0.65535.0 … %MB0.65535.7 %MX1.0.0 … %MB1.0.7 %MX1.1.0 … %MB1.1.7 %MX1.2.0 … %MB1.2.7 %MX1.3.0 … %MB1.3.7 %MX1.65532.0 … %MB1.65532.7 %MX1.65533.0 … %MB1.65533.7 %MX1.65534.0 … %MB1.65534.7 %MX1.65535.0 … %MB1.65535.7 %MW1.32767 %MW1.32766 %MD1.16383 %MW1.1 %MW1.0 %MD1.0 %MX2.0.0 … %MB2.0.7 %MX2.1.0 … %MB2.1.7 %MX2.2.0 … %MB2.2.7 %MX2.3.0 … %MB2.3.7 %MX2.65532.0 … %MB2.65532.7 %MX2.65533.0 … %MB2.65533.7 %MX2.65534.0 … %MB2.65534.7 %MX2.65535.0 … %MB2.65535.7 %MW2.0 %MW2.1 %MD2.0 %MW2.32766 %MW2.32767 %MD2.16383 %MX7.0.0 … %MB7.0.7 %MX7.1.0 … %MB7.1.7 %MX7.2.0 … %MB7.2.7 %MX7.3.0 … %MB7.3.7 %MW7.0 %MW7.1 %MD7.0 %MX7.65532.0 … %MB7.65532.7 %MX7.65533.0 … %MB7.65533.7 %MX7.65534.0 … %MB7.65534.7 %MX7.65535.0 … %MB7.65535.7 %MW7.32766 %MW7.32767 %MD7.16383 2.2 操作数的绝对地址 2.2.1 地址操作数 ADR 对于特定的模块或者在通过指针访问操作数的情况下,必须确定操作数的绝对指针地址。为实现此功能,在控制编辑器中提供了地址操作数功能ADR。 地址操作时ADR功能在控制编辑器(PS501编程软件)的相关文档中有详细描述。 在此我们介绍的内容只局限于位操作数。 由地址操作数提供的地址可以用于功能块的输入,这些块需要绝对地址:(如:XXX_MOD_MAST_,COM_SND).如果需要这些功能块应用到整型变量的情况下,必须确保变量被成功设定到后续地址。这种情况发生在变量申明:ARRAY和STRING 。 地址操作数ADR提供了在一个双字DWORD(32位)操作数的地址。地址操作数返回变量(字节地址) 第一个字节的地址。对于用户自定义的变量及BOOL类型的变量地址以字节的方式存储。 2.2.2 位的地址操作 BITADR : 在输入,输出和寻址标志区(%M区),BOOL类型操作数仅占用一位。此类变量寻址不能用ADR来实现。在编译系列语句时 D waddress := ADR(%MX0.0.0) 将显示下列错误信息: Error 4031 : PLC_PRG(XX): ADR is not allowed on bits ! Use ‘BITADR’ instead BITADR 在区域%I ,%Q或作为DWORD 的%M 返回位偏移量。 下表显示了在存储器(以%MD0.0 和%MD0.1为例)中操作数的位置。从中你可以获取 ADR操作返回的地址和BITADR 函数返回的偏移量。 注释:地址显示的是示例的地址,可能会有其它值。 End 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务