M525 stopped working
-
The command was run while serial communication timeouts, but output is the same after a PLC restart.
-
This post is deleted! -
@pascal37 Can you try increasing the Max telegram duration a bit higher? For example 300ms? If that won't help. You can also try to increase the pause between telegrams to 5ms.
-
Hi @tomas_hora,
I have increased Max telegram duration to 300ms + added a 5ms pause between telegrams.
I have also update my M525 to latest Axon runtime (2.3.0.8) with latest firmwares/drivers.
I will let you know if issue occurs again.
Many thanks and kind regards. -
Hi @tomas_hora, issue occured again again with port 1.1 and new settings (Max telegram duration to 300ms + added a 5ms pause between telegrams.)
A simple PLC reboot (from Debian OS) was enough to regain data acquisition from the 3 Inepro PRO380 meters.I do not understand why problem never occured when using port 1.3 of same PLC, nor with my previous M505.
What is the difference between ports 1.1 and 1.3 ?
If same hardware, could it be a hardware issue with port 1.1 on my M525?22:13:08.5230 => Send: 03 03 60 00 00 02 DB E9 22:13:08.5530 <= Recv: CA CB 22:13:08.5530 Timeout 22:13:08.5630 => Send: 03 03 60 00 00 02 DB E9 22:13:08.5930 <= Recv: CA CB 22:13:08.5930 Timeout 22:13:08.6230 => Send: 01 03 50 02 00 06 75 08 22:13:08.6530 <= Recv: CA CB 22:13:08.6530 Timeout 22:13:08.6630 => Send: 01 03 50 02 00 06 75 08 22:13:08.6630 <= Recv: 43 71 CC CD 43 22:13:08.7040 <= Recv: 72 E6 66 22:13:08.7040 Wrong telegram: ??? 22:13:08.7140 => Send: 01 03 50 02 00 06 75 08 22:13:09.0140 Timeout 22:13:09.0390 => Send: 01 03 50 12 00 02 75 0E 22:13:09.0390 <= Recv: 43 71 CC CD 43 22:13:09.0390 <= Recv: 72 E6 66 52 22:13:09.0390 Wrong telegram: ??? 22:13:09.0490 => Send: 01 03 50 12 00 02 75 0E 22:13:09.3490 Timeout 22:13:09.3590 => Send: 01 03 50 12 00 02 75 0E 22:13:09.3890 <= Recv: 4B E3 22:13:09.3890 Timeout 22:13:09.4140 => Send: 01 03 60 0C 00 02 1A 08 22:13:09.4440 <= Recv: EC 4B E3 22:13:09.4440 Timeout 22:13:09.4540 => Send: 01 03 60 0C 00 02 1A 08 22:13:09.4840 <= Recv: CC D8 22:13:09.4840 Timeout 22:13:09.4940 => Send: 01 03 60 0C 00 02 1A 08 22:13:09.5240 <= Recv: CC D8 22:13:09.5240 Timeout 22:13:09.5490 => Send: 01 03 60 18 00 02 5A 0C 22:13:09.5790 <= Recv: CC D8 22:13:09.5790 Timeout 22:13:09.5890 => Send: 01 03 60 18 00 02 5A 0C 22:13:09.6190 <= Recv: 72 00 22:13:09.6190 Timeout 22:13:09.6290 => Send: 01 03 60 18 00 02 5A 0C 22:13:09.6590 <= Recv: 72 00 22:13:09.6590 Timeout 22:13:09.6840 => Send: 02 03 50 12 00 02 75 3D 22:13:09.7140 <= Recv: 72 00 22:13:09.7140 Timeout 22:13:09.7240 => Send: 02 03 50 12 00 02 75 3D 22:13:09.7540 <= Recv: 46 88 22:13:09.7540 Timeout 22:13:09.7640 => Send: 02 03 50 12 00 02 75 3D 22:13:09.7940 <= Recv: 46 88 22:13:09.7940 Timeout 22:13:09.8190 => Send: 02 03 60 00 00 02 DA 38 22:13:09.8490 <= Recv: 46 88 22:13:09.8490 Timeout 22:13:09.8590 => Send: 02 03 60 00 00 02 DA 38 22:13:09.8890 <= Recv: 85 9B 22:13:09.8890 Timeout 22:13:09.8990 => Send: 02 03 60 00 00 02 DA 38 22:13:09.9290 <= Recv: 85 9B 22:13:09.9290 Timeout 22:13:09.9540 => Send: 03 03 50 12 00 02 74 EC 22:13:09.9840 <= Recv: 85 9B 22:13:09.9840 Timeout 22:13:09.9940 => Send: 03 03 50 12 00 02 74 EC 22:13:10.0240 <= Recv: 68 5B 22:13:10.0240 Timeout 22:13:10.0340 => Send: 03 03 50 12 00 02 74 EC 22:13:10.0640 <= Recv: 68 5B 22:13:10.0640 Timeout 22:13:10.0890 => Send: 03 03 60 00 00 02 DB E9 22:13:10.1190 <= Recv: 68 5B 22:13:10.1190 Timeout 22:13:10.1290 => Send: 03 03 60 00 00 02 DB E9 22:13:10.1700 <= Recv: 04 22:13:10.1700 Timeout 22:13:10.1800 => Send: 03 03 60 00 00 02 DB E9 22:13:10.4800 Timeout 22:13:10.5100 => Send: 01 03 50 02 00 06 75 08 22:13:10.5623 <= Recv: CA CB 22:13:10.5623 Timeout 22:13:10.5723 => Send: 01 03 50 02 00 06 75 08 22:13:10.5723 <= Recv: 43 71 CC CD 43 22:13:10.6133 <= Recv: 72 E6 66 52 22:13:10.6133 Wrong telegram: ??? 22:13:10.6233 => Send: 01 03 50 02 00 06 75 08 22:13:10.9233 Timeout 22:13:10.9483 => Send: 01 03 50 12 00 02 75 0E 22:13:10.9483 <= Recv: 43 71 CC CD 43 22:13:10.9483 <= Recv: 72 E6 66 52 22:13:10.9483 Wrong telegram: ??? 22:13:10.9583 => Send: 01 03 50 12 00 02 75 0E 22:13:11.2583 Timeout 22:13:11.2683 => Send: 01 03 50 12 00 02 75 0E 22:13:11.2993 <= Recv: 4B E3 22:13:11.2993 Timeout 22:13:11.3243 => Send: 01 03 60 0C 00 02 1A 08 22:13:11.3543 <= Recv: 4B E3 22:13:11.3543 Timeout 22:13:11.3643 => Send: 01 03 60 0C 00 02 1A 08 22:13:11.3943 <= Recv: CC D8 22:13:11.3943 Timeout 22:13:11.4043 => Send: 01 03 60 0C 00 02 1A 08 22:13:11.4343 <= Recv: CC D8 22:13:11.4343 Timeout 22:13:11.4593 => Send: 01 03 60 18 00 02 5A 0C 22:13:11.4893 <= Recv: CC D8 22:13:11.4893 Timeout 22:13:11.4993 => Send: 01 03 60 18 00 02 5A 0C 22:13:11.5293 <= Recv: 72 00 22:13:11.5293 Timeout 22:13:11.5393 => Send: 01 03 60 18 00 02 5A 0C 22:13:11.5693 <= Recv: E1 72 00 22:13:11.5693 Timeout 22:13:11.5943 => Send: 02 03 50 12 00 02 75 3D 22:13:11.6243 <= Recv: 72 00 22:13:11.6243 Timeout 22:13:11.6343 => Send: 02 03 50 12 00 02 75 3D 22:13:11.6643 <= Recv: 46 88 22:13:11.6643 Timeout 22:13:11.6743 => Send: 02 03 50 12 00 02 75 3D 22:13:11.7043 <= Recv: 46 88 22:13:11.7043 Timeout 22:13:11.7293 => Send: 02 03 60 00 00 02 DA 38 22:13:11.7593 <= Recv: 46 88 22:13:11.7593 Timeout 22:13:11.7693 => Send: 02 03 60 00 00 02 DA 38 22:13:11.7993 <= Recv: 85 9B 22:13:11.7993 Timeout 22:13:11.8093 => Send: 02 03 60 00 00 02 DA 38 22:13:11.8393 <= Recv: 85 9B 22:13:11.8393 Timeout 22:13:11.8643 => Send: 03 03 50 12 00 02 74 EC 22:13:11.8943 <= Recv: 85 9B 22:13:11.8943 Timeout 22:13:11.9043 => Send: 03 03 50 12 00 02 74 EC 22:13:11.9343 <= Recv: 68 5B 22:13:11.9343 Timeout 22:13:11.9443 => Send: 03 03 50 12 00 02 74 EC 22:13:11.9743 <= Recv: 68 5B 22:13:11.9743 Timeout 22:13:11.9993 => Send: 03 03 60 00 00 02 DB E9 22:13:12.0293 <= Recv: 68 5B 22:13:12.0293 Timeout 22:13:12.0393 => Send: 03 03 60 00 00 02 DB E9 22:13:12.0693 <= Recv: CA CB 22:13:12.0693 Timeout 22:13:12.0793 => Send: 03 03 60 00 00 02 DB E9 22:13:12.1093 <= Recv: CA CB 22:13:12.1093 Timeout 22:13:12.1393 => Send: 01 03 50 02 00 06 75 08 22:13:12.1693 <= Recv: CA CB 22:13:12.1693 Timeout 22:13:12.1793 => Send: 01 03 50 02 00 06 75 08 22:13:12.1793 <= Recv: 43 71 B3 33 43 22:13:12.2193 <= Recv: 72 E6 66 70 22:13:12.2193 Wrong telegram: ??? 22:13:12.2293 => Send: 01 03 50 02 00 06 75 08 22:13:12.5293 Timeout 22:13:12.5543 => Send: 01 03 50 12 00 02 75 0E 22:13:12.5543 <= Recv: 43 71 B3 33 43 22:13:12.5543 <= Recv: 72 E6 66 70 22:13:12.5543 Wrong telegram: ??? 22:13:12.5643 => Send: 01 03 50 12 00 02 75 0E 22:13:12.8643 Timeout 22:13:12.8743 => Send: 01 03 50 12 00 02 75 0E 22:13:12.9043 <= Recv: 4B E3 22:13:12.9043 Timeout 22:13:12.9293 => Send: 01 03 60 0C 00 02 1A 08 22:13:12.9593 <= Recv: 4B E3 22:13:12.9593 Timeout 22:13:12.9693 => Send: 01 03 60 0C 00 02 1A 08 22:13:12.9993 <= Recv: CC D8 22:13:12.9993 Timeout 22:13:13.0093 => Send: 01 03 60 0C 00 02 1A 08 22:13:13.0393 <= Recv: CC D8 22:13:13.0393 Timeout 22:13:13.0643 => Send: 01 03 60 18 00 02 5A 0C 22:13:13.0943 <= Recv: CC D8 22:13:13.0943 Timeout 22:13:13.1043 => Send: 01 03 60 18 00 02 5A 0C 22:13:13.1557 <= Recv: 72 00 22:13:13.1557 Timeout 22:13:13.1657 => Send: 01 03 60 18 00 02 5A 0C 22:13:13.1957 <= Recv: 72 00 22:13:13.1957 Timeout 22:13:13.2207 => Send: 02 03 50 12 00 02 75 3D 22:13:13.2507 <= Recv: 72 00 22:13:13.2507 Timeout 22:13:13.2607 => Send: 02 03 50 12 00 02 75 3D 22:13:13.2907 <= Recv: 46 88 22:13:13.2907 Timeout 22:13:13.3007 => Send: 02 03 50 12 00 02 75 3D 22:13:13.3307 <= Recv: 46 88 22:13:13.3307 Timeout 22:13:13.3557 => Send: 02 03 60 00 00 02 DA 38 22:13:13.3857 <= Recv: 46 88 22:13:13.3857 Timeout 22:13:13.3957 => Send: 02 03 60 00 00 02 DA 38 22:13:13.4257 <= Recv: 85 9B 22:13:13.4257 Timeout 22:13:13.4357 => Send: 02 03 60 00 00 02 DA 38 22:13:13.4657 <= Recv: 85 9B 22:13:13.4657 Timeout 22:13:13.4907 => Send: 03 03 50 12 00 02 74 EC 22:13:13.5207 <= Recv: 85 9B 22:13:13.5207 Timeout 22:13:13.5307 => Send: 03 03 50 12 00 02 74 EC 22:13:13.5607 <= Recv: 68 5B 22:13:13.5607 Timeout 22:13:13.5707 => Send: 03 03 50 12 00 02 74 EC 22:13:13.6007 <= Recv: 68 5B 22:13:13.6007 Timeout 22:13:13.6257 => Send: 03 03 60 00 00 02 DB E9 22:13:13.6557 <= Recv: 68 5B 22:13:13.6557 Timeout 22:13:13.6657 => Send: 03 03 60 00 00 02 DB E9 22:13:13.6957 <= Recv: CA CB 22:13:13.6957 Timeout 22:13:13.7057 => Send: 03 03 60 00 00 02 DB E9 22:13:13.7357 <= Recv: 0A CA CB 22:13:13.7357 Timeout 22:13:13.7657 => Send: 01 03 50 02 00 06 75 08 22:13:13.7957 <= Recv: CA CB 22:13:13.7957 Timeout 22:13:13.8057 => Send: 01 03 50 02 00 06 75 08 22:13:13.8057 <= Recv: 43 71 CC CD 43 22:13:13.8447 <= Recv: 72 CC CD BF 07 22:13:13.8447 Wrong telegram: ??? 22:13:13.8547 => Send: 01 03 50 02 00 06 75 08 22:13:13.8547 <= Recv: 43 71 CC CD 43 22:13:13.8847 <= Recv: 72 CC CD BF 07 22:13:13.8847 Wrong telegram: ??? 22:13:13.9097 => Send: 01 03 50 12 00 02 75 0E 22:13:13.9097 <= Recv: 43 71 CC CD 43 22:13:13.9097 <= Recv: 72 CC CD BF 22:13:13.9097 Wrong telegram: ??? 22:13:13.9197 => Send: 01 03 50 12 00 02 75 0E 22:13:14.2197 Timeout 22:13:14.2297 => Send: 01 03 50 12 00 02 75 0E 22:13:14.2597 <= Recv: 4B E3 22:13:14.2597 Timeout 22:13:14.2847 => Send: 01 03 60 0C 00 02 1A 08 22:13:14.3147 <= Recv: 4B E3 22:13:14.3147 Timeout 22:13:14.3247 => Send: 01 03 60 0C 00 02 1A 08 22:13:14.3547 <= Recv: CC D8 22:13:14.3547 Timeout 22:13:14.3647 => Send: 01 03 60 0C 00 02 1A 08 22:13:14.3947 <= Recv: CC D8 22:13:14.3947 Timeout 22:13:14.4197 => Send: 01 03 60 18 00 02 5A 0C 22:13:14.4497 <= Recv: CC D8 22:13:14.4497 Timeout 22:13:14.4597 => Send: 01 03 60 18 00 02 5A 0C 22:13:14.4897 <= Recv: 72 00 22:13:14.4897 Timeout 22:13:14.4997 => Send: 01 03 60 18 00 02 5A 0C 22:13:14.5297 <= Recv: 72 00 22:13:14.5297 Timeout 22:13:14.5547 => Send: 02 03 50 12 00 02 75 3D 22:13:14.5847 <= Recv: 72 00 22:13:14.5847 Timeout 22:13:14.5947 => Send: 02 03 50 12 00 02 75 3D 22:13:14.6247 <= Recv: 46 88 22:13:14.6247 Timeout 22:13:14.6347 => Send: 02 03 50 12 00 02 75 3D 22:13:14.6647 <= Recv: 46 88 22:13:14.6647 Timeout 22:13:14.6897 => Send: 02 03 60 00 00 02 DA 38 22:13:14.7197 <= Recv: 46 88 22:13:14.7197 Timeout 22:13:14.7297 => Send: 02 03 60 00 00 02 DA 38 22:13:14.7597 <= Recv: 85 9B 22:13:14.7597 Timeout 22:13:14.7697 => Send: 02 03 60 00 00 02 DA 38 22:13:14.7997 <= Recv: 85 9B 22:13:14.7997 Timeout 22:13:14.8247 => Send: 03 03 50 12 00 02 74 EC 22:13:14.8547 <= Recv: 85 9B 22:13:14.8547 Timeout 22:13:14.8647 => Send: 03 03 50 12 00 02 74 EC 22:13:14.8947 <= Recv: 68 5B 22:13:14.9166 Timeout 22:13:14.9266 => Send: 03 03 50 12 00 02 74 EC 22:13:14.9566 <= Recv: 68 5B 22:13:14.9566 Timeout 22:13:14.9816 => Send: 03 03 60 00 00 02 DB E9 22:13:15.0116 <= Recv: 68 5B 22:13:15.0116 Timeout 22:13:15.0216 => Send: 03 03 60 00 00 02 DB E9 22:13:15.0516 <= Recv: CA CB 22:13:15.0516 Timeout 22:13:15.0616 => Send: 03 03 60 00 00 02 DB E9 22:13:15.0916 <= Recv: CA CB 22:13:15.0916 Timeout 22:13:15.1216 => Send: 01 03 50 02 00 06 75 08 22:13:15.1516 <= Recv: CA CB 22:13:15.1516 Timeout 22:13:15.1616 => Send: 01 03 50 02 00 06 75 08 22:13:15.1616 <= Recv: 43 71 B3 33 43 22:13:15.2016 <= Recv: 72 E6 66 C3 C3 22:13:15.2016 Wrong telegram: ??? 22:13:15.2116 => Send: 01 03 50 02 00 06 75 08 22:13:15.2116 <= Recv: 43 71 B3 33 43 22:13:15.2416 <= Recv: 72 E6 66 C3 C3 22:13:15.2416 Wrong telegram: ??? 22:13:15.2666 => Send: 01 03 50 12 00 02 75 0E 22:13:15.2666 <= Recv: 43 71 B3 33 43 22:13:15.2666 <= Recv: 72 E6 66 C3 22:13:15.2666 Wrong telegram: ??? 22:13:15.2766 => Send: 01 03 50 12 00 02 75 0E 22:13:15.5766 Timeout 22:13:15.5866 => Send: 01 03 50 12 00 02 75 0E 22:13:15.6166 <= Recv: 4B E3 22:13:15.6166 Timeout 22:13:15.6416 => Send: 01 03 60 0C 00 02 1A 08 22:13:15.6716 <= Recv: 4B E3 22:13:15.6716 Timeout 22:13:15.6816 => Send: 01 03 60 0C 00 02 1A 08 22:13:15.7116 <= Recv: CC D8 22:13:15.7116 Timeout 22:13:15.7216 => Send: 01 03 60 0C 00 02 1A 08 22:13:15.7516 <= Recv: CC D8 22:13:15.7516 Timeout 22:13:15.7766 => Send: 01 03 60 18 00 02 5A 0C 22:13:15.8066 <= Recv: CC D8 22:13:15.8066 Timeout 22:13:15.8166 => Send: 01 03 60 18 00 02 5A 0C 22:13:15.8466 <= Recv: 72 00 22:13:15.8466 Timeout 22:13:15.8566 => Send: 01 03 60 18 00 02 5A 0C 22:13:15.8866 <= Recv: 72 00 22:13:15.8866 Timeout 22:13:15.9116 => Send: 02 03 50 12 00 02 75 3D 22:13:15.9416 <= Recv: 72 00 22:13:15.9416 Timeout 22:13:15.9516 => Send: 02 03 50 12 00 02 75 3D 22:13:15.9926 <= Recv: 04 22:13:15.9926 Timeout 22:13:16.0026 => Send: 02 03 50 12 00 02 75 3D 22:13:16.3026 Timeout 22:13:16.3276 => Send: 02 03 60 00 00 02 DA 38 22:13:16.3576 <= Recv: 46 88 22:13:16.3576 Timeout 22:13:16.3676 => Send: 02 03 60 00 00 02 DA 38 22:13:16.3976 <= Recv: 85 9B 22:13:16.3976 Timeout 22:13:16.4076 => Send: 02 03 60 00 00 02 DA 38 22:13:16.4376 <= Recv: 85 9B 22:13:16.4376 Timeout 22:13:16.4626 => Send: 03 03 50 12 00 02 74 EC 22:13:16.4926 <= Recv: 85 9B 22:13:16.4926 Timeout 22:13:16.5026 => Send: 03 03 50 12 00 02 74 EC 22:13:16.5326 <= Recv: 68 5B 22:13:16.5326 Timeout 22:13:16.5426 => Send: 03 03 50 12 00 02 74 EC 22:13:16.5726 <= Recv: 68 5B 22:13:16.5726 Timeout 22:13:16.5976 => Send: 03 03 60 00 00 02 DB E9 22:13:16.6276 <= Recv: 68 5B 22:13:16.6276 Timeout 22:13:16.6376 => Send: 03 03 60 00 00 02 DB E9 22:13:16.6676 <= Recv: CA CB 22:13:16.6676 Timeout 22:13:16.6776 => Send: 03 03 60 00 00 02 DB E9 22:13:16.7076 <= Recv: CA CB 22:13:16.7076 Timeout 22:13:16.7376 => Send: 01 03 50 02 00 06 75 08 22:13:16.7686 <= Recv: CA CB 22:13:16.7686 Timeout
-
Hello @pascal37,
thank you for the information sent. Unfortunately, based on it, we are not able to determine the exact source of the issue.
Can you please check the following:- Again, make sure you have the latest firmware in the I/O board flashed. Type:
/opt/unipi/tools/fwspi -i 0
-
Can you confirm that the i2c-0 error in the dmesg log appears always in the moment of communication goes wrong? It seems there is a correlation (863475 seconds is almost exactly 10 days).
-
Are you sure that no other running processes access the interface (/dev/ttyNS0)? Please check also your time-scheduled tasks (e.g. executed from cron).
-
Are you sure that no noise or interference from the environment or power supply can infiltrate the unit?
As the last resort, we are able to simulate your application with the same HW, but it will be pretty time-consuming. In the meantime, please use another RS485 interface.
-
Hi @martin_triska,
- I did a reflash (USB method) of my M525 with latest Mervis OS image (2.3.0.10), firmwares are already up-to-date:
unipi@M525-sn8:~$ sudo /opt/unipi/tools/fwspi -i 0 Boardset: 0 B-1000 (v1.0) Baseboard: 0 B-1000 (v2.0) Firmware: v5.50 unipi@M525-sn8:~$ sudo /opt/unipi/tools/fwspi -i 1 Boardset: 19 E-4Ai4Ao_U-R485Di4Ro5 (v1.0) Baseboard: 11 E-4Ai4Ao (v1.0) Firmware: v5.50
-
From what I've seen after serial communications "crashes", I did not see anymore an i2c-0 error in demsg, so I am not sure this is correlated.
-
Yes: it is a standard Mervis OS image + 2 pythons scripts running as daemons with pymodbus client over ModbusTCP, so no serial communications there.
-
Yes: I am using shielded cable specific for RS485, the bus is properly terminated at each end. Cable shield is properly grounded at PLC side and also to PLC itself. Environment is stable and, so long the issue is not occurring, communication is working perfectly.
With the increase of Max telegram duration to 300ms, there is absolutely no error during multiple days:
It seems most likely a driver or Mervis runtime issue related to M525 model and port 1.1 !?
As I said, I never had the issue when using port 1.3 instead of port 1.1
I have also another RS485 bus on port 2.1 and no issue either.
This issue also never occurred with port 1.1 on my previous M505 PLCIf you want to try reproduce the issue, you need 3 Inepro PRO380 meters and read constantly multiple values from them like power, energy, voltage.
In my case, the maximum uptime before a crash is about 10 days.I can use port 1.3 in the meantime, but I will need the 3rd RS485 port later for my project...
But let's check again if it is really stable with port 1.3 over >10 days !Many thanks in advance and kind regards
-
Hi @martin_triska,
I confirm the solution is stable over >50 days when using port 1.3 :
... but not with port 1.1, where serial communications crashes < 10 days !
If you did not find a software issue related to port RS485-1.1 on Axon M525, there should be a hardware issue with my PLC !I have bought this PLC because I need 3 RS485 ports, so using port 1.3 over 1.1 is not a solution...
Can you please replace this unit ?
Many thanks in advance and kind regards,Pascal
-
Hello @pascal37,
thank you for the feedback. So, let us sum it up:
- On ports other than 1.1, you've never seen the issue yet (tested over 50 days without reboot).
- On port 1.1, the issue appears always in a few (approx. 10) days.
- There is no correlation with any item in the system log (dmesg) recorded in the moment of failure.
- Flash to the latest version 5.50 has not solved it.
- An older PLC M505 does not have this problem (is the FW and image versions in it also the latest?)
If so, you are right - it seems to the issue is hardware-based and the unit has to be replaced.
-
Hi @martin_triska,
Yes, that sums up the situation well, so I'll write to support@unipi.technology for replacement request.
Many thanks,
Pascal