中国人的z893要与德国人的CAN一较高低之四 点击:15543 | 回复:188



米d.

    
  • 精华:3帖
  • 求助:0帖
  • 帖子:8帖 | 61回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2003年8月30日
发表于:2004-03-02 13:38:00
楼主
CAN 具有共亨广播的功能,但是德国人没有认真地研究透它, 就慌慌张张地定义在总线上了, 犯了一个大错, 而且是个致命的错。 z893就不一样了,它将共亨广播的功能定义为4个字节, 0100h、0101h、0102h、0103h, 并且将它组态到[引导帧]的固定位置, 即引导码的第3-7字节, z893称之为[高速信息通道]或是[高速公路]。 任何工作站向这四个字节写入了一个数据, 这个数据便会自动地在下个启动周期内, 更新引导码的第3-7字节, 在[软猫]的安排下, 收录在工作站的固定寄存器内[指在网的全部工作站]。 不需要任何线程的安排, 属准静态特性。 前者需线程的安排, 后者却不需要; 更为麻烦的是,由于CAN 是定长帧, 完全没有空间让它作这种升级, 真要升级, 恐怕就要重新制定CAN 3.0 的新标准了。 如果真打个比仿来说明两者之间的差别, 我只能说: CAN 好比是原始人刚刚发明了用绳子节算东西, 而z893已是春秋战国的秦始皇。[说过头了一点,别见怪,开个玩笑!] 为了加深对它的理解,我们下面结合一个实例看看, 假定某[老总]应[长虹总老总]的要求,派有这样一个设计: 需要通过PC显示屏上的一个菜单, 去控制[某未来星]彩电的音量。 *********************************************** 软件工程师接到这个任务之后,他将按下列流程编程: (1)约定[某未来星]的音量口地址=0101h单元, (2)约定d=#0ffh为最大,d=#00h为最小, (3)当[音量+]按扭按下后执行下面程序之一即可:[注]win98me 用Delphi5.0_汇编语言编写的这段程序。 asm lea ebp, d1300 mov al,04h mov [ebp+1],al //操作码=04h[加] mov al,01h mov [ebp+2],al //地址H=01h mov al,01h mov [ebp+3],al //地址L=01h mov al,01h mov [ebp+4],al //长度=1h mov al,00h mov [ebp+5],al //in:长度=0h mov al,01h mov [ebp+6],al //out:长度=1h [注]每次增量的数据已存d1500[0]单元 call a100 //[注]软猫子程序:启动交换,置音量+ end; 用高级语言编写的这段程序。 d1300[1]:=04h; //操作码=04h[加] d1300[2]:=01h; //地址H=01h d1300[3]:=01h; //地址L=01h d1300[4]:=01h; //长度=1h d1300[5]:=00h; //in:长度=0h d1300[6]:=01h; //out:长度=1h [注]每次增量的数据已存d1500[0]单元 a100; //[注]软猫子程序:启动交换,置音量+. *********************************************** 硬件工程师接到这个任务之后,他将按下列流程编程: (1)假定[某未来星]执行的cpu模块为51系列兼容的某单片机, (2)约定38H寄存器为音量控制工作区, [D/A] (3)约定d=#0FFH为最大,d=#00H为最小, 下面用ICExplorer.51汇编语言编写这段程序: MOV 38H, 65H ; 65H寄存器=[高速通道][数据库#0101H], 仅一条传送语句啊! RET *********************************************** 比较以上例程不难发现,勿论采用何种语言, emdos编程仅仅是个[贴字软件], 不仅非常简单, 而且在整个项目开发中: (1)软件工程师是采用何种方法置[音量+]或者是[音量-], 他不需要对硬件工程师加以说明; (2)硬件工程师采用何种单片机,使哪个寄存器, 他也不需要向软件工程师频频通报。 双方都具有相对的兼容性和灵活性。使用[高速通道],连程序都简化了。 如果用CAN ,或者其它的方式来实现,恐怕就要复杂多了。 在一个实际的工程中, 修改总是经常的, 软硬分家会极大地降低工程费用。 *********************************************** 小插曲: 硬件工程师是个[鬼],他连一句程序都想不写, 只将ROM地址0201单元内的#0FFH改写成#38H, OK! 竟然也能控制成功。 *********************************************** 是什么原因?留在下贴讲。 [后续] 米d. QQ158326068



