2009年10月22日星期四

【收藏】S7-200模拟量换算

S7-200模拟量换算

模拟量比例换算

因为A/D(模/数)、(D/A)数/模转换之间的对应关系,S7-200 CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。这个关系就是模拟量/数值量的换算关系。

例如,使用一个0 - 20mA的模拟量信号输入,在S7-200 CPU内部,0 - 20mA对应于数值范围0 - 32000;对于4 - 20mA的信号,对应的内部数值为6400 - 32000。

如果有两个传感器,量程都是0 - 16MPa,但是一个是0 - 20mA输出,另一个是4 - 20mA输出。它们在相同的压力下,变送的模拟量电流大小不同,在S7-200内部的数值表示也不同。显然两者之间存在比例换算关系。模拟量输出的情况也大致相同。

上面谈到的是0 - 20mA与4 - 20mA之间换算关系,但模拟量转换的目的显然不是在S7-200 CPU中得到一个0 - 32000之类的数值;对于编程和操作人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的最终目标。

如果使用编程软件Micro/WIN32中的PID Wizard(PID向导)生成PID功能子程序,就不必进行0 - 20mA与4 - 20mA信号之间的换算,只需进行简单的设置。

通用比例换算公式

模拟量的输入/输出都可以用下列的通用换算公式换算:

Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl

其中:

Ov:
换算结果
Iv:
换算对象
Osh:
换算结果的高限
Osl:
换算结果的低限
Ish:
换算对象的高限
Isl:
换算对象的低限

它们之间的关系可以图示如下:

图1. 模拟量比例换算关系

 

实用指令库

在Step7 - Micro/WIN Programming Tips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程。

为便于使用,现已将其导出成为”自定义指令库“,可以添加到自己的Micro/WIN编程软件中应用。

 

在这个指令库中,子程序Scale_I_to_R可用来进行模拟量输入到S7-200内部数据的转换;子程序Scale_R_I可用于内部数据到模拟量输出的转换。

其中scale_I_R程序段例:




 

 

将4 - 20mA模拟量输入转换为内部百分比值
将内部百分比值转换为4 - 20mA模拟量输出

 

对于精度要求不高的地方,4-20ma转换成0-20ma 可按比例计算

公式 =((ai-4)/16)*20

其程序段实例:

S7-200 +TD400C显示系统时间、运行时间的程序




看见论坛上有些朋友对西门子TD文本显示器显示时钟的问题比较关心,在这个帖子里笔者给出一个已经应用于工程上的程序例子,并作出详细分析,希望对关心这个问题的朋友有些帮助。

    这个程序是S7200+TD400C显示系统时间、当班运行时间、累计运行时间的例子。
    以下是s7-200 S7200+TD400C显示系统时间、运行时间的程序详解:
   
系统硬件配置如下:

    PLC:西门子S7-200 CN;CPU 226 CN REL
02.01;AC100~230V电源/DC24V输入/继电器输出;订货号6ES7 216-2BD23-0XB8;固件02.01 Build
2;ASIC:01.00。

    文本显示器:TD400C;订货号6AV6 6640-0AA00-0AX0;自带9芯TD/CPU电缆;版本:1.0.0.3。

    S7 -200与TD400C通过TD400C随机配置的TD/CPU通信电缆连接,实现电源供给和通信(因为当TD400C与S7-200
CPU之间的距离小于 2.5米时,采用TD/CPU电缆的方式进行供电;当TD400C与S7-200 CPU之间的距离超过2.5米时,使用外部电源供电并使用
PROFIBUS组件连接网络)。    系统软件配置如下:

    S7-200参数设置:在“系统块”的“断电数据保持”中设置VW1600以后2000个单元为断电数据保持。

    TD400C参数设置:

        TD400C地址:1

        CPU地址:2

        参数块地址:0

        波特率:9.6K

        HSA:31

        GUF:10

        键盘声音反馈:开

        屏幕保护时间:10分钟

­

­

­

S7-200的系统时钟调整为准确的北京时间。

    下面先写一下该程序所用到的存储器的意义,以便于理解程序。

本班运行时间:小时VW1600、分钟VW1604、秒VW1608;

累计运行时间:小时VW1620、分钟VW1624、秒VW1628;

系统时间(BCD码字节):年VB2000、月VB2001、日VB2002、小时VB2003、分钟VB2004、秒VB2005、星期VB2007;

