全国服务热线 15221406036

西门子模块6ES7232-0HD22-0XA0参数方式

更新时间:2024-05-08 07:10:00
价格:请来电询价
联系电话:
联系手机:15221406036
联系人:聂航
让卖家联系我
详细介绍

西门子模块6ES7232-0HD22-0XA0参数方式

0 引言
    随着计算机网络及现场总线技术技术的发展,PLC及触摸屏在工业控制和楼宇自动化中的应用非常广泛。现场总线技术及其总线接口模块、智能仪表、控制设备等组成的综合监控系统已成为当前自动化技术发展的一个重要方向。在工控领域,PLC与触摸屏结合运用的技术已越来越为工程人员所了解与熟悉 ,由于触摸屏具有操作简便、界面美观直接、编程容易掌握、与PLC通讯良好、抗干扰能力强等等特点 ,它正迅速地渗入各个行业 ,发挥自动化控制的大优势。
    PROFIBUS提供了两种通信协议:DP、FMS,富士UG系列的触摸屏支持其中的DP协议。富士触摸屏具有很强的兼容性,可以与近30个厂家的PLC通讯,兼容性极强,而且还可以和计算机通讯(开放式通讯协议)。
通过接口单元、UG031-P通讯卡及总线的连接,UG触摸屏可以作为从站和作为主站的西门子的S7-300或S7-400系列的PLC通信(网络结构示意见图一)。
        

                        图一:PROFIBUS-DP的网络结构

1 系统结构
    本文的背景为某食品加工厂某控制系统包括原料混料线、薯饼生产线、包装线等构成的主线系统,以及蒸汽锅炉系统、水系统、压缩空气系统、照明系统、通风系统和消防系统等构成的辅助系统。各系统位置比较分散,控制点较多,其中包括140多台电机,29台变频器,15个温湿度控制点。
由于系统比较复杂,控制采取分层控制策略,由两台上位机完成工厂级的监控及数据管理功能,触摸屏和PLC完成现场级的控制,采用Profibus现场总线的方式进行通讯。上位机留有接口,可连接局域网和广域网,以利于进一步的开发。其中数字输入点有900多点,数字输出有400多点,模拟量输入20个。
   下面以这个食品加工厂为例,组成一个集中控制系统,系统结构如图二所示。
    其中PLC(1)用于主系统,PLC(2)用于辅助系统。辅助系统的组成与主系统相似,因此图中省略了其构成。PLC选用S7-300系列的CPU315-2DP和S7-200系列的CPU226,PID模块为FM355C,通讯模块为CP342-5,扩展模块为IM153-1,I/O模块则使用到:数字输入模块选SM321、数字输出为SM322、模拟量输入为SM331。上位机选用西门子的工控机,它内置了PCI接口的CP5611卡用于与PLC通讯。
    选用S7-300系列的CPU315-2DP是为了能进行扩展I/O模块以满足控制点数的要求,而用于扩展的IM模块的选型则是依据IM模块与中央控制器CPU315-2DP的距离。
    由于所有的I/O模块均放在同一组控制柜里,因此选用了通讯距离在5米范围内的IM153-1[1]。当IM模块与中央控制器的距离较远时可以选择通讯范围为100米的型号的IM模块。
    触摸屏选用富士UG420H-SC1,10.4英寸、128色STN显示,基于bbbbbbs95/98/NT操作平台下的专用组态软件,界面友好直观,易学易用,大大节省产品开发周期。编程软件中备有大量的图形库(开关、灯、棒图等)供选择,还可以根据用户需求编辑所需要的工艺图形,能够转换BMP文件和AUTOCAD中的DXF文件

                  

图二:  控系统硬件组成及结构