米d.

  • 精华:3帖
  • 求助:0帖
  • 帖子:8帖 | 61回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2003年8月30日
发表于:2003-11-23 12:50:00
81楼
回复颠颠: 您好!您贴子上的信箱我发不进,我又改发您注册的信箱了,请查收。其它的朋友ok! 回复wsgjyq: 您好! CAN的[出错及纠错]原理是有点意思,它在其内部设置了一个出错计数器, 就如同我们给系统安置了一个看门狗一样,所不同的是看门狗是对固定的时间脉冲计数,称之为[线性]参数, CAN采用的是[非线性]参数,即它将出错的来源分为N级,普通级为1,严重级为N,当然N>1; 因而发生严重错误时,能比看门狗获得更短的报井时钟。[wsgjyq先生认为这是一个卖点] 我们接着往下看: [当计数器达到255时,该节点脱离总线,且只有在硬件复位后,才能恢复工作状态。] _摘自《今日电子2003.5.P31》Dallas/Maxim集成产品公司Gert N. Helles(丹麦) 用另一句话讲,该节点被[蒸发]了,在[局部网]上消失得无影无踪了。这种处理结果为毕是个好办法。 在一个实际的应用系统中,会带来一些不良的后果: 其一网络菅理员可能难以发现这个节点已出故障。 其二由这个节点引发的系统参数而产生的二次调节有可能产生灾难的后果, 麻烦的是由于不知[为何原故],容易导致网络菅理员采取错误的对策。 其三现场维护处理带来盲目性: 1.将复位重新合上,[通常都是这样做的]如果好了,大家欢喜,也可以获得老板的好评, “某某就是行,几秒钟就解决问题!” 2.如果引发了更严重问题,他自己也[沙]了,还会遭到老板的[训斥], “怎么搞的,你就那么毛!” 3.如果又跳了,甚至换一块新板也始终连不上网,您就会跳起脚来,大骂芯片的设计者, 完全没有考虑现场维护的基本测试要求,老板也会背后[滴沽], “要不要请高手来?”言意之下,您是低手了。[设备没修好之前,老板象孝子,是不敢得罪人的] 其实大家都是[盲]人,当然出毛病多了,[久病出良医]那是另一会事。 wsgjyq您是搞过维护的,这种胡里糊涂的方式,您也认为是一种卖点吗? 可测试性和可预井性是一个好的网络所追求的目标,它不仅会给产品研制方带来好处, 也会给下游的销售商及用户都带来好处,至少维护这一块就会少许多银子。 z893_emdos是这样处理的: 在操作系统中,设置了许多[软件陷井],通这些[软件陷井]对网络中由硬件及[应用软件]所引发的错误加以分析, 以代码的方式记录在案,并以广播的方式通知在线的所有节点。[详见附录2.在本栏的中间] 这种故障的发生,是以次为计算的,它保留了7次历史记录,从而告诉了网络管理员, 这是一个孤立的突发事件,还是一个不可逆事件, 由操作员或预先安排的程序作出相应的决策,而不一定是需要[在线蒸发], 比如当CAN某节点是处理汽车上的[气压]参数,如果[蒸发]了,会带来什么样的后果?! 下面简单地介绍一下z893代码报井表中的[02设备号错]功能,以供同行们设计参考: [02设备号错] 1.一个正确的z893指令,具有确定的时间周期: 一个节点,在串行输入7个字节的时间之内,同时通过串行输出口发出5个字节的应答周期, 少于5个字节为无效周期,因此它是全双工的,实时的。 emdos在out7个字节之后,其间没有收到正确的应答信号,就将接着启动下一个7字节周期, 中间没有设置任何等待时间,用示波器看去:一个一个信号,象流水一样,没有间断。 由于emdos在发布指令周期的同时,串行输入口已预读了需要执行的指令周期,故名[全双工流水线]。 [全双工流水线]能够极大地提高[现场总线]的效率。 2.如果节点输出了>1字节的信号, emdos就要[比对]该字节[1]是否与out字节中的[1]信号相等,不等就置[02设备号错], 巧妙的在于节点应答的不是[原码],而是[反码], 这就可以检测出包括线路在内的所有节点RAM的硬件状况,任意Bt的错误都不能获得正确的执行, 都将引起[02设备号错],并将无条件返回,形式跟[蒸发]一样,但是它是[受控]的。 举例讲: emdos输出的节点地址如果是#55H的话,节点回答的应是#55H的反码#0AAH, 如果线路上有干扰,或者是串行有输入输出短路,或者是芯片中的RAM有毛病, 都将使#0AAH发生异变而产生报井, 报井的性质码[02]置显示通道01EAH单元, 报井的设备号[55]置显示通道01EBH单元, 所有的节点都将会收到该报井而作出相应的对策。 wsgjyq先生,这种报井不是更有[卖点]了吗?! 我觉得报井只能算个[小]事,因为报井总是少的,它也可由其它方式来保证, 我们不能期望某个系统老出毛病,那样的话,用户就会叫生产厂家下不了台, 我以为一个现场总应该是价廉、好用,能够兼容主流操作系统,比如PC-windows, 可能您又不喜欢听了,886!! med. 2003.11.23 附录3 《显示工作区中的特殊标志》 [数据库显示工作区] [@EA]=[报井的性质码.@38] [数据库显示工作区] [@EB]=[报井的设备号.@39] [数据库显示工作区] [@EC]=[显示指针.@2C] [数据库显示工作区] [@ED]=[高速指针.@2E] [数据库显示工作区] [@EE]=[低速转高速指针.@28] [数据库显示工作区] [@EF]=[高速设备号范围.@29] [数据库显示工作区] [@F0-@FF]=[设备在线的设备号.#0-F标识]

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-11-23 23:02:00
82楼
米d先生:     您好!      能发给我一份Z893资料和例程吗? stonejp@126.com 谢!

