vlog_user 发表于 2012-10-26 13:59:20

gzhmcu 发表于 2012-10-25 22:04 static/image/common/back.gif
支持楼主,加紧开源吧

太露骨了,
相当的露骨,
彻底裸奔

江南孤舟 发表于 2012-10-27 13:16:32

csca1 发表于 2012-10-26 13:53 static/image/common/back.gif
你好,谢谢你。对于PLC的输入输出分配,对应1758的哪些管脚,你有什么建议?
请你看看9楼的要求,然后选 ...

高速输入有2种方法(我自己的认为):1.TIMER的计数模式,需要特殊的端口定义。2.P0和P2口,可以利用GPIO中断来处理,端口定义要任意些,但是没有TIMER快,需要在中断函数里软件计数。对于你说的位置安排,这个是总体布局要求,但我的建议是最好是输入在一起,输出在一起,比如x0~7=P0.0~0.7,Y0~7=P1.1~1.7,以后软件做起来会方便,看起来也舒服点。我看了你的掉电保护电路,提点我个人的见解,在光耦的前级加个稳压管,具体多少伏要看你的检测电压了,这样可以提前得到检测信号。我不知道你现在进行到什么位置了,原理图整好了吗?要是可以,给出来看看或者给我邮件30992088@qq.com,

江南孤舟 发表于 2012-10-27 13:31:08

我没有接触PLC的编程,PLC需要正交编码器接口吗?LPC17xx有1路QEI可以处理。另外步进电机的控制,需要走曲线吧,我不知道PLC是怎么处理的,前段时间在论坛上看到别人研究S曲线,后来我也做了个,不知道能不能用上。

zhwm_128 发表于 2012-10-29 20:22:36

支持中...

fengkehy 发表于 2012-10-30 13:45:50

为啥一定要仿呢 重新设计一套不行么

瓶子 发表于 2012-11-1 16:27:44

关注lz更新

phone 发表于 2012-11-2 09:30:56

先收藏起来。

mvpican 发表于 2012-11-3 21:23:52

mark观看楼主的杰作

gzhmcu 发表于 2012-11-4 23:15:54

楼主加油

zhwm_128 发表于 2012-11-4 23:57:41

AVR_ARM大侠应该是对这个研究比较深入的,只是不知道方不方便为开源提供支持了!

hhybenben520 发表于 2012-11-6 11:20:24

对PLC的项目开发一直比较关注,前段时间也再做PLC的硬件部分;上位机的软件真的不懂,但是很想去做。我现在就想在上位机软件上实现梯形图到51单片机目标代码的转换(使用VC++),请问楼主怎么入手?谢谢!

zuolaosan 发表于 2012-11-6 16:51:39

hhybenben520 发表于 2012-11-6 11:20 static/image/common/back.gif
对PLC的项目开发一直比较关注,前段时间也再做PLC的硬件部分;上位机的软件真的不懂,但是很想去做。我现在 ...

大家好,请问西门子200的PLC是解释型的啊还是编译型的啊?

csca1 发表于 2012-11-6 18:41:48

hhybenben520 发表于 2012-11-6 11:20 static/image/common/back.gif
对PLC的项目开发一直比较关注,前段时间也再做PLC的硬件部分;上位机的软件真的不懂,但是很想去做。我现在 ...

论坛上有相关的帖子,你自己搜索一下。

csca1 发表于 2012-11-6 18:42:23

zuolaosan 发表于 2012-11-6 16:51 static/image/common/back.gif
大家好,请问西门子200的PLC是解释型的啊还是编译型的啊?

编译型的,你看帖不仔细啊。

monkeynav 发表于 2012-11-6 18:47:04

是否考虑读出西门子PLC的单片机程序,反编译还原其机制?

csca1 发表于 2012-11-6 18:51:06

monkeynav 发表于 2012-11-6 18:47 static/image/common/back.gif
是否考虑读出西门子PLC的单片机程序,反编译还原其机制?

这个。。。反编译难度很大啊,而且从机器码反汇编,结果是否正确很难说。

我还是从0开始自己摸索吧。

dongfangjian 发表于 2012-11-7 13:18:39

是编译型的,还是解释型的,看上位机下载到PLC的代码便知,如果下载到PLC的代码是梯形图的指令码(字节码的形式,非助记符)则是解释型的,若下载到PLC的代码是PLC中的CPU的机器码,则是编译型的。西门子的S7-200我没用过,不知是什么类型,请楼主先搞清这个,不要拍脑袋。

dongfangjian 发表于 2012-11-7 13:19:47