2 触摸屏的通讯设置及界面设计
    在硬件连接完成后,需要在组态软件中指定系统的硬件配置以及设置一些通信参数等等。首先制定所使用的触摸屏的类型,这里选择默认的UG420(640*480 10.4inches);下一步指定和触摸屏通讯的PLC类型及型号,这里选SIEMENS S7-PROFIBUS;后一步指定系统参数,首先是读区和写区,读区是指作为从PLC读入数据的缓冲,如果系统中需要显示趋势图的话那么读区应当设大一些,一般设1000个字就可以了,写区用于显示存储屏幕的状态、页码、画面层叠以及报警状态等等。另外在对话框No.of Word Setting for I/O中需要指出触摸屏的MPI地址,以及传输的帧长度,MPI地址在PLC的硬件组态里已经定义好了,两者必须一致,否则会出现通信错误。另外帧长度为32字节;奇偶校验为奇校验;数据长度8位;停止位1位;通讯方式RS-485。
    UG00S-CW具有非常完善而强大的组态功能,在开发组态的时候,开发者可以不去考虑通信协议的问题,因为富士公司已经将这一切的技术细节都屏蔽掉了,它具有智能的寻址功能。在建立一个按钮时,这个按钮在PLC中的预先有定义(在西门子PLC中,无论是数字量还是模拟量的定义都是在DB块中)。假设这个按钮的地址是DB2.DBX2.0(它的含义是第2个DB块中第2个字节的第0位),触摸屏中按钮的地址应表示为DB2:2-0。我们可以看到,除了地址的书写方式有所不同以外,你几乎无需作其他的工作,你无需去定义变量、更无需去理会通信的帧结构等等。
    对于模拟量同样如此,只不过在模拟量中你需要指出模拟量所占的字节个数,其他的同数字量一样简单。
    可以说,UG00S-CW在处理基本的模拟数字量的时候非常简单、方便,但是在处理一些较为复杂的情况时却遇到了意想不到的问题。在这个食品生产线的集中控制系统,其中就涉及到富士触摸屏和西门子PLC中的通信格式的兼容问题。
    系统中有些PID控制的模拟量需要用趋势图来显示,UG00S-CW中显示趋势图并不复杂,首先点一下趋势图的图标,在弹出的对话框中选择趋势图的类型,然后选择每条曲线对应的地址即可。但是在联机调试时却总是出现comunication error(通信错误)信息,经过排查发现问题出在趋势图上,如果将趋势图从程序中去掉,则一切正常,后来我就尝试先将西门子PLC中的对应的模拟量数据读入触摸屏的缓冲(即内部存储区),然后将趋势图每条曲线的地址改为对应的内部地址。经过联机调试,发现不再出现comunication error信息,但是趋势图的曲线的显示却极不正常。经过观察,发现除了当模拟量的值为零时曲线显示正常,而为非零时曲线则指向无穷大。这个问题曾让笔者百思不得其解,后来终于想到有可能是西门子PLC和富士触摸屏在存储格式上可能会不兼容。原来富士触摸屏中趋势图中的模拟量一般都是双字(4字节),它从西门子PLC读取的顺序是将字读为高字,第二个字读为低字,而西门子PLC中模拟量的存储为先存低字再存高字,这样富士触摸屏从西门子PLC中读入的数据刚好都是高低字颠倒的。因为一般模拟量的值都比较小,所以高字都为零,这样相当于将原来的值乘了一个2的16次方的数,远远超过了模拟量的上限,所以才出现了以上情况。
    为了解决以上问题,需要将PLC中的数据读入,然后依次高低字颠倒,然后再将趋势图的曲线地址指向存储修正数据的内部地址即可。为了完成这个功能,需要用到UG00S-CW的宏指令,富士UG00S-CW平台提供了丰富的宏命令集,
    主要有以下几类:
    屏幕类,当打开一个界面时可执行的OPEN macro,当关闭一个界面时可执行的 CLOSE macro,当打开一个界面后不断循环执行直到这个界面关闭为止时停止的 CYCLE macro。
    按钮类,当按下一个按钮时可执行的 ON macro和当松开一个按钮时可执行的 OFF macro。
    宏模式,即宏指令程序段受某一个比特位的控制,当这一位为1时执行,为0时停止,这个比特位可以是PLC中的地址,也可以是触摸屏的内部地址。
富士UG00S-CW的宏命令集和汇编语言非常相似,不过此外还增加了许多系统命令功能和辅助功能,使得开发程序更加方便快捷。触摸屏中的存储格式是字,地址用$u来表示,例如$u1000就表示第1000个字,$u1000-14就表示第1000个字的第14位,触摸屏中没有用来表示字节的地址表示方式。在这个食品生产线上有多个PID控制回路,每个回路对应一个趋势图,以个回路为例,它占用Buffer1(多有12个Buffer可供使用)趋势图有三条曲线PV、SP、OP,它们所对应的PLC地址分别为DB10:DBD0,DB10:DBD4, DB10:DBD8,然后将调整后的地址存入定为$u500~$u505,程序段如下:

    /*首先将模拟量读入触摸屏内部,使用块赋值BMOV指令,即将DB10:DBD0~ DB10: DBD8赋值到$u500~$u505*/