系统时间(整数):     年VW1644、月VW1648、日VW1652、小时VW1656、分钟VW1660、秒VW1664;

本班设备开始运行时间:小时VW1680、分钟VW1684、秒VW1688;

本班设备最后运行时间:小时VW1700、分钟VW1704、秒VW1708;

上班时间设置:小时VW1720、分钟VW1724;

下班时间设置:小时VW1740、分钟VW1744;

本班运行时间复位:VW1760;

本班运行时间被复位的时间:年VW1764、月VW1768、日VW1772、小时VW1776、分钟VW1780;

累计运行时间复位:VW1800;

累计运行时间被复位的时间:年VW1804、月VW1808、日VW1812、小时VW1816、分钟VW1820;

EEPROM写入次数:VW3558

  ;

因为考虑到编程中可能会用到一些中间存储器,所以在TD400C中定义存储器时留了余量,每两个存储器之间都有1个字的存储器留作备用。    根据相关技术要求,先组态TD400C画面,达到预期目的。

  “工具”——“文本显示向导”,先配置TD400C:

  

  

  

  

  

      
然后点击“用户菜单”,配置用户菜单。因为该工程的界面要求很简单,所以每个菜单项只配置了1个屏幕(最多可以配置8个屏幕)。

      第1个屏幕:

  

  该屏幕中的第1个数据(这里的数据排列顺序为:先按第1排从左至右、再按第2排从左至右的顺序依次排列,下同):

  

  因为版面的问题,该屏幕的其它PLC数据和其它屏幕中的PLC数据就不一一列举了。这些数据都是VW、无符号数类型,具体对应情况请参阅3楼说明。    第2个屏幕:

      第3个屏幕:

  

  第4个屏幕:

  

  第5个屏幕:

  

      第6个屏幕:

  

  第7个屏幕:

  

  第8个屏幕:

      下面是主程序部分:

  首先在主程序中调用子程序:

      下面是子程序:

  先调用TD向导生成的子程序:

      

  

  

      TODR指令读到的实时时钟是BCD字节,要想把这个BCD字节显示出来,需要进行转换。

    在网上也曾查阅过,一部分人先用BTI指令把这个BCD字节转换整数,然后用ITA指令把整数转换为ASCII字符串,在画面中嵌入这个ASCII字符串用于显示。

    
笔者也这样试过一下,可能因为其它问题没有测试成功,而又突然想到——在程序的多处都需要用到这个实时时钟数据,所以转换为ASCII字符以后对程序其它地方没什么作用。经过考虑,我的转换思想是:先用BTI指令把这个BCD字节转换BCD整数,然后用BCDI指令把BCD整数转换为正常的十进制/十六进制整数,在画面中嵌入这个得到的整数用于显示。在程序的其它地方也可以使用这些实时时钟变量。    



  

  

  

  

      下面是该工程的TD400C显示画面:


2009年10月19日星期一

bcb中控制Edit控件只输入数字


在BCB中控制Edit控件的输入是件很麻烦的事,在这一点上BCB做的没有VC好。但是既然做为程序员,那就没有什么可以被难倒的。我们可以采取自己写代码控制的方法来实现对其的控制。这里只说两种简单的方法,抛砖引玉吧。



第一种:控制事件方法


在Edit控件的KeyPress事件中控制输入的Key,把不需要的Key设置成0,就OK了。例如:


void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{

    //控制Edit1只能输入数字

    if ( (Key<'0'||Key>'9') && (Key != '\b') )

    {

        Key = 0;

    }

}

这种方法只能在KeyPress事件中,不能在KeyDown或KeyUp事件中。


第二种方法:调用API的方法


不说了看代码吧


void __fastcall TForm1::FormShow(TObject *Sender)

{

    //控制Edit2只能输入数字

    SetWindowLong(Edit2->Handle, GWL_STYLE, GetWindowLong(Edit2->Handle,GWL_STYLE)|ES_NUMBER);

}


或许朋友们有更好的方法,请告诉我。



[收藏]成功走上管理岗位的11个技巧