luoshi

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:60
  • 注册:2002年8月13日
发表于:2003-11-27 09:11:00
83楼
米d先生:       您好!        能发给我一份Z893资料和例程吗? luoshi28@163.com 谢谢!

请求帮助!

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2003年11月27日
发表于:2003-11-27 19:51:00
84楼
米d先生:         您好!          能发给我一份Z893资料和例程吗?      liuwenjian82@163.com      谢谢!

香帅君

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2003年10月07日
发表于:2003-11-28 11:35:00
85楼
米d先生:           您好!            能发给我一份Z893资料和例程吗?     qls2812@163.com     谢谢!

liliang

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 39回
  • 年度积分:0
  • 历史总积分:103
  • 注册:2001年11月22日
发表于:2003-11-29 20:34:00
86楼
说实话,我们很愿意使用国产总线,但唯愿厂家诚信相待,别到时千辛万苦做出来又问题多多,叫人心寒。

米d.

  • 精华:3帖
  • 求助:0帖
  • 帖子:8帖 | 61回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2003年8月30日
发表于:2003-11-30 13:08:00
87楼
[回复] 楼上所有的朋友,您们好!资料己发信箱,请查收。 《98-98me所使用的[软猫]篇之[c200]简介》 z893在串行通讯速率的设置上, 要比CAN 使用上更灵活一些, 它既可以按固定设置, 也可以按自动设置, 通常PC.win的应用程序采用后者。 当任意一个线程调用了c200之后, 串口COM1就被自动地设置好合适的参数, 一般来讲, 子程序c200的调用应安排在[窗体]显示前执行即可。 ------------------------------------------- 例如: procedure Td100a.FormCreate(Sender: TObject); begin //窗体显示前执行 d2003:=0; //置设备号[IP地址 OR 节点地址]=00 c200; //调用(初始化rs-232 [Com1])子程序 end; ------------------------------------------- 下面是98me所使用的 c200 源程序清单, [用Delphi语言编写的子程序 [兼容Delphi2.0、3.0、4.0、5.0、7.0],[不兼容6.0] var procedure c200; //初始化rs-232[Com1] {$R *.DFM} procedure c200; //初始化RS-232[Com1]置参数子程序 begin asm cli push eax push ebx push ecx push edx push ebp //开始 mov ah,2 //重复次数 mov bh,1 //Ft=1-4 [115.2-28.8]kbp/s @@100: mov dx,3fbh mov al,80h out dx,al mov dx,3f8h mov al,bh //** out dx,al mov dx,3f9h mov al,0 out dx,al mov dx,3fbh mov al,3 out dx,al @@101: mov ecx,9ffffffh //延迟t @@102: loop @@102 //*** mov ecx,1fffffh //看门狗t @@110: mov dx,3feh //DCD检测↓ in al,dx and al,80h jnz @@111 //DCD↓ok loop @@110 //看门狗循环 jmp @@rm @@111: mov dx,3feh //DCD检测↑ in al,dx and al,80h jz @@112 //DCD↑ok loop @@111 //看门狗循环 jmp @@rm @@112: mov dx,3fdh //IN检测 in al,dx and al,1 jnz @@113 loop @@112 //看门狗循环 jmp @@rm @@113: mov dx,3f8h //设备号 in al,dx @@114: mov dx,3fdh //IN检测 in al,dx and al,1 jnz @@115 loop @@114 //看门狗循环 jmp @@rm @@115: mov dx,3f8h //IR指针 in al,dx mov bl,al mov ecx,1fffffh //看门狗t @@120: mov dx,3feh //DCD检测↓ in al,dx and al,80h jnz @@121 //DCD↓ok loop @@120 //看门狗循环 jmp @@rm @@121: mov dx,3feh //DCD检测↑ in al,dx and al,80h jz @@122 //DCD↑ok loop @@121 //看门狗循环 jmp @@rm @@122: mov dx,3fdh //IN检测 in al,dx and al,1 jnz @@123 loop @@122 //看门狗循环 jmp @@rm @@123: mov dx,3f8h //设备号 in al,dx @@124: mov dx,3fdh //IN检测 in al,dx and al,1 jnz @@125 loop @@124 //看门狗循环 jmp @@rm @@125: mov dx,3f8h //IR指针 in al,dx inc bl //[bl+1]=al ok cmp bl,al jz @@rm dec ah //重复次数-1 cmp ah,0 jnz @@101 mov ah,2 //重复次数 inc bh //Ft=1-4 [115.2-28.8]kbp/s cmp bh,5 jc @@100 @@rm: pop ebp pop edx pop ecx pop ebx pop eax sti end; end; 注:当程序由子程序返回时,PC的COM1口已被自动地设置成z893的波特速率了。 ------------------------------------------- med. 2003.11.30