$u500=DB0010:0000  C:12(BMOV)
//下面将各个量的高字和低字颠倒
$u600=$u500 (W)
$u500=$u501 (W)
$u501=$u600 (W)
$u602=$u502 (W)
$u502=$u503 (W)
$u503=$u602 (W)
$u604=$u504 (W)
$u500=$u505 (W)
$u505=$u604 (W)

    然后将此程序段拷贝到每一屏幕的CYCLE macro中,然后将buffer地址初始地址指向$500,抽样模式定为:Constant Sample,曲线条数(即No. of Word)定为3条,存储长度为500,其他的设置为默认值,趋势图中对应三条曲线的地址改为$u500,$u502,$u504,这样才能保证触摸屏中的数据和PLC中的数据同步更新。将程序下载到触摸屏,经过联机测试,一切正常。
3 结束语
    富士触摸屏以及西门子PLC由于其产品具有很高的稳定性,而且在软件开发上非常高效快捷,因此在工控方面,两者相结合是一个很不错的选择,能够充分发挥两者的优点。但是由于两者毕竟不是同一厂商,所以难免会在某些细节的兼容性上会有纰漏,这是我们在设计工控系统时特别要注意的地方,硬件漏洞软件补是IT界永恒不变的方法,在开发商还没有使他们的产品尽善尽美之前,我们应当运用我们自己的智慧来完善我们的系统。

参考文献:1、富士触摸屏用户手册USER’S MANUAL 