成功走上管理岗位的11个技巧

 能够帮助经理人"有所不为"的管理与领导技巧数不胜数,不过,本书精选的其中一些方法,能帮助他们更快地完成从一味地"执行"到侧重"管理"与"领导"的转变,是被实践证明了的很好的管理方法。我把这些关键的管理与领导技能称为"黄金技能",它们分别是:

  ・拓展下属的工作能力,包括给他们提供培训和授权。

  ・积极主动地倾听员工的心声。

  ・给予并接受员工的反馈。

  ・激励团队成员。

  另一种成功走上管理岗位的方法是,学会享受管理工作的乐趣,享受你能对其他人施加的积极影响。为什么不最大限度地发挥管理者的作用呢?很多"意外型经理人"都发现,当他们开始享受工作的乐趣,并意识到管理工作的重要性时,所有的问题都不存在了。有过这种经历的经理人告诉我,这种体验使他们的工作变得更轻松、压力更小了,以出乎自己意料的速度很快作出了成果。下面,我将与大家分享这些技巧,它们曾帮助很多"意外型经理人"成长为成功的经理人。

  1.不找借口。

  成功的经理人知道应该停止抱怨,停止抱怨公司或上层主管把自己安排到管理岗位上;也不会因为自己还没有准备好,或不善于做管理而自怨自艾;同时也接受下属员工有可能对管理者怨声载道的事实。他们把所有的精力都放在管理工作中,一旦他们做到了这些,工作就将变得充满挑战和乐趣。成功的经理人都不愿把创造力和精力浪费在给自己找借口上。

  2.尝试新事物。

  成功的经理人勇于尝试自己从未想过的新生事物,敢于去做其他的经理人从未做过的事情。举个例子,在华盛顿某个政府部门任职的一位经理人告诉我,她准备在今后每次会议开始前,给大家讲一则与管理有关的笑话(当然,一定是非常有意思的笑话)。这种做法与众不同,很快就帮助她增强了与员工的亲密关系。尝试新事物帮助这位经理人快速达到了自己的目标。

  3.自我激励。

  成功的经理人会告诉自己,最近哪些工作做得特别出色,在哪些方面又取得了进步,以及克服了哪些困难。他们经常与内心的自己展开积极的对话,自己祝贺自己。他们认识到,其他人不可能给予他们所需要的积极反馈。因此,他们自己行动,学会了自我激励。他们是非常自信的一群人。

  4.使目标可视化。

  成功的经理人对于自己想要达成的目标有着清楚的认识(比如,与每个下属建立良好的合作关系、让每个员工工作效率更高),并在脑海中不断加深对成功图景的印象,直到它已成为他们衡量自己及自身行动的一种标准。脑海中美妙的可视化图景能帮助他们取得难以置信的积极成果。

  5.认可员工的点滴进步,与下属构建信任关系。

  成功的经理人能够察觉下属的点滴进步,只要团队成员的工作取得了进展,就会适时地给予他们赞扬与鼓励。如果等到工作完成了才进行表扬,效果就不那么明显了。

  6.热情洋溢,说到做到。

  成功的经理人在取得成绩的时候都会兴奋异常。在分配任务或工作时,他们激情四射。他们从不放弃,并且鼓励其他人奋力一搏。

  7.不断地描绘愿景。

  当经理人与员工分享有关客户、商业环境、部门的突发事件、公司的未来发展方向等信息时,团队成员通常会对手头的工作更有兴趣。成功的经理人善于把员工的工作与部门及企业的目标结合起来。

  8.让员工知道你的企图心。

  经理人都有良好的企图心。他们想要管理得更出色,并带领团队走向胜利。然而,只有良好的企图心是不够的,因为没有人真正了解经理人的企图心是什么。在工作场合,人们评价经理人工作的标准,是他们的行动、举措,以及作出的成绩。成功的经理人知道,应该把自己的企图心贯彻到工作实践中,而不是一个人在那里孤芳自赏。

  9.增强员工的自信。

  有些经理人认为,帮助员工是经理人能做的最好的事情,这显示了对员工的关心和爱护,能赢得员工的尊敬。事实上,很多成功的经理人的观点与之截然不同。他们认识到,在大多数情况下,如果经理人能鼓励员工学习、发展,以及更独立地完成工作(并与其他团队成员团结互助),员工会更有自信,他们的工作质量、数量与速度都会提高。增强员工自信的最佳方式之一,是让团队成员参与决策。当员工亲身体验了决策过程,或根据自己的意志作出了决策之后,他们更有可能相信决策的正确性,更好地去执行它。如果只是经理人一个人作出决定,员工的响应程度就会差很多。当成功的经理人让团队成员参与决策过程时,员工就有了"主人翁"的意识。

  10.寻找一位导师。

  但凡优秀的企业,都会为经理人提供一位导师,帮助他们学习企业文化、规章制度,以及被企业认可的管理措施。如果企业没能提供这样一位导师,成功的经理人会在自己需要的时候,寻找适合自己的导师。经理人需要在企业中找到一位自己以及所有的团队成员都认可的导师,并且这个人要是一位出色的经理人。然后,经理人应该询问对方的意见,看他/她是否愿意帮助自己和自己的团队。

  11.与员工建立信任关系。

  在走上管理岗位后不久,经理人就发现,如果下属员工信任自己,管理工作就会变得更轻松,自己也可能取得更好的业绩。不过,与员工建立信任关系并不那么容易,因为绝大多数员工都对领导的动机抱有或多或少的怀疑。然而,如果经理人能够说到做到、履行诺言,维护员工的利益、诚实守信,为员工提供必要的人力与物力支持,不断地员工沟通,在个人层面上了解每一个员工,并为下属创造发展与成长的空间,就有可能与员工建立起信任关系。