三菱的FX系列,OMRON的都是解释型的。

dongfangjian 发表于 2012-11-7 13:22:06

我做的PLC也是解释型的,编译型的PLC有很多限制和不足,现在已经很少有人使用了,之间的差异,我在很多年前就已经讲的很清楚了。

zuolaosan 发表于 2012-11-7 19:16:52

大家好,请问西门子200的PLC是解释型的啊还是编译型的啊?
怎么区分是解释型还是编译型

zuolaosan 发表于 2012-11-7 19:19:22

编译型的PLC有底层程序吗,请大家指教
,谢谢

zuolaosan 发表于 2012-11-7 19:21:22

如果有底层程序,用户程序下载那里,是怎么执行用户程序的

GoingDown 发表于 2012-11-7 19:40:40

支持楼主,同时也请那些 dream-killer走开。

gzhmcu 发表于 2012-11-9 22:56:26

支持楼主,可以帮楼主测试!

netawater 发表于 2012-11-11 11:09:42

楼主好决心,顶一下!

惆怅客 发表于 2012-11-13 18:14:55

mark。。。。

jack_yu 发表于 2012-11-13 18:22:02

支持楼主!有志者事竟成!

csca1 发表于 2012-11-14 00:02:40

几天没更新了,说说我这几天研究的东西:
1、将LPC1758的512 Flash 进行划分,一共分为以下几块:
(1)系统程序区
(2)用户程序区
(3)数据区区
(4)系统块区
(5)I、O、V、L、M、SM等寄存器区
2、SRAM划分
(1)、索引表
(2)、程序运行区
(3)、保留位置
3、不知道需不需要移植一个uC/OS系统,况且我还不懂这个,因此先按照一般的编写单片机程序的方式来写程序吧。
4、继续监控西门子通信数据,

bird777 发表于 2012-11-14 00:22:21

用OS好,处理用户编写的"PLC中断程序"时会相当方便.
当然,现在的32位机主频这么高,用一般方式写,对比早先的PLC,也要强出很多.

csca1 发表于 2012-11-14 00:28:08

bird777 发表于 2012-11-14 00:22 static/image/common/back.gif
用OS好,处理用户编写的"PLC中断程序"时会相当方便.
当然,现在的32位机主频这么高,用一般方式写,对比早先的P ...

没学过OS的移植,不懂,还是先照一般的来吧,如果一般的解决不了,再学学移植OS。{:smile:}

liming 发表于 2012-11-15 09:06:55

此贴火了,顶起来。

heky 发表于 2012-11-15 09:55:34

bird777 发表于 2012-11-14 00:22 static/image/common/back.gif
用OS好,处理用户编写的"PLC中断程序"时会相当方便.
当然,现在的32位机主频这么高,用一般方式写,对比早先的P ...

西门子也是解释型的

没有os,照样可以做中断。速度仅仅比硬件中断慢几十个时钟周期。

heky 发表于 2012-11-15 09:57:35

csca1 发表于 2012-11-14 00:02 static/image/common/back.gif
几天没更新了,说说我这几天研究的东西:
1、将LPC1758的512 Flash 进行划分,一共分为以下几块:
(1)系 ...

差不多就是这样划分的
西门子的编码也是规则的,一起努力,我们已经进入解码阶段。

bird777 发表于 2012-11-15 12:54:13

heky 发表于 2012-11-15 09:55 static/image/common/back.gif
西门子也是解释型的

没有os,照样可以做中断。速度仅仅比硬件中断慢几十个时钟周期。 ...

如果不用OS,那么最简单的方法在每步完成后,都要检测PLC“中断标识位”,这样会产生有开销,扫描周期会拉长。而且有些应用指令相对比较“耗时”的。在稳定的前提下,都希望扫描周期越短越好。 引入OS,中断的实时性能可以完全保证,中断(或嵌套)时,每个任务中的LD栈,MC栈,。。。。等等现场保护也都可以享受到OS的福利,何乐而不为呢!
我对OS的认识和应用比较肤浅,现在仅仅觉得在处理PLC中断上是相当的方便,或许还有更多的好处。

heky 发表于 2012-11-15 13:11:43

如果不用OS,那么最简单的方法在每步完成后,都要检测PLC“中断标识位”
这个已经是n年前的技术了,不现实。

bird777 发表于 2012-11-15 15:35:56

呵呵,大致也就3种方式:
1、最简单法
2、OS(裁剪到仅剩下的任务调度)
3、中断隐身(HOTPOWER喜欢叫它为天外飞仙),这个也是N年前的技术了。