robert_li

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 60回
  • 年度积分:0
  • 历史总积分:121
  • 注册:2003年11月19日
发表于:2003-12-01 14:58:00
88楼
米d先生:            您好!            请给我也发一份z893的资料及演示程序.           robert_li@163.com   谢谢!!

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-12-03 16:09:00
89楼
请给我一份 wzping@autocenter.gd.cn

fmhuang

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2003年12月02日
发表于:2003-12-04 13:20:00
90楼
米d 先生: 您好!能发给我一份Z893资料和例程吗? fmhuang@iris.ciae.ac.cn,谢谢!

liqing

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2003年12月07日
发表于:2003-12-07 22:24:00
91楼
米d 先生:    您好!对您的系统,我非常感兴趣,对你大力推广国产现场总线技术的精神,表示由衷的钦佩。希望能发给我一份Z893的详细资料和相关的演示例程。多谢!希望今后有机会和您进行更多的交流。 我的邮箱liqing@whidc.com;liqing1968@sina.com

米d.

  • 精华:3帖
  • 求助:0帖
  • 帖子:8帖 | 61回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2003年8月30日
发表于:2003-12-08 11:57:00
92楼
[回复] liqing及楼上所有的朋友,您们好!资料己发信箱,请查收。 《z893_emdos视窗编程中所使用的[专用子程序]简介》 emdos解决[过程控制]采用的是[视窗编程],通过COM1口调用z893直接控制I/O, 与传统的PLC或单片机所不同的是,[决策软件]是放在PC上运行的, 这就为数据库管理及远程联网[包括e网到底]铺平了道路。 由于采用的是[视窗编程],edit窗口就会被当成常用的人机界面工具加以应用。 如同win的API函数一样,emdos为了帮助用户更好地开发应用程序, 也提供了部分子程序,这些子程序是围绕着工业控制编程使用的, 在实践中主要有: [(edit中)3位十进制数转二进制数(送存贮器)], [(edit中)5位十进制数转二进制数(送存贮器)], [(存贮器中)2位二进制数转字符串(送edit)], [(edit中)输入是否是数字量?] 等。 下面介绍一下这些专用子程序的原程序代码。 ------- ------- ------- 注:由于这个网站在处理[原程序]时,功能有点差劲,不仅产生[编排书写上失真], 而且有些原程根本就不让贴,请各位朋友谅解! 有兴趣的朋友可索资料,由信箱发。详细使用方法见[演示程序]中例程原代码。 med. 2003.11.08

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-12-11 15:13:00
93楼
米d先生请给我也发一份Z893资料和例程 lbw020228@163.com 谢谢啦