【收藏】bcb中控制Edit控件只输入数字

bcb中控制Edit控件只输入数字

bcb中控制Edit控件只输入数字
2008年12月31日 星期三 10:55

在BCB中控制Edit控件的输入是件很麻烦的事,在这一点上BCB做的没有VC好。但是既然做为程序员,那就没有什么可以被难倒的。我们可以采取自己写代码控制的方法来实现对其的控制。这里只说两种简单的方法,抛砖引玉吧。

第一种:控制事件方法

在Edit控件的KeyPress事件中控制输入的Key,把不需要的Key设置成0,就OK了。例如:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
    //控制Edit1只能输入数字
    if ( (Key<'0'||Key>'9') && (Key != '\b') )
    {
        Key = 0;
    }
}
这种方法只能在KeyPress事件中,不能在KeyDown或KeyUp事件中。

第二种方法:调用API的方法

不说了看代码吧

void __fastcall TForm1::FormShow(TObject *Sender)
{
    //控制Edit2只能输入数字
    SetWindowLong(Edit2->Handle, GWL_STYLE, GetWindowLong(Edit2->Handle,GWL_STYLE)|ES_NUMBER);
}

或许朋友们有更好的方法,请告诉我。

[收藏]840D可扩展零偏�G505~G599

840D可扩展零偏–G505~G599

如果设定参数中的零点偏置中只能设定G54~G57,设定可扩展零偏如G505、G506 的方法如下:

   MENU SELECT–>“START UP”
  –>“MACHINE MD”
  –>“CHANNEL MD”
  –>找到“28080”.把它更改为“100”(增加坐标系数不大于100)更改
       此参数后会出现44000号报警。
–>MENU SELECT
–>进入服务(SERVICE)
–>按扩展键”>”
–>连续启动,进行NC数据备份,注意要选择补偿文件
–>回装刚才的备份
–>到此为止你就能看到G505~G599了
  (*注意:通过这个参数可以增加零点偏置,但是不要随便修改此数据,因为它牵涉到NC内存的重新分配,随意修改它可能会丢失部分其它数据,最好由机床厂家改。)

[收藏]bcb中输出一定长度的带有省略号的字符

bcb中输出一定长度的带有省略号的字符

//输出一定长度的带有省略号的字符
AnsiString __fastcall TForm1::StringFormat(const AnsiString & String, const int n)
{
    AnsiString temp = "";
    int tmpLength = n - Canvas->TextWidth("AAA");
    if ( Canvas->TextWidth("A") * String.Length() <= n)
    {
        return String;
    }
    else
    {
        int t = 0;
        char *q = String.c_str();
        for (int i=0;i<String.Length() && t<tmpLength; ++i)
        {

            temp+=q[i];
            t = Canvas->TextWidth(temp);
        }
        return (temp+"...");
    }
}
/////////////////////////////////////////////////////////////////////////

[收藏]移动没有标题栏的窗体发送

移动没有标题栏的窗体_清茶几许,人生百味

在窗体的顶部放上一个Image控件

然后在Image控件的MouseDown事件中写入如下代码
// 移动没有标题栏的窗体
Refresh();
if(Button == mbLeft)
{
ReleaseCapture();
Perform(WM_SYSCOMMAND, 0xF017, 0);
}

【收藏】C++ Builder 2010 安装ShockWave(即flash)控件