bird777 发表于 2012-11-15 16:09:38

补充还有一种,干脆在中断中执行。只要内核用的中断的优先级高于PLC用用户硬中断优先级。
现场保护做好,Rn,和PLC的相关全局变量保护好,也是可以的。如果要支持用户中断嵌套,还是用OS方便!
框架设计很重要,涉及到系统RAM区规划分配。

vlog_user 发表于 2012-11-17 14:37:38

本帖最后由 vlog_user 于 2012-11-17 14:41 编辑

GoingDown 发表于 2012-11-7 19:40 static/image/common/back.gif
支持楼主,同时也请那些 dream-killer走开。

你的梦想已被你的同类踩在大街上,与盗版光盘者同行

plcpro 发表于 2012-11-18 20:15:30

支持一下,好东西。

plcpro 发表于 2012-11-18 20:15:49

支持一下,好东西。

gzhmcu 发表于 2012-11-18 20:16:12

进度跟踪中

Ilidan 发表于 2012-11-23 11:19:40

帮顶{:smile:}

anxiangbo 发表于 2012-11-23 13:04:59

关注楼主检测数据!

nds_shenzhen 发表于 2012-11-23 14:00:57

敬佩楼主的 态度和勇气
不管 比人泼多冷的水 依旧坚持   
加油

zzyywahm 发表于 2012-11-23 16:41:29

路过顶一下!

wicy001 发表于 2012-11-23 19:56:06

这个可以顶

csca1 发表于 2012-11-23 21:01:14

anxiangbo 发表于 2012-11-23 13:04 static/image/common/back.gif
关注楼主检测数据!

检测数据有一大堆了,正在艰难地分析中。。。

heky 发表于 2012-11-23 21:25:47

这个过程痛苦,西门子的大端数据格式太头痛了,效率在数据运算时严重降低。

heky 发表于 2012-11-23 21:26:04

这个过程痛苦,西门子的大端数据格式太头痛了,效率在数据运算时严重降低。

anxiangbo 发表于 2012-11-24 08:19:31

楼主在分析PPI协议吗?下载,监控都用这个协议,感觉搞懂这个就有点好向下面进行。

anxiangbo 发表于 2012-11-24 08:22:48

来点用价值的资料::


不能光说不练啊!下面我们就说说西门子PLC到底是怎么通讯的。
   PC与PLC采用主从方式通讯,PC按如下文的格式发读写指令,PLC作出接收正确的响应(返回应答数据E5H或F9H见下文分析),上位机接到此响应则发出确认命令(10 02 5C 5E 16),PLC再返回给上位机相应数据。一般上位机要连接PLC就要先发送如下寻呼数据 10 02 00 49 4B 16 同志们呐!我们可都是有血、有肉、有思想、有灵感的高级动物啊,面对这么多枯燥、无味、复杂、混乱的机器数字你怎么记呢?反正我是记不住啊!(^_^开始洗脑)这时你可以闭上眼睛,安静、静、再静。。。。。。想一想战争时期的战地对讲机通话模式,那么这个指令(10 02 00 49 4B 16)就可以理解为:00呼叫02,听到请回答。
现在我们来简单的分析一下这个指令的具体含义: 10起始符 02是上位机要联系的下位机的地址站号,就是要找的人 00就是上位级本身自己的站号 49寻呼指令 16终止符 其中4B为校验码,是这样得来的:02+00+49的最后两位就是校验码,这就是所说的偶校验或称和校验也称余校验,因为取的是余数。计算器在16进制计算时公式(02+00+49)mod 100得出的数就是校验码,你计算一下是不是等于4B啊!其他的所有PPI协议校验都是如此。假如02站号的PLC收到寻呼信号那么会回答: 10 00 02 00 02 16意思是:报告00 ,02收到,请指示这样的解释是不是很好理解啊!你有更好的解释吗?接下来呢,找到了要寻呼的人PC上位机,就是司令啦!就可以发号施令了,发号施令后PLC正确接收后就会发送 E5 字符,意思是:“02洞两明白”。其实啊,说到这里PLC只说他明白,他已经明白了上位机PC的指示,但并没有执行命令,那么要怎么他才执行命令呢?就是上位机PC发出确认命令后才执行。这时上位机会发出确认指令(10 02 5C 5E 16),意思是:“请立即执行”。然后PLC就干他应当干的工作了!原来PLC也不容易啊,怪不得叫下位机呢!
说了这么多乱不乱呐?目的就是要理清上下级关系、主从关系,指令的顺序,用一个好的记忆方法记住枯燥无味的机器码。
下面我们列表分析读取PLC密码的指令:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16
读命令分析:一次读一条数据
SD LE LER SD DA SA FC DASP SSAP DU FCS ED
SD:(Start Delimiter)开始定界符(68H)
LE:(Length)报文数据长度
LER:(Repeated Length)重复数据长度
SD: (Start Delimiter)开始定界符(68H)
SA:(Source Address)目标地址,指该地址的值,就是PLC的地址
DA:(Destination Address)本地地址,指该地址的指针,就是上位机自己的地址
FC:(Function Code)功能码,5CH为交替周期触发,6CH为首次信息周期触发,7CH为交替周期触发。
DSAP:(Destination Service Access Point)目的服务存取点
SSAP:(Source Service Access Point)源服务存取点
DU:(Data Unit)数据单元
FCS:(Frame Check Sequence)校验码
ED:(End Delimiter)结束分界符(16H)
报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值关于这个校验码的计算方法同上面说明。
在读写PLC的变量数据中,读数据的功能码为 6CH,写数据的功能码为 7CH。
对于一次读取一个数据,读命令都是33个字节。前面的0—21字节是相同的,为