随着我国经济的高速发展和城镇化程度的不断**,工业污水和生活污水日益增多。为维持经济的持续、健康增长和生态环境的良性循环,必须对工业及生活污水加以处理。目前,在我国主要城市和经济发达地区的城镇均已建成了各种规模的污水处理厂,但大部分经济欠发达地区的县市和小城镇没有对各类污水采取处理措施,而是直接排入附近河流。随着环保要求的不断**,未采取污水处理措施的小城镇在未来若干年内必然会建立污水处理厂。小城镇量大面广,对污水处理设施的需求量很大。同时,受投资额的限制,这些污水处理厂更愿意采用经济、实用的产品。本文介绍的监控系统在满足污水处理设备安全、高效运行的同时具有很好的性价比,具有良好的经济、社会效益和推广前景。
  2 原方案分析
  在污水处理厂内,各种污水处理设备分布较分散。为监视现场设备的运行参数和运行状态,需要建立一套中央监控系统。该监控系统由现场检测、数据采集和处理、数据通讯和中央监控等部分组成,现场检测仪表检测到的设备参数和运行状态经过处理后通过计算机网络上传至中央控制室,中央控制室内的运行人员通过监控计算机监视全厂设备的运行状态。运行人员根据运行参数和设备运行状态发出各种控制指令,控制指令通过计算机网络传到现场,控制设备的相应动作。
  现场需要对模拟量和开关量进行监控,主要模拟量有**信号、液位信号、压力信号、阀门开度信号等,主要开关量信号有刮泥车和吸泥车的启动、停止、运行、到位、故障及真空泵的工作状态等等。这些现场设备与中央控制室距离较远,目前大多数监控系统由分布式I/O完成检测与控制,现场设备与中央控制室之间的数据交换大都采用DP网络连接方式,在中央控制室设置DP主站,现场设备作为DP从站挂在DP网上。系统结构简图如图1所示。一个污水处理厂包括多个现场设备,每个现场设备作为1个DP从站连接到DP总线上。采用这样连结方式,现场施工工程量很大,需要架设电缆和桥架,费用较高,并且每个DP从站与DP主站之间采用有线连接,电缆容易损坏,维护起来比较麻烦。
  

                                 图1 传统监控系统结构图


  针对传统控制系统存在的缺点,我们提出了基于和利时公司小型一体化PLC HOLLiAS-LEC G3的无线解决方案。该方案的系统结构如图2所示。与传统通讯方案相比,该方案在现场设备和中央监控室间采用了无线通讯方式,具有传输距离长、可靠性好、抗干扰能力强、节省电缆、维护成本低等优点。
  3 方案设计
  如图2所示,该方案采用和利时公司的小型一体化PLC的CPU模块LM3107进行数据采集和传输。LM3107本身自带 RS232通讯接口,通过RS232连接到天线上,天线之间采用Modbus协议,具备CRC校验,协议简单、可靠性高。通过天线,可以实现远距离Modbus无线通信,从而实现了每个污水池(Modbus从站)的数据与上位(Modbus主站)之间的数据交换。然后,Modbus主站再通过DP通讯模块接入DP总线,这样就可以实现所有现场设备(Modbus从站)与中央监控室(DP主站)之间的数据交换,完成数据采集与控制功能。

                      图2 基于和利时PLC的无线监控系统

  图3为数据流程示意图,每个模块之间的通讯都是双向的。对于污水池采集上来的数据,模拟量通过模拟量输入模块LM3310输入到下位LM3107模块(Modbus从站),开关量直接输入下位LM3107模块(Modbus从站),上位采用1个LM3107CPU模块与1个LM3401DP从站模块连接到DP网络中。
  下位的LM3107通过RS232与无线通讯模块连接作为Modbus从站,上位的LM3107通过RS232与无线通讯模块连接作为Modbus主站。LM3107模块支持标准的Modbus RTU协议,所以上位与下位LM3107之间采用Modbus通讯。上位的LM3107再通过LM3401DP从站模块与中央监控室进行数据交换。
  无线通讯可以根据实际情况选择如下Modbus通讯参数:
  校验:奇校验、偶校验、无校验
  位数:7位、8位
  波特率:300bps 、600bps、1200bps、2400bps、4800bps、9600bps、19200bps、38400bps

                           图3 数据流程示意图

  4 方案优势
  本文提出的解决方案具有如下优势:
  1. 只需要1条DP线就可以把所有污水池采集的数据传送到中心监控室DP主站,与传统通信方案相比节省了大量通讯线缆,同时也减小了线缆施工工作量,**了系统的可靠性和可维护性。
  2. 采用无线通讯方式,数据传输距离长,数据利用天线透传,传输的距离与天线有关,多5K米。
  3. 采用LM3107可以实现多247个Modbus从站互联,节省了每个污水池的DP从站模块费用,取而代之的是每个污水池做为Modbus从站存在,只需要1个DP从站即可实现所有的污水池数据与中心监测站数据的交换。
  5 结束语
  经过一段时间的调试和试运行,由HOLLiAS-LEC G3系列小型一体化PLC作为控制系统的无线监控方案已成功应用于污水处理现场。实践证明,该设计方案整体成本较低、数据传输距离长、可靠性好、抗干扰能力强、维护成本低、可操作性高,在市场中具备强有力的竞争能力,为污水处理行业增添了一套完善的解决方案。

摘要: SM1000是一个高性价比的运动控制芯片级方案,也是SOPC解决方案,它提供长达32位的可编程计数和脉冲发生的功能,简易而又方便于客户应用,面向更广泛、更一般的运动控制应用领域。
关键词: 运动控制   可编程计数和脉冲发生   SOPC 


现在的运动控制器已经发展到了以专用芯片(ASIC)或FPGA作为核心处理部件的开放式运动控制器。这样的解决方案突出的特点,是让运动控制的处理部分以独立的、硬件性方式展开,增加系统的性能和可靠性。有效地解决了以单纯的MCU或DSP系统的处理带宽限制,以及用户系统软件和运动控制软件混杂性的问题。
业界也早已出现了各种类型的运动控制专用芯片,虽然有较高的功能、性能,但一般都比较复杂,使得客户应用起来非常的困难。
用户们常常需要一种容易用的运动控制芯片与通用MCU/CPU结合起来的系统方案,用以面向更一般性的或中低端的应用场合。这样的方案里,运动控制芯片部分可以担当关键的马达控制信号发生功能,又可以拥有较高的性能和其他的系统性接口资源(若是利用8253/8254之类的计数器,就显得捉襟见肘,计数长度太短,且没有其他资源);而在MCU/CPU部分可以通过一些简单的控制指令完成对马达运动的控制,更多的资源用来处理系统界面或应用软件。
简单而言,就是需要一个方案有效地协调了运动控制系统的软硬件的分工,软件部分方便客户开发,硬件部分确保系统性能。
深圳市斯迈迪科技发展有限公司 (Smarteer)推出的SM1000系列SOPC运动控制芯片就是上述需求的解决方案。它是在高性能系列运动控制FPGA/芯片——SM5000方案后,经过不断的技术累积和市场调查后,特地为中低端市场应用推出的。
SM1000是一个简易的运动控制芯片系列,它提供长达32位的可编程计数和脉冲发生的功能,脉冲频率可以高达10M以上。同时在芯片内部增加了许多系统性的资源,比如:内置3-8译码器、地址锁存器、矩阵键盘扫描接口和通用I/O等。由于芯片是SOPC技术方案,因此还可以根据客户的具体需求做定向化的设计。
SM1000简易而又方便于客户应用,它面向更广泛、更一般的运动控制应用领域。利用它结合MCU/CPU可以便捷地组建成一个运动控制系统,尤其是一些嵌入式、系统集成的应用系统。
SM1000非常适合于独立多轴的马达控制场合,同时结合控制软件也可以非常灵活地实现常见的加减速运动控制,甚至多轴联动控制。
以下是SM1000系列芯片技术特点和应用介绍。