C++ Builder 2010 安装ShockWave(即flash 控件

罗树鹏 2009-10-12

安装了c++builder 2010(以下叫CB2010),发现在CB2010安装组件和BCB6完全不同。今天就将我如何在CB2010下安装Shockwave组件的方法写出来,希望对大家有个帮助。

对于这类组件的安装比较麻烦(相比其它两类组件来说)。首先创建一个BPK,步骤是选择菜单中的"Component",然后选择"Import Component"在弹出的Import Component界面中选择"Import ActiveX Control"

点击"Next",进入下一步。

选择需要导入的ActiveX组件,点击"Next",进入下一步。

选择这个组件要放入的Palette Page,然后点击"Next",进入下一步。

在这里我选择的是创建新的Package,也可以选择其它选项。点击"Next",进入下一步。

选择创建的包的路径和名称,填写描述,点击"Finish",后,IDE会自动编译下这个包。但是会出现类似于下面的错误。

Build

Checking project dependencies...

Compiling ShockWave.cbproj (Debug configuration)

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::GetDispID(wchar_t *, unsigned long, long *)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::RemoteInvokeEx(long, unsigned long, unsigned long, tagDISPPARAMS *, tagVARIANT *, tagEXCEPINFO *, Shockwaveflashobjects_tlb::IServiceProvider *, unsigned int, unsigned int *, tagVARIANT *)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::DeleteMemberByName(wchar_t *, unsigned long)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::DeleteMemberByDispID(long)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::GetMemberProperties(long, unsigned long, unsigned long *)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::GetMemberName(long, wchar_t * *)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::GetNextDispID(unsigned long, long, long *)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unresolved external '__stdcall Shockwaveflashobjects_tlb::IDispatchEx::GetNameSpaceParent(IUnknown * *)' referenced from F:\个人重要资料(勿删)\ADMINISTRATOR\桌面\DEBUG\SHOCKWAVEFLASHOBJECTS_OCX.OBJ

[ILINK32 Error] Error: Unable to perform link

Failed

Elapsed time: 00:00:03.7

这个问题的解决方法是把这几个出错的函数(应该是8个)声明成内联函数,即加inline关键字或者把实现部分回到头文件中。

然后就可以Build这个组件,如下图:

接下来安装这个组件就行了。

扩展知识:

1、本身就有BPK包的组件:安装这类组件很简单,首先打开这个组件的BPK安装包,然后在左面的Project Manager 中就会出现然后右键点击"te_db_dsgn_d9.bpl"选择"Install"就可以将此类组件安装上。

2、没有BPK文件而只有PAS文件或CPP文件的组件:我自己写的组件都不将它们打成BPK包。一般都会只是一个或者多个PASCPP)文件。安装这类组件首先要新建一个BPK然后右键选择"Contains"并点击"Add"加入自己的PASCPP)文件,然后如同第一个组件的安装即可。

2009年10月16日星期五

PLC与数控机床的关系

PLC与数控机床的关系


一、PLC和NC的关系

PLC用于通用设备的自动控制,称为可编程控制器。PLC用于数控机床的外围辅助电气的控制,称为可编程序机床控制器。因此,在很多数控系统中将其称之为PMC(PROGRAMMABLE MACHINE TOOL CONTROLLER)。数控系统有两大部分,一是NC、二是PLC,这两者在数控机床所起的作用范围是不相同的。可以这样来划分NC和PLC的作用范围:

1、实现刀具相对于工件各坐标轴几何运动规律的数字控制。这个任务是由NC来完成;

2、机床辅助设备的控制是由PLC来完成。它是在数控机床运行过程中,根据CNC内部标志以及机床的各控制开关、检测元件、运行部件的状态,按照程序设定的控制逻辑对诸如刀库运动、换刀机构、冷却液等的运行进行控制。

在数控机床中这两种控制任务,是密不可分的,它们按照上面的原则进行了分工,同时也按照一定的方式进行连接。NC和PLC的接口方式遵循国际标准“ISSO 4336-1981(E)机床数字控制-数控装置和数控机床电气设备之间的接口规范”的规定,接口分为四种类型:

1、与驱动命令有关的连接电路;

2、数控装置与测量系统和测量传感器间的连接电路;

3、电源及保护电路;

4、通断信号及代码信号连接电路;