0        1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19        20        21
SD        LE        LER        SD        DA        SA        FC                                                                                                                       
开始符        长度        长度        开始符        站号        源地址        功能码        协议识别        远程控制        冗余识别        冗余识别        协议数据        单元参考        参数长度        参数长度        数据长度        数据长度        04读05写        变量地址数                       
68        1B        1B        68        02        00        6C        32        01        00        00        00        00        00        0E        00        00        04        01        12        0A        10
读取PLC密码的指令:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16
22        23        24        25        26        27        28        29        30        31        32
                                                                DU        FCS        DE
读取长度        数据个数        存储器类型        偏移量        校验码        结束符
02        00        08        00        00        03        00        05        E0        D2        16
因为是PC上发的读PLC数据的命令,SA=00,DA=02,如果有多个站,DA要改成相应的站号。读命令中从DA到DU的长度为1B即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。上表是读不同存储器命令的Byte22—32。
字节        22        23        24        25        26        27        28        29        30        31        32
功能        读取长度        数据个数        存储器类型        偏移量        校验码        结束符
读Q0.1        01        00        01        00        00        82        00        00        00        64        16
读M0.0        01        00        01        00        00        83        00        00        00        65        16
读M0.1        01        00        01        00        00        83        00        00        01        66        16
读SMB34        02        00        01        00        00        05        00        00        01        F9        16
读VB100        02        00        01        00        01        84        00        03        20        8B        16
读VW100        04        00        01        00        01        84        00        03        20        8D        16
读VD100        06        00        01        00        01        84        00        03        20        8F        16
读I0.5        01        00        01        00         00        81        00        00        05        68        16
读I0.7        01        00        01        00        00        81        00        00        07        6A        16
上表读命令的Byte22-32从表中我们可以得出以下结果:
Byte 22 读取数据的长度
01:1 Bit 02:1 Byte
04:1 Word 06:Double Word
Byte 24数据个数,这里是01 ,一次读多个数据时见下面的说明。
Byte 26 存储器类型,01:V存储器 00:其它
Byte 27 存储器类型
04:S 05:SM 06:AI 07:AQ 1E: C
81:I 82:Q 83:M 84:V 1F: T
Byte 28,29,30存储器偏移量指针(存储器地址*8),如:VB100,存储器地址为100,偏移量指针为800,转换成16进制就是320H,则Byte 28—29这三个字节就是:00 03 20。
Byte 31 校验和,前面已说到这是从(DA+SA+DSAP+SSAP+DU) Mod 256 。
一次读多条数据
对于一次读多个数据的情况,前21Byte与上面相似只是长度LD,LDr及Byte 14不同:
Byte 14 数据块占位字节,它指明数据块占用的字节数。与数据块数量有关,长度=4+数据块数*10,如:一条数据时为4+10=0E(H);同时读M,V,Q三个不同的数据块时为4+3*10=22(H)。
Byte 22 总是02 即以Byte为单位。
Byte 24 以字节为单位,连续读取的字节数。如读2个VD则Byte24=8
Byte 19---30 按上述一次读一个数据的格式依次列出,
Byte 31---42 另一类型的数据,也是按上述格式给出。
以此类推,一次最多读取222个字节的数据。
写命令分析:
一次写一个Double Word类型的数据,写命令是40个字节,其余为38个字节。写一个Double Word类型的数据,前面的0—21字节为 :
0        1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19        20        21
                                                                                                                                                                       