一、SM1000芯片方案的技术指标
 输入时钟CLK频率高到78MHz。
 1-4道32位计数器,可达计数范围为:1~ 2147483647。
 1-4道32位直接脉冲分频器,可设置频率系数范围为:1~ 2147483647。
 1-4道正/反向脉冲输出,可接成差分输出。
 1-4道正/反向脉冲输出有效指示,可接成差分输出。
 高输出脉冲频率为:CLK/64(SM1001不同)
 其他功能:
 内置3-8译码器,输出7个附加片选信号;
 8通用输入+8通用输出;
 可接8X8矩阵键盘,直接读取按键编码/有效值;
 8位数据接口(内置地址锁存,可以直接接MCS51 CPU)。


二、SM1000系列规格


三、SM1000功能框图

四、功能引脚介绍

五、应用方向举例
 步进马达控制器
 轻纺设备:缝纫机/绣花机等
 机器手/臂
 空间座标测量/定位系统
 经济型通用运动控制器
 钻孔、铣边设备
 其他


六、编程应用介绍
A、CPU接口
该芯片采用通用8051 8位地址/数据复用接口。由于芯片内内置了地址锁存器,因此,可以直接与8051单片机地址/数据总线相连,而不需要通过地址锁存器分离出地址和数据总线。另外,该芯片内置了一个3-8译码器,可以输出7个片选信号,以共用户扩展地址译码用。这样,极大地方便了用户基于8051单片机的应用系统设计。整个接口只需要14根线。包括:
 8根地址/数据总线:AD0~7
 3根片选线:CS1~3
 1根地址锁存允许线:ALE
 1根读允许线:RD_n
 1根写允许线:WR_n
输出7根片选线,地址划分见《表二:地址分配表》。

B、地址分配

C、CPU读/写操作
读写脉冲计数器:
脉冲计数器的值可以用命令直接写,但要读出时,就必须先用锁存脉冲计数器值命令,先锁存起来,再用命令直接读;如下所示。
写脉冲计数器操作格式:
a、(*地址)=  数据 ;
其中:地址=基地址+0+nn*16+mm;   nn=(0~3)为通道号,mm=(0~3)为字节地址;
            数据为8bit字节数据。

读脉冲计数器操作格式:
a、(*锁存地址)=  任意数据;
b、变量=(*读地址);
其中:锁存地址=基地址+10+nn*16;   nn=(0~3)为通道号,10为锁存脉冲计数器地址;
            锁存命令的数据为8bit字节任意数据,其值无意义。
            读地址=基地址+0+mm;   mm=(0~3)为字节地址;
注意:脉冲计数器长度为32位,允许全范围设置:0x00000000~0xFFFFFFFF。实际输出脉冲个数由下面公式给出:
           脉冲个数=(脉冲计数器值+1)/2;
           当脉冲计数器值为大值0xFFFFFFFF时,允许大脉冲个数为2147483648。
           当脉冲计数器值为小值0x00000001时,允许小脉冲个数为1。
其中,脉冲计数器值应该为奇数,如为偶数,则后一个脉冲宽度很窄。输出脉冲为对应频率的方波。
           