5499

  • 精华:2帖
  • 求助:0帖
  • 帖子:39帖 | 111回
  • 年度积分:0
  • 历史总积分:252
  • 注册:2003年7月10日
发表于:2004-01-13 20:21:00
94楼
也请一份 zhoumaillist@163.com 另外建议楼主注意市场的运作, 微软的DOS就是买别人的,楼主可以考虑卖给别人,有更好推广经验的人来进行推广。 市场的先来后到总是有的,比如金门大桥,早就不算长了,还是有名气。

gongkongren

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2003年9月17日
发表于:2004-01-17 14:53:00
95楼
给我一份,谢谢 chensian@jstel.net

bcy1123

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 19回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2003年12月16日
发表于:2004-02-04 11:25:00
96楼
米D先生:    您好!我是刚看关于Z893的讨论,感到我的许多项目都使用。   请发一分Z893有关资料给我好吗?   bcy@autonet2000.com    谢谢!

bcy1123

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 19回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2003年12月16日
发表于:2004-02-11 17:24:00
97楼
米D先生:      您好!我是刚看关于Z893的讨论,感到我的许多项目都使用。     请发一分Z893有关资料给我好吗?     bcy@autonet2000.com      谢谢!

bcy1123

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 19回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2003年12月16日
发表于:2004-02-11 17:24:00
98楼
米D先生:      您好!我是刚看关于Z893的讨论,感到我的许多项目都使用。     请发一分Z893有关资料给我好吗?     bcy@autonet2000.com      谢谢!

米d.

  • 精华:3帖
  • 求助:0帖
  • 帖子:8帖 | 61回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2003年8月30日
发表于:2004-02-12 12:49:00
99楼
朋友BCY1123: 您的两个信箱,我发了N次,都退回来了,请谅!

唐僧

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 106回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2002年11月15日
发表于:2004-02-12 14:25:00
100楼
米D先生:        您好!我是刚看关于Z893的讨论,感到我的许多项目都使用。       请发一分Z893有关资料给我好吗?       guolei2000.sina.com        谢谢!

热门招聘
相关主题

官方公众号

智造工程师