开始符        长度        长度        开始符                                                                                                                                               
68        21        21        68        02        00        7C        32        01        00         00        00        00        00        0E        00        00        04        01        12        0A        10
68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
写一个其它类型的数据,前面的0—21字节为 :(与上面比较,只是长度字节发生变化)
68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
22        23        24        25        26        27        28        29        30        31        32        33        34        35        36        37
                                                                                                                       
数据长度        数据个数        存储类型        偏移量        数据形式        数据位数        写入值        校验码        终止符
01        00        01        00        00        82        00        00        00        00        03        00        01        01        79        16
从22字节开始根据写入数据的值和位置不同而变化。上表是几个写命令的Byte22—40。
字 节 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
写入位置及值长度 个数 类型 偏移量 位数 值、校验码、 结束符
M0.0=1 01 00 01 00 00 82 00 00 00 00 03 00 01 01 00 71 16
M0.0=0 01 00 01 00 00 83 00 00 00 00 03 00 01 00 00 70 16
M0.1=1 01 00 01 00 00 83 00 00 01 00 03 00 01 01 00 72 16
vb100=10 02 00 01 00 01 84 00 03 20 00 04 00 08 10 00 AE 16
vb100=FF 02 00 01 00 01 84 00 03 20 00 04 00 08 FF 00 9D 16
VW100=FFFF 04 00 01 00 01 84 00 03 20 00 04 00 10 FF FF A6 16
VD100=FFFFFFFF 06 00 01 00 01 84 00 03 20 00 04 00 20 FF FF FF FF B8 1
写命令的Byte22—最后, 经分析我们可以得出以下结果:
Byte 22-- Byte 30 写入数据的长度、存储器类型、存储器偏移量与读命令相同。T,C等不能用写命令写入。
Byte 32 如果写入的是位数据这一字节为03,其它则为04
Byte 34 写入数据的位数
01: 1 Bit 08: 1 Byte 10H: 1 Word 20H: 1 Double Word
Byte 35--40值、校验码、结束符
如果写入的是位、字节数据,Byte35就是写入的值,Byte36=00,Byte37=检验码,Byte38=16H,结束。如果写个的是字数据(双字节),Byte35,Byte36就是写入的值, Byte37=检验码,Byte38=16H,结束。如果写个的是双字数据(四字节),Byte35—38就是写入的值, Byte39=检验码,Byte40=16H,结束。

看完上面的指令分析我们现在就举例几个常用的PPI协议来分析一下:
PC寻呼:10 02 00 49 4B 16
PLC返回:10 00 02 02 04 16
PC发送:10 02 00 5C 5E 16
PLC返回: E5
我们先来看看西门子S7-200PLC的读取密码指令:
请用串口软件以16进制发送,端口设置9600;e;8;1
发送:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16 意思:要求传送(03区)系统存储区05E0位开始的8个字符(这就是8个密码数值)。
如果通讯无误,PLC会返回 E5,意思:已经收到
那么这时上位机再次发送确认执行指令 10 02 00 5C 5E 16 意思:请执行命令。(说到这里打住一下,PLC返回E5指令后上位机PC要在很短的时间内发送确认指令,晚了刚才的指令就无效了具体多长时间我也没测准,反正1、2秒时间是没有问题的。这也是很多网友问我通讯失败的原因所在)那么这时PLC还就真的乖乖的执行命令,返回如下字符:68 1D 1D 68 00 02 08 32 03 00 00 00 00 00 02 00 0C 00 00 04 01 FF 04 00 40 9B 98 02 06 9D 9A 00 76 7D 16
好了,说到这里就此停止,大家看看密码是多少啊!你如果真正明白了PPI协议就不难找出出密码了,但是这个密码是经过二次加密的,并不是真正的密码,还需要破译,至于密码算法在此不便公开,不过你多做实验一定能得出结果的。
下面再看一个读取PLC版本号的指令:
我们在解密中首先要确定的是PLC的版本号。就是要看看是老版本还是02版的,也好做出加解密方案。他的通讯源码是这样的:
68 1B 1B 68 02 00 7C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 14 00 00 03 00 00 00 09 16
发送完上面数据PLC返回E5.
再次发送确认指令:10 02 00 5C 5E 16
这时plc的版本号就返回来了。看下面:
68 29 29 68 00 02 08 32 03 00 00 00 00 00 02 00 18 00 00 04 01 FF 04 00 A0 43 50 55 20 32 32 36 20 43 4E 20 20 20 20 20 20 30 32 30 31 D7 16
你看这一段:43 50 55 20 32 32 36 20 43 4E 20 20 20 20 20 20 30 32 30 31 就是plc版本号的ASCII码。用ASC方式显示就会看的更明白上面数据是:C P U SP 2 2 6 SP C N 0 2 0 1 (sp就是空格)0201是版本号。
再一个就是读TD200密码指令:
68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 02 00 01 84 00 00 50 B9 16 (VW10)
写M0指令:
68 20 20 68 02 00 7C 32 01 00 00 00 00 00 0E 00 05 05 01 12 0A 10 01 00 01 00 00 83 00 00 00 00 03 00 01 01 80 16
读222位3区(系统区)数据指令:
68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 DE 00 00 03 00 00 00 C3 16
读取密码保护位指令:
68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 01 00 00 03 00 05 D8 C3 16
改写密码保护位指令:( 你来验证是否可行)
68 20 20 68 02 00 7C 32 01 00 00 00 00 00 0E 00 05 05 01 12 0A 10 08 00 01 00 00 03 00 05 D8 00 04 00 08 04 EF 16
68 20 20 68 02 00 7C 32 01 00 00 00 00 00 0E 00 05 05 01 12 0A 10 02 00 01 00 00 03 00 05 D8 00 03 00 08 04 E8 16
全部清除指令:
68 21 21 68 02 00 7C 32 07 00 00 00 24 00 08 00 0C 00 01 12 04 11 45 01 00 FF 09 00 08 16 19 06 0D 01 08 18 1E EE 16
最后再说一点,通讯中还有关于读取某一块的块代码:08 代表程序块 ;0A代表数据块; 0B代表系统块