写脉冲频率数据:
写脉冲频率数据操作格式:
a、(*地址)=  数据 ;
其中:地址=基地址+4+nn*16+mm;   nn=(0~3)为通道号,mm=(0~3)为字节地址;
            数据为8bit字节数据。

32位情况:脉冲频率值长度为32位,允许设置范围为:0x00000001~0xFFFFFFFF。实际输出脉冲频率由下面公式给出:
当脉冲频率值<0x00800000 时:
                   脉冲频率=(输入时钟频率/2^28)*脉冲频率值;
当脉冲频率值≥0x00800000 时:
                   脉冲频率=(输入时钟频率/(2^36+2^28)*脉冲频率值。

24位情况:脉冲频率值长度为24位,允许设置范围为:0x000001~0xFFFFFF。实际输出脉冲频率由下面公式给出:
当脉冲频率值<0x00400000 时:
                   脉冲频率=(输入时钟频率/2^25)*脉冲频率值;
当脉冲频率值≥0x00400000 时:
                   脉冲频率=(输入时钟频率/(2^33+2^25)*脉冲频率值。

启动脉冲通道工作:
启动脉冲通道工作操作格式:
a、(*地址)=  数据 ;
其中:地址=基地址+8; 
数据为8bit字节,作为允许启动标志,定义为:
D0----为1时,允许通道1启动,为0时不启动;
D1----为1时,允许通道2启动,为0时不启动;
D2----为1时,允许通道3启动,为0时不启动;
D3----为1时,允许通道4启动,为0时不启动。

停止脉冲通道工作:
停止脉冲通道工作操作格式:
a、(*地址)=  数据 ;
其中:地址=基地址+9; 
数据为8bit字节,作为允许停止标志,定义为:
D0----为1时,允许通道1停止,为0时不停止;
D1----为1时,允许通道2停止,为0时不停止;
D2----为1时,允许通道3停止,为0时不停止;
D3----为1时,允许通道4停止,为0时不停止。

回读数据锁存:
CPU要读相应功能的数据,就必须先锁存其数据,才能读;否则,只能读取上次锁存的数据。共有下面三种功能数据:
 脉冲计数器值:32bit;
 通用输入口值:8bit;
 按键编码值:7bit;
CPU读数据是按8 bit字节读方式进行的,32 bit脉冲计数器值需要读4次,可按0~3任意顺序读取。8 bit值只能从地址0读取。格式为:
a、(*锁存地址)=  任意数据;
b、变量=(*读地址);
其中:锁存地址和读地址,可参见地址分配表一。

8/8位通用输入/输出口:
该芯片包含8位通用输入口和8位通用输出口。
8位通用输入口读命令为:
a、(*锁存地址)=  任意数据;
b、变量=(*读地址);
其中:锁存地址=基地址+12;
            读地址    =基地址+0;(所有读地址相同)

8位通用输出口写命令为:
a、(*写地址)=  数据;
其中:写地址=基地址+11;
            写数据为8位字节数据。

8X8键盘接口:
该芯片支持8X8矩阵键盘,自动扫描键盘,识别按键键码,CPU通过接口可读取当前按键编码值。命令如下:
a、(*锁存地址)=  任意数据;
b、变量=(*读地址);
其中:锁存地址=基地址+28;
            读地址    =基地址+0;(所有读地址相同)

按键编码格式:

标志位:为1表示有键正按下,为0表示没有按键;
X:忽略;
回读码:取0~7为当前按键所对应的行(或列)编码,特指输入线(KBC_0~7);
扫描码:取0~7为当前按键所对应的列(或行)编码;特指输出线(KBS_0~7);


七、编程示例
//A、地址常量定义:(设芯片基地址为0xe000)

#define   MC_sys_CLK                                       32000000                                             //定义芯片工作频率

#define   MC_CNT_WR_Base_Addr                 (volatile unsigned char *) 0xe000     //定义计数器值写基地址
#define   MC_CNT_Latch_WR_Base_Addr     (volatile unsigned char *) 0xe00A    //定义计数器锁存写基地址

#define   MC_FRQ_WR_Base_Addr                (volatile unsigned char *) 0xe004     //定义频率值写基地址

#define   MC_Startup_WR_Base_Addr            (volatile unsigned char *) 0xe008     //定义启动写基地址

#define   MC_Stop_WR_Base_Addr                 (volatile unsigned char *) 0xe009     //定义停止写基地址

#define   MC_GPOut_WR_Base_Addr             (volatile unsigned char *) 0xe00B     //定义通用输出值写基地址

#define   MC_GPIn_Latch_WR_Base_Addr    (volatile unsigned char *) 0xe00C     //定义通用输入值锁存写基地址

#define   MC_KB_Latch_WR_Base_Addr       (volatile unsigned char *) 0xe01C     //定义键盘编码值锁存写基地址

#define   MC_ RD_Base_Addr                           (volatile unsigned char *) 0xe000     //定义回读值读基地址


//B、子程序片:

//0、延迟子程序:芯片读/写命令间要求有一定的定时间隔。
void delay(int n)
{     int i;
      for( i = 0; i<n ; i++);
}

//1、写第n通道脉冲数值(必须为奇数)
cnt = Np*2-1;
MC_CNT_WR_Base_Addr[n*16+0] = (char)((cnt>>  0) & 0x0ff);delay(10);
MC_CNT_WR_Base_Addr[n*16+1] = (char)((cnt>>  8) & 0x0ff); delay(10);
MC_CNT_WR_Base_Addr[n*16+2] = (char)((cnt>>16) & 0x0ff); delay(10);
MC_CNT_WR_Base_Addr[n*16+3] = (char)((cnt>>24) & 0x0ff); 

//2、读第n通道脉冲数值
MC_CNT_Latch_WR_Base_Addr [n*16+0] = (char)0; delay(10); //锁存第n通道脉冲数值
Cnt  = MC_ RD_Base_Addr [0]; delay(10);                                       //回读数据0字节
Cnt |= MC_ RD_Base_Addr [1]<<8; delay(10);                                //回读数据1字节
Cnt |= MC_ RD_Base_Addr [2]<<16; delay(10);                              //回读数据2字节
Cnt |= MC_ RD_Base_Addr [3]<<24;                                                //回读数据3字节
if( Cnt ==0xffffffff)
{
    //第n通道脉冲输出完处理
}

//3、写第n通道脉冲频率值
Nfrq= frq_pulse*0x10000000/MC_sys_CLK;  //注意整数运算溢出问题
MC_FRQ_WR_Base_Addr [n*16+0] = (char)((Nfrq>>  0) & 0x0ff); delay(10);
MC_FRQ_WR_Base_Addr [n*16+1] = (char)((Nfrq>>  8) & 0x0ff); delay(10);
MC_FRQ_WR_Base_Addr [n*16+2] = (char)((Nfrq>>16) & 0x0ff); delay(10);
MC_FRQ_WR_Base_Addr [n*16+3] = (char)((Nfrq>>24) & 0x0ff);

//4、启动多个通道脉冲工作
MC_Startup_WR_Base_Addr[0] = (F0 & 1) | ((F1<<1)&2) | ((F2<<2)&4 | ((F3<<3)&8) ;

//5、停止多个通道脉冲工作
MC_Stop_WR_Base_Addr[0] = (F0 & 1) | ((F1<<1)&2) | ((F2<<2)&4 | ((F3<<3)&8) ;

//6、8位通用输出口输出
MC_GPOut_WR_Base_Addr [0] = (char)(GPOut &0x0ff) ;

//7、8位通用输入口输入
MC_GPIn_Latch_WR_Base_Addr [0] = (char)0; delay(10);   //锁存通用输入口值
GPIn_V = MC_ RD_Base_Addr [0] ;


//8、7位键盘按键编码输入
MC_KB_Latch_WR_Base_Addr [0] = (char)0; delay(10);   //锁存按键编码值
KBCode = MC_ RD_Base_Addr [0] ;
if(KBCode & 0x80)
{  
//当前有按键按下处理  
}


八、基于SM1000的运动控制系统框图

在上述的方案里,除了1-4轴运动控制本身之外,在板上根本不需要译码器、锁存器之类的芯片,按键扫描电路也节省了不少MCU带宽开销,数字量通用输出/输入也增加了系统的控制方便性。


联系方式

  • 地址:上海松江 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 邮编:201600
  • 联系电话:未提供
  • 经理:聂航
  • 手机:15221406036
  • 微信:15221406036
  • QQ:3064686604
  • Email:3064686604@qq.com