从接口分类的标准来看,第一类、第二类连接电路传送的是数控装置与伺服单元、伺服电机、位置检测以及数据检测装置之间控制信息。第三类是由数控机床强电电路中的电源控制控制电路构成。通常由电源变压器、控制变压器、各种断路器、保护开关、继电器、接触器等等构成。为其他电机、电磁阀、电磁铁等执行元件供电。这些相对于数控系统来讲,属于强电回路。这些强电回路是不能够和控制系统的弱电回路,直接相连接的,只能够通过中间继电器等电子元器件转换成直流低压下工作的开关信号,才能够成为PLC或继电器逻辑控制电路的可接受的电信号。反之,PLC或继电器逻辑控制来的控制信号,也必须经过中间继电器或转换电路变成能连接到强电线路的信号,再由强电回路驱动执行元件工作。第四类信号是数控装置向外部传送的输入输出控制信号。

二、PLC在数控机床中的应用

1、PLC在数控机床中的应用形式

PLC在数控机床中应用,通常有两种形式:一种称为内装式;一种称为独立式。

内装式PLC也称集成式PLC,采用这种方式的数控系统,在设计之初就将NC和PLC结合起来考虑,NC和PLC之间的信号传递是在内部总线的基础上进行的,因而有较高的较高交换速度和较宽的信息通道。它们可以共用一个CPU也可以是单独的CPU这种结构从软硬件整体上考虑, PLC 和NC 之间没有多余的导线连接, 增加了系统的可靠性, 而且NC 和PLC 之间易实现许多高级功能。PLC 中的信息也能通过CNC 的显示器显示, 这种方式对于系统的使用具有较大的优势。高档次的数控系统一般都采用这种形式的PLC。

独立式PLC也称外装式PLC,它独立于NC装置,具有独立完成控制功能的PLC。在采用这种应用方式式,可根据用户自己的的特点,选用不同专业PLC厂商的产品,并且可以更为方便的对控制规模进行调整。

2、PLC与数控系统及数控机床间的信息交换

相对于PLC,机床和NC就是外部。PLC与机床以及NC之间的信息交换,对于PLC的功能发挥,是非常重要的。PLC与外部的信息交换,通常有四个部分:

(1)机床侧至PLC:机床侧的开关量信号通过I/O单元接口输入到PLC中,除极少数信号外,绝大多数信号的含义及所配置的输入地址,均可由PLC程序编制者或者是程序使用者自行定义。数控机床生产厂家可以方便的根据机床的功能和配置,对PLC程序和地址分配进行修改。

(2)PLC至机床:PLC的控制信号通过PLC的输出接口送到机床侧,所有输出信号的含义和输出地址也是由PLC程序编制者或者是使用者自行定义。

(3)NC至PLC:CNC至PLC:CNC送至PLC的信息可由CNC 直接送入PLC的寄存器中,所有CNC送至PLC的信号含义和地址(开关量地址或寄存器地址) 均由CNC 厂家确定,PLC编程者只可使用不可改变和增删。如数控指令的M、S、T 功能,通过CNC译码后直接送入PLC相应的寄存器中。

(4)PLC至CNC:PLC 送至CNC 的信息也由开关量信号或寄存器完成,所有PLC送至CNC的信号地址与含义由CNC 厂家确定,PLC 编程者只可使用,不可改变和增删。

3、PLC在数控机床中的工作流程

PLC在数控机床中的工作流程,和通常的PLC工作流程基本上是一致的,分为以下几个步骤:

(1)输入采样:输入采样,就是PLC以顺序扫描的方式读入所有输入端口的信号状态,并将此状态,读入到输入映象寄存器中。当然,在程序运行周期中这些信号状态是不会变化的,除非一个新的扫描周期的到来,并且原来端口信号状态已经改变,读到输入映象寄存器的信号状态才会发生变化。

(2)程序执行:程序执行阶段系统会对程序进行特定顺序的扫描,并且同时读入输入映像寄存区、输出映像寄存区的读取相关数据,在进行相关运算后,将运算结果存入输出映像寄存区供输出和下次运行使用。

(3)出刷新阶段:在所指令执行完成后,输出映像寄存区的所有输出继电器的状态(接通/断开)在输出刷新阶段转存到输出锁存器中,通过特定方式输出,驱动外部负载。

4、PLC在数控机床中的控制功能

(1)操作面板的控制。操作面板分为系统操作面板和机床操作面板。系统操作面板的控制信号先是进入NC,然后由NC送到PLC,控制数控机床的运行。机床操作面板控制信号,直接进入PLC,控制机床的运行。

(2)机床外部开关输入信号。将机床侧的开关信号输入到送入PLC,进行逻辑运算。这些开关信号,包括很多检测元件信号(如:行程开关、接近开关、模式选择开关等等)