csca1 发表于 2012-11-24 08:23:07

anxiangbo 发表于 2012-11-24 08:19 static/image/common/back.gif
楼主在分析PPI协议吗?下载,监控都用这个协议,感觉搞懂这个就有点好向下面进行。 ...

当然,PPI是最重要也是最难的一步。

csca1 发表于 2012-11-24 08:24:16

anxiangbo 发表于 2012-11-24 08:22 static/image/common/back.gif
来点用价值的资料::




这个我早有了,谢谢。

anxiangbo 发表于 2012-11-24 08:27:17

楼主你用那个串口监控软件?

csca1 发表于 2012-11-24 08:46:07

anxiangbo 发表于 2012-11-24 08:27 static/image/common/back.gif
楼主你用那个串口监控软件?

CommMonitor串口监控工具

heky 发表于 2012-11-24 11:09:34

基本搞定了,和楼主共勉,属于第n梯队都不要紧,做工控是简单,实用为主。
我们做电工的,模仿是第一要素。

csca1 发表于 2012-11-24 11:25:59

heky 发表于 2012-11-24 11:09 static/image/common/back.gif
基本搞定了,和楼主共勉,属于第n梯队都不要紧,做工控是简单,实用为主。
我们做电工的,模仿是第一要素。 ...

厉害。。。呵呵,我要加油了。。。

heky 发表于 2012-11-24 11:31:57

不急的,找个原装PLC进行数据比对,就是主要进行数据模仿,我也有一半多的指令还猜不出具体意义。CommMonitor是必须的,我也是用这个捕数据。

csca1 发表于 2012-11-24 11:39:11

heky 发表于 2012-11-24 11:31 static/image/common/back.gif
不急的,找个原装PLC进行数据比对,就是主要进行数据模仿,我也有一半多的指令还猜不出具体意义。CommMonit ...

你的硬件啥样?是不是用CPU224的外壳?可否拍张照片看看?

heky 发表于 2012-11-24 11:46:10

本帖最后由 heky 于 2012-11-24 11:51 编辑

一个项目开发板,自己做的,224外壳的有一款,帮其他公司做的,等做的差不多肯定要移植到上面去的。
西门子,三菱,随便用户自己选吧,最重要就是兼容。

liming 发表于 2012-11-24 11:48:29

heky做得不错,是否能讲一下思路

heky 发表于 2012-11-24 11:54:33

没啥好办法,对着原装PLC,做到响应和原装PLC一模一样,花了2周时间。

anxiangbo 发表于 2012-11-24 13:17:48

没啥好办法,对着原装PLC,做到响应和原装PLC一模一样,花了2周时间。

不知是否分析出各个数据内容,作用等?

chenboss 发表于 2012-11-30 14:17:21

强烈支持,楼主威武,刚开始研究,学习了……

chaojikoushuige 发表于 2012-11-30 21:41:46

又遇到大神了啊

aihe 发表于 2012-11-30 22:29:13

