网站大量收购独家精品文档,联系QQ:2885784924

现场总线第讲NeuronC语言与IO对象.pptVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

例:#pragmascheduler_reset?when(msg_arrives(1)){?io_out(sprinkler,ON);}?when(msg_arrives(2))?{?io_out(sprinkler,OFF);?}?when(msg_arrives) //处理意料之外的消息?{?//什么也不做,只是仍掉它?}注意:使用msg_arrives事件接收消息的程序,应该考虑到接收意料之外的消息。例如某个节点的服务引脚向所有节点发送,但只有网络管理工具对该消息有兴趣并处理该消息。否则未处理的消息永远停留在队列前面,造成阻塞。booleanmsg_receive(void)函数msg_receive()函数接收一个消息到msg_in对象,如果收到一个新的报文,函数返回真,否则返回假。(1)如果在报文队列中没有报文,该函数并不等待。(2)如果在一个任务中收到多个报文,正如在旁路模式,它可能需要使用这个函数。(3)如果收到的是已接收的消息,先接收的消息将被删掉以释放它所占的缓存空间。(4)该函数不能用在一个when子句表达式中。例:if(msg_receive()){…….msg_free();}开关、灯节点灯节点IO_401.开关节点02.IO_003.开关程序#defineLAMP_ON1#defineLAMP_OFF2#defineOFF0#defineON1IO_4inputbitio_switch_in;msg_tagTAG_OUT;//声明消息标签when(reset){io_change_init(io_switch_in);}when(io_changes(io_switch_in)){msg_out.code=(input_value==ON)?LAMP_ON:LAMP_OFF;msg_out.tag=TAG_OUT;msg_send();}输入对象的访问可以采用两种方法:显式的调用io_in()函数。判断与该对象有关的事件输出对象的访问方法:调用io_out()函数(4)I/O函数及事件io_in()1return-value=io_in(io-object-name[,args])2//从I/O对象读取数据3io_out()当信号要发送到某个设备时,使用4io_out(io-object-name,output-value[,agrs])5//向一个I/O对象写数据6内嵌的I/O函数代替显式调用io_in()函数的方法io_changes()仅用于输入对象,在检测时,io_update_occurs和io_changes事件都隐含的执行io_in()函数,该函数包括对象的输入值。任务可以通过使用关键字input_value访问这个输入值。使用预定义事件:io_update_occurs()12345与I/O有关的事件1)io_changes事件语法:io_changes(io-object-name)[by|toexpr]当从I/O对象读到的值改变时,该事件判断为真。值的改变有三种类型:改变为某指定的值(to)至少改变一指定的量(by绝对值)任意改变(无限制)参考值是上次事件判断为真时读取的值,对于无限制的io_changes事件,如果当前值与引用值不同时就意味着发生了一个状态的改变.对于定时器/计数器输入设备有一个新的值并且该值与以前的值不同时,io_changes事件才发生。IO_0inputbitpush_button;1when(io_changes(push_button)to0)2{3………4}5IO_7inputpulsecounttotal_ticks;6when(io_changes(total_ticks)by100)7{8……9}10例对于定时器/计数器对象,io_changes事件发生于:双斜率输入:转换完成时事件发生定期及周期输入:如果测量时间与上次测量时间相比已发生改变时事件发生。脉冲计数输入:如果脉冲计数的值与上次计数相比已发生改变,则事件发生。010302042)io_update_occurs事件

文档评论(0)

189****6885 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档