(3)输出信号控制:PLC输出信号经外围控制电路中的继电器、接触器、电磁阀等输出给控制对象。

(4)功能实现。系统送出T指令给PLC,经过译码,在数据表内检索,找到T代码指定的刀号,并与主轴刀号进行比较。如果不符,发出换刀指令,刀具换刀,换刀完成后,系统发出完成信号。

(5)M功能实现。系统送出M指令给PLC,经过译码,输出控制信号,控制主轴正反转和启动停止等等。M指令完成,系统发出完成信号。

三、PLC与数控机床外围电路的关系

如前所述,PLC在数控机床中用来控制机床的强电回路(通过一些电器元件)。为了更好了解数控机床的PLC的控制功能,就有必要对PLC和外围电路的关系进行分析。

1、PLC对外围电路的控制

数控机床通过PLC对机床的辅助设备进行控制,PLC对对外围电路的控制来实现对辅助设备的控制的。PLC接受NC的控制信号以及外部反馈信号,经过逻辑运算、处理将结果以信号的形式输出。输出信号从PLC的输出模块输出,有些信号经过中间继电器控制接触器然后控制具体的执行机构动作,从而实现对外围辅助机构的控制。有些信号不需要通过中间环节的处理直接用于控制外部设施,比如说,有些直接用低压电源驱动的设备(如:面板上的指示灯)。也就是说每一个外部设备(使用PLC控制的)都是由PLC的一路控制信号来控制的,也就是说每一个外部设备(使用PLC控制的)都在PLC中和一个PLC输出地址相对应。

PLC对外围设备的控制,不仅仅是要输出信号控制设备、设施的动作,还要接受外部反馈信号,以监控这些设备设施的状态。在数控机床中用于检测机床状态的设备或元件主要有,温度传感器、震动传感器、行程开关、接近开关等等。这些检测信号有些是可以直接输入到PLC的端口,有些必须要经过一些中间环节才能够输入到PLC的输入端口。

无论是输入还是输出,PLC都必须要通过外围电路才能够控制机床的辅助设施的动作。在PLC和外围电路的关系中,最重要的一点就是外部信号和PLC内部信号处理的对应。这种对应关系就是前面所说的地址分配,就是将每一个PLC中地址和外围电路每一路信号相对应。这个工作是在机床生产过程中,编制和该机床相对应的PLC程序时,由PLC程序编制工程师定义。当然做这样的定义必须遵循必要的规则,以使PLC程序符合系统的要求。

(1)PLC与信号输入回路

如图2-1所示为一种数控机床的电气手册的输入单元电器图的一部分,从图上可以看到这是一个插座或者是某一个输入接口的针脚,对应与外外围电路的某一个元件、开关、旋钮同时有对应与PLC内部的输入地址。

从第一行开始,一个按钮开关或者是摇头开关接入线号为191号的回路中.191号线接到C71号插座的16号脚,16号脚对应于PLC的输入地址为X10001.3,该地址被定义为MANUAL ABSOLUTE (手动绝对值)。从图上所描述的,可以知道S27号按钮适用于控制手动绝对值是否有效的开关。这个开关的通断状态,通过191号线接入到插座C71上的16号脚,16号脚再将这个信号输入到PLC中,这个信号在PLC中的地址为X1001.3。通过这种定义方式,就将PLC中的信号和外围电路相对应起来。就可以通过查看PLC中的X1001.3的状态,来确定外部按钮开关的状态。

我们从图上可以看到在图上右侧文字叙述是该信号的意义,随后在其左边的是输入信号地址,更左边的是插座上的针脚号,再左边的是外围电路的线号和开关器件号。这一幅图是某机床电路图,该图是遵循通用标准来绘制,因此通过该图我们可以看到一些具有普遍意义的原则。比如说,编制PLC程序时可能会把相近的开关(从用途和分布位置上)检测元件等等的地址设定在一起。从这一幅图我们可以看到,C71上的输入信号基本上都是面板上的按钮开关或摇头开关。它们的信号类型和位置分布上是非常接近的,因此它们的输入地址(在PLC输入端)也是顺序分布。在这一幅图所属的电气手册上可以查到,C71一共有50个针脚,除去用于公共端、24V电源的脚以外,其他针脚的输入地址是从X1000.0到1004.7顺序分布。

通常情况下PLC的地址由3部分组成:1:地址类型;2:地址号;3:位号。每一个地址号下有8个地址位,每一个地址表示不同的信号。下表是中有文字描述的部分是,图4-1所示的I/O地址。

表4-1 输入信号列表

ADDRESS

7

6

5

4

3

2

1

0

X1000

        

X1001

SPINDLE 
OFF

SPINDLE 
CCW

SPINDLE 
CW

OPTIONAL 
STOP

MANUAL 
ABSOLUTE

   

X1002

    

BUZZER 
RESET

EXTERNAL 
RESET

SPINDLE 
NEUTRAL

SPINDLE  ORIENTATION

X1003

        

从图4-1上可以看到几个要素:1、元器件号;2、线号;3、插槽或插座号;4、针脚号;

5、PLC输入地址号。我们可以知道这几个号码,在控制逻辑上是有对应关系的。因此不仅仅是在绘制此类图形时,要考虑他们之间的关系,而且在设计外围电路,编制PLC程序时也要考虑它们之间的关系。事实上,不仅是在设计制造机床时要考虑它们之间的对应关系,在使用机床、维修、维护机床时也要依据它们之间的对应关系和控制逻辑。

clip_image001

图4-1上所示的外部按钮等元件位置可在图4-4中查找到。

2、PLC输出信号控制相关的执行元件

前面图例描述了输入信号在PLC中的地址分配以及PLC输入地址与外部开关、旋钮和插座、电缆之间的对应关系。

我们知道在数控机床中,不仅仅是输入信号和外部电路涉及到对应关系,输出信号和外围控制电路以及要驱动的设备之间也存在作相应的对应关系。在随后列出的两幅图例,都是PLC输出信号和外围电路的连接图,但是这两幅图在所表达的控制关系上是不一样的。第一幅图所表示的是PLC输出信号可以直接驱动外部装置(这些装置通常是一些LED、灯),第二幅图表示的是PLC的输出信号必须经过中间继电器才能够控制最终的设备。这是因为第一幅图中所示的外部元件是一些小功率元件(主要是一些表示机床状态的指示灯),而第二幅图所示的外部设备是大功率元件。 
从这两幅图我们可以看到PLC输出地址和外部电路之间的关系:1:外部执行元件或设施是受PLC控制的;2:PLC的每一个输出信号对应着一个输出地址;3:每一个输出地址对应着一个插座或插头的针脚;4:每一个针脚对应着外围电路的一根线(用线号标示);5:每一个线号对应着一个设备、元件(或者通过一些中间元件);

在设计PLC的程序时,必须要考虑数控机床会用到那些设备,那些设备是可以有PLC直接驱动的,那些设备必须经过继电器、接触器等中间环节才能够驱动,以及这些设备的控制信号通过哪个地址号输出。在使用数控机床过程中,我们可以通过阅读电气手册,熟悉机床设施的控制运行方式,方便的维护机床。

表4-2 输出信号列表

ADDRESS

Y1000

Y1001

0

DOOR START OPEN(H180)灯

FEED HOLD(H159)灯

1

MOO(H111)LED

ZP1 X(H169)LED原点到达

2

MO1(H112)LED

ZP1 Y(H171)LED原点到达

3

M02(H113)LED

ZP1 Z(H173)LED原点到达

4

M30(H114)LED

ZP1 4(H175)灯原点到达

5

MANUAL ABSOLUTE (H137)LED

SPINDLE CW(H153)灯

6

SINGLE BLOCK (H133) LED

 

7

CYCLE START(H158)灯

 

表4-2第二列、第三列,列明了所要控制的外部元件,这些元件可在图2-4中找到。通过这些图表,我们可以清楚的看到PLC和外部元件之间的关系。

表4-3 输出信号列表

ADDRESS

Y1004

0

AUTO POWER OFF(K11)继电器

1

BUZZER(K28)继电器

2

Z AXIS BRAKE(K26) 继电器

3

COOLANT PUMP(K2) 继电器

4

MAGAZINE CW(K3) 继电器

5

MAGAZINE CCW(K4)继电器

6

TOOL UNCLAMP(K15)继电器

7

CYCLE END LIGHT(K20)继电器

表4-3对图4-3进行了描述,从图4-3和表4-3可以看出这些输出信号是对继电器进行控制,这些元件可以在图4-5中查到。clip_image001[1]

图4-5所示为该机床的继电器板,PLC的一些输出信号通过继电器板输出,进一步控制其它元件。


--
This E-mail comes from Kefeng.CN@Gmail.com