应该向中高端PLC开刀

liming 发表于 2012-11-30 22:50:26

此贴要顶,有玩过这方面的可以提供一下经验

YOU1 发表于 2012-12-2 19:05:08

支持顶起

shh6899 发表于 2012-12-2 21:52:03

支持楼主。

wuyiduan 发表于 2012-12-4 10:57:38

这个要支持

wuyiduan 发表于 2012-12-5 10:55:51

请问分板怎么分?

IO板是通过3.3V信号和CPU板相连,那这个信号会不会太长了点?
电源板是输出 24V 5V 3.3V?
如果模拟量是用CPU的AD和DA做,供电是24V那么是不是也要分一个板子还是放IO板上?

huangqi412 发表于 2012-12-5 11:23:40

赶上连载贴

csca1 发表于 2012-12-5 15:33:15

wuyiduan 发表于 2012-12-5 10:55 static/image/common/back.gif
请问分板怎么分?

IO板是通过3.3V信号和CPU板相连,那这个信号会不会太长了点?


IO板上5V接到CPU板上,CPU板上再用3.3V稳压IC稳压后供给MCU。
电源板是输出 24V 5V
CPU板上有两个模拟量输入,用3.3V

dory_m 发表于 2012-12-5 15:39:44

路过,跟踪二下,,,,

wuyiduan 发表于 2012-12-5 16:18:38

csca1 发表于 2012-12-5 15:33 static/image/common/back.gif
IO板上5V接到CPU板上,CPU板上再用3.3V稳压IC稳压后供给MCU。
电源板是输出 24V 5V
CPU板上有两个模拟量 ...

我的系统打算这样分,你帮忙看看有没有什么隐患

最底下电源板:输入普通开关电源DC24V ,输出滤波后的DC24V,5V。

中间IO板:IO板 24V 信号 。光耦的另一边3.3V的信号从CPU板通过排针引入。模拟量的运放因为是24V供电,所以也放在IO板。

CPU板:5V输入, 板上一个线性稳压3.3V供电,整个CPU板只存在3.3V数字量、IO板送过来的0~3.3V的模拟量、送给IO板的0~3.3V模拟量,没有其他高电压流过





现在的疑问是:1. 模拟量放在IO板上,模拟信号通过排针再给CPU板,会不会IO动作受影响                     
                     2. CPU控制信号也是通过排针连接到IO板的光耦,这么长的距离做100K以上频率的PWM控制步进电机会不会有问题?

zhu_zhihao 发表于 2012-12-5 16:45:35

csca1 发表于 2012-10-20 15:47 static/image/common/back.gif
编程软件,大部分采用三菱的,少数几家采用西门子,而自主开发编程软件的都太监了。。。

原因很 ...

西门子s7-200是解释型的,但是是自己的规范,

csca1 发表于 2012-12-5 16:49:58

wuyiduan 发表于 2012-12-5 16:18 static/image/common/back.gif
我的系统打算这样分,你帮忙看看有没有什么隐患

最底下电源板:输入普通开关电源DC24V ,输出滤波后的DC ...

1、模拟量还是放CPU板,反正是模拟量输入到MCU,没有模拟量输出的。
2、没问题,西门子也是这样做的。MCU的输出输入IO都通过排阵与IO板连接。

csca1 发表于 2012-12-5 16:53:53

zhu_zhihao 发表于 2012-12-5 16:45 static/image/common/back.gif
西门子s7-200是解释型的,但是是自己的规范,

嗯,西门子编程软件把梯形图语句表这样的1级代码转成2级代码发送到下位机里保存起来,运行前,PLC把2级代码转成可执行的3级代码再运行的。

zhu_zhihao 发表于 2012-12-5 16:55:55

掉电检测电路不对的,这样的电路,检测到掉电了,系统一没有足够的电流来把系统参数写到IIC中。
做这样的项目前好好做硬件及软件规划。
这个仿的产品的难点
1) PLC 功能模块,
2) PPI 协议,
3) 与TD400C的协议。
4) 背板总线协议,有一套机制。
5) 可靠的软件架构。

硬件上有 很多考量的地方,其产品在现场应用有诟病的是其RS485及电源。
一般西门子要求保护是用户在控制柜外加的。

做这个勇气可嘉。

我曾经看到老外拿着一个仿的S7-200, CPU 224

zhu_zhihao 发表于 2012-12-5 17:00:24

csca1 发表于 2012-12-5 16:53 static/image/common/back.gif
嗯,西门子编程软件把梯形图语句表这样的1级代码转成2级代码发送到下位机里保存起来,运行前,PLC把2级代 ...

程序保存在24C64里,PC下发代码是初步处理的,计算过解释模块的顺序了的,这样一个一个算下来,中间值就可以用,
不然PLC自己算解释顺序太慢了,尤其有上千个模块时。

csca1 发表于 2012-12-5 17:06:06

zhu_zhihao 发表于 2012-12-5 16:55 static/image/common/back.gif
掉电检测电路不对的,这样的电路,检测到掉电了,系统一没有足够的电流来把系统参数写到IIC中。
做这样的项 ...

嗯,我打算用隔离型的485芯片,硬件上也是一改再改才能用,呵呵。

另外,程序存在MCU的FLASH里就可以了,不用另外的24C256

zhu_zhihao 发表于 2012-12-5 17:17:54

csca1 发表于 2012-12-5 17:06 static/image/common/back.gif
嗯,我打算用隔离型的485芯片,硬件上也是一改再改才能用,呵呵。

另外,程序存在MCU的FLASH里就可以了 ...

内部FLASH 多次写还是会有问题的, 放在外部维修好换啊。维修方便些。
还有选择的MCU内部RAM要大,做PLC功能块的缓冲,这样程序才快。
程序放在掉电保存额内部注意校验。

csca1 发表于 2012-12-5 17:25:35

zhu_zhihao 发表于 2012-12-5 17:17 static/image/common/back.gif
内部FLASH 多次写还是会有问题的, 放在外部维修好换啊。维修方便些。
还有选择的MCU内部RAM要大,做PLC ...

谢谢,1万次够了。除了学习教学用的,下载程序次数比较多,正式用在工程上的PLC,连调试在内,不超过100次就把程序调试搞好了。
RAM是32K本地,两个16K外设,也足够。

zhu_zhihao 发表于 2012-12-5 17:34:09

32K危险的,一个功能块32个字节以上的。不能比1千个功能块多了。
你看s700, RAM是外加的。
它51的MCU ,其实是跑了40M 的哈弗结构。

csca1 发表于 2012-12-5 18:00:25

zhu_zhihao 发表于 2012-12-5 17:34 static/image/common/back.gif
32K危险的,一个功能块32个字节以上的。不能比1千个功能块多了。
你看s700, RAM是外加的。
它51的MCU ,其实 ...

我是根据力德仿西门子PLC选LPC2138FBD64,所以选的LPC1758,RAM都是32K,FLASH都是512。

gpfrank 发表于 2012-12-15 15:58:56

西门子不是最近推S7200-SMART了吗

xlian541426 发表于 2012-12-16 17:15:43

楼主研究到什么程度了,最近没事分析了下S7 200的指令编码、程序块、数据块、系统块结构、系统密码、子程序密码;正在分析程序加密算法。

jungleyang 发表于 2013-1-11 23:53:12

好东西,顶起来时必须的

ideality0214 发表于 2013-1-12 00:21:43

好贴,说的很详细

lionlion 发表于 2013-3-11 22:09:01

支持!一直在关注国产PLC的研究工作!

x8429899 发表于 2013-3-13 20:50:42

好啊,顶

aresg 发表于 2013-4-17 00:49:20

强烈支持楼主加快进度!!!!

zhu118 发表于 2013-6-23 16:12:31


楼主好决心,顶一下!

ljt80158015 发表于 2013-6-23 16:14:56

硬件简单,关键是软件!

ljt80158015 发表于 2013-6-23 16:18:32

csca1 发表于 2012-12-5 18:00 static/image/common/back.gif
我是根据力德仿西门子PLC选LPC2138FBD64,所以选的LPC1758,RAM都是32K,FLASH都是512。 ...

力德的价格比西门子也便宜不了很多啊!

jianhua5ok 发表于 2013-6-29 01:45:02

MARK 支持楼主。做这个事需要有相当滴恒心呢。

songjzhong 发表于 2013-7-9 01:14:33

西门子220V晶闸管输出用的什么晶闸管和驱动IC,还有那个型号的光耦!

songjzhong 发表于 2013-7-20 14:00:13

PC814可以直接代替PC3H3的,参数很接近的。

wtliu 发表于 2013-11-27 21:56:24

楼主的PLC进展如何,我在期待。
另外可不可以把电路板的排版尺寸(包括安装孔位、DB9、外接口等)的布局给我发一份。多谢!

goldrained 发表于 2013-11-28 00:48:24

顶一下,不知用什么CPU
页: 1 [2] 3
查看完整版本: 孤军奋战自制仿西门子PLC进行